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 id
          MI_U32 u32PlaneID; //For HDR, 1 is short exposure, 0 is long exposure,
} MI_VIF_Dev2SnrPadMuxCfg_t;

成员包括:

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

相关推荐
杀生丸学AI7 小时前
【世界模型】MotionForesight:视频模型应用于未来的三维场景流预测
音视频
开开心心就好12 小时前
视频播放器完美解码集成三款播放器切换使用
前端·人工智能·智能手机·电脑·音视频·virtualenv·pygame
cuijiecheng201812 小时前
RK3588音视频播放器方案对比
音视频
海带紫菜菠萝汤12 小时前
MSE (Media Source Extensions) 实战:流媒体分块加载与自适应码率
前端·javascript·音视频
七牛云行业应用13 小时前
ComfyUI + MiniMax H3 实战教程:全模态视频生成,API 和本地两种玩法
人工智能·大模型·音视频
AIVOClaw容剪13 小时前
AI 成片系统搭建如何让矩阵号差异化从「同一脚本 50 个号发」变成「反推提示词每号一版」——5 模块防止同质化被判搬运 · AI 视频智能体平台
人工智能·矩阵·音视频
AUV110713 小时前
SaaS 产品演示视频怎么做:从目标、脚本、演示数据到交付的可复现流水线
音视频·saas·产品演示
春末的南方城市13 小时前
消费级显卡迎来实时视频生成!FastVideo 开源 FastWan-QAD,RTX 5090 实现 1.8 秒生成 5 秒 480P 视频!
人工智能·深度学习·计算机视觉·aigc·音视频
OH_TPC15 小时前
【鸿蒙优选三方库】@ohos/ijkplayer:在鸿蒙上像 B 站一样流畅播视频
华为·音视频·harmonyos·鸿蒙
ue星空15 小时前
【Godot】AudioStreamPlayer2D音频播放
游戏引擎·音视频·godot