IPC网络摄像头媒体视屏流MI_VIF结构体

2024-03-23 10:04

本文主要是介绍IPC网络摄像头媒体视屏流MI_VIF结构体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 一个典型的IPC数据流
下图是一个典型的IPC数据流模型,流动过程如下:
1. 建立Vif->Vpe->Venc的绑定关系;
2. Sensor 将数据送入vif处理;
3. Vif 将处理后的数据写入Output Port申请的内存,送入下一级;
4. Vpe接收数据,分别送入Pass0(ISP/SCL0)、Pass1(LDC)、Pass2(SCL1)进行处理,将处理的数据写入Output Port申请的内存,送入下一级;
5. Venc接收数据,送入编码器进行编码处理,将编码后的数据写入RingPool内存区;
6. 用户调用Venc的接口取流,送入用户业务层App。

------------------------------

视频输入(VIF)实现启用视频输入设备、视频输入通道、绑定视频输入通道等功能。

==================================

视频输入(VIF)模块结构体如下:

MI_VIF_DevAttr_t结构体

MI_VIF_DevAttr_t定义视频输入设备的属性。

MI_VIF_DevAttr_t定义视频输入设备的属性。typedef struct MI_VIF_DevAttr_s
{MI_VIF_IntfMode_e eIntfMode;MI_VIF_WorkMode_e eWorkMode;MI_VIF_HDRType_e eHDRType;MI_VIF_ClkEdge_e eClkEdge;MI_VIF_DataYuvSeq_e eDataSeq;MI_VIF_BitOrder_e eBitOrder;/* adjust bit order layout */MI_VIF_SyncAttr_t stSyncAttr;
} MI_VIF_DevAttr_t;

成员包括:

---------------------------------------------

MI_VIF_ChnPortAttr_t结构体

MI_VIF_ChnPortAttr_t定义 VIF 通道Port属性。

typedef struct MI_VIF_ChnPortAttr_s{MI_SYS_WindowRect_t stCapRect;MI_SYS_WindowRect_t stDestSize;MI_SYS_FieldType_e enCapSel;MI_SYS_FrameScanMode_e nScanMode;MI_SYS_PixelFormat_e ePixFormat;MI_VI_FrameRate_e eFrameRate;MI_U32 u32FrameModeLineCount
} MI_VIF_ChnPortAttr_t;

成员包括:

Port仅仅支持设置stDestSize,enDstFrameRate,其他属性会被忽略

------------------------------------------------

MI_VIF_ChnPortStat_t结构体

MI_VIF_ChnPortStat_t 定义VIF 通道信息结构体。

typedef struct MI_VIF_ChnStat_s
{MI_BOOL bEnable; /* Whether this channel is enabled */MI_U32 u32IntCnt; /* The VIFdeo frame interrupt count */MI_U32 u32FrmRate; /* current frame rate */MI_U32 u32LostInt; /* The interrupt is received but nobody care */MI_U32 u32VbFail; /* video buffer malloc failure */MI_U32 u32PicWidth;/* curren pic width */MI_U32 u32PicHeight;/* current pic height */
} MI_VIF_ChnPortStat_t;

成员包括:

  • 结构体的中断计数,可用于无中断检测。
  • 该结构体的帧率是每 10 秒钟的平均帧率,即 VIF 会每隔十秒统计一次平均帧率, 该值并不精确。
  • 如果查询到该结构体的中断丢失计数一直在增加,说明 VIF 工作出现异常。

-------------------------------------------------

MI_VIF_SNRPad_e结构体

MI_VIF_SNRPad_e定义SensorPad Id。

typedef enum
{E_MI_VIF_SNRPAD_NULL,E_MI_VIF_SNRPADID0,E_MI_VIF_SNRPADID1,E_MI_VIF_SNRPADID2,E_MI_VIF_SNRPADID3,E_MI_VIF_SNRPAD_NUM
}MI_VIF_SNRPad_e;

成员包括:

在默认情况下是VIF Dev0 对应Sensor0, Dev2 对应Sensor1。

参考下图:

------------------------------------------

MI_VIF_Dev2SnrPadMuxCfg_t 结构体

MI_VIF_Dev2SnrPadMuxCfg_t 定义VIF 设备和SensorPad 绑定关系

typedef struct MI_VIF_VIFDev2SnrPadMuxConf_s
{MI_VIF_SNRPad_e eSensorPadID; //sensor Pad idMI_U32 u32PlaneID; //For HDR, 1 is short exposure, 0 is long exposure,
} MI_VIF_Dev2SnrPadMuxCfg_t;

成员包括:

在默认情况下是VIF Dev0 对应Sensor0, Dev2 对应Sensor1.默认不调用该接口。

这篇关于IPC网络摄像头媒体视屏流MI_VIF结构体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837970

相关文章

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子