au32CompMask分量掩码(VI接口硬件)

Ady ·
更新时间:2024-11-14
· 950 次阅读

1.Hi3531为例,分析分量掩码;
VI配置属性函数:HI_MPI_VI_SetDevAttr(ViDev, &stViDevAttr);
结构体变量stViDevAttr。
VI_DEV_ATTR_S stViDevAttr;

/* the attributes of a VI device */ typedef struct hiVI_DEV_ATTR_S { VI_INTF_MODE_E enIntfMode; /* Interface mode */ VI_WORK_MODE_E enWorkMode; /*1-, 2-, or 4-channel multiplexed work mode */ HI_U32 au32CompMask[2]; /* Component mask */ VI_SCAN_MODE_E enScanMode; /* Input scanning mode (progressive or interlaced) */ HI_S32 s32AdChnId[4]; /* AD channel ID. Typically, the default value -1 is recommended */ /* The below members must be configured in BT.601 mode or DC mode and are invalid in other modes */ VI_DATA_YUV_SEQ_E enDataSeq; /* Input data sequence (only the YUV format is supported) */ VI_SYNC_CFG_S stSynCfg; /* Sync timing. This member must be configured in BT.601 mode or DC mode */ VI_DATA_PATH_E enDataPath; /* ISP enable or bypass */ VI_DATA_TYPE_E enInputDataType; /* RGB: CSC-709 or CSC-601, PT YUV444 disable; YUV: default yuv CSC coef PT YUV444 enable. */ HI_BOOL bDataRev; /* Data reverse */ } VI_DEV_ATTR_S;

VI 视频输入设备 Dev0~Dev3 共用 32bit 数据线(对于 Hi3531/Hi3532 的 Dev4~ Dev7 也是如此),用于与外部视频源对接,对接时可能仅使用 32bit 数据线中的一 部分(由硬件连线决定)。例如 Dev0 输入 8bit 的 YUV 数据,camera 与 VI 对接的 是 32bit 数据线的前 8bit 数据线(即 bit0~bit7 对应的数据线),此时配置输入数据 为单分量,分量掩码为 0xFF000000。
0xFF(Dev0)00(Dev1)00(Dev2)00(Dev3)
0xFF(Dev4)00(Dev5)00(Dev6)00(Dev7)

双分量的配置方法(BT1120):
如果视频数据是双分量输入,则需要将设备属性配为双分量,并根据管脚的实际连接 情况指定每个分量的分量掩码。例如 Dev0 设为 BT.1120、双分量输入(亮度分量和色 度分量各占用 8bit),则分量掩码配置为 0xFF000000 和 0xFF0000。
即:
au32CompMask[0] = 0xFF000000;
au32CompMask[1] = 0x00FF0000
也就是占用了16bit,16根线。

bt656的VI_DEV_ATTR_S设置解析

以下为8bit数据线流入1路视频 VI_DEV_ATTR_S DEV_ATTR_BT656D1_1MUX = { /*接口模式*/ VI_MODE_BT656, /*1、2、4路工作模式: 1Multiplex,这个为单路*/ VI_WORK_MODE_1Multiplex, /* r_mask g_mask b_mask 分量掩码*/ {0xFF000000, 0x0}, /*逐行or隔行输入*/ VI_SCAN_INTERLACED, /*AdChnId*/ {-1, -1, -1, -1} }; 以下为8bit数据线流入4路视频 VI_DEV_ATTR_S DEV_ATTR_BT656D1_4MUX = { /*接口模式*/ VI_MODE_BT656, /*1、2、4路工作模式*/ VI_WORK_MODE_4Multiplex, /* r_mask g_mask b_mask*/ {0xFF000000, 0x0}, /*逐行or隔行输入*/ VI_SCAN_INTERLACED, /*AdChnId*/ {-1, -1, -1, -1} }; bt1120的VI_DEV_ATTR_S设置解析 以下为16bit流入1路1080视频流 VI_DEV_ATTR_S DEV_ATTR_7441_BT1120_1080P = /* 典型时序3:7441 BT1120 1080P@60fps典型时序 (对接时序: 时序)*/ { /*接口模式*/ VI_MODE_BT1120_STANDARD, /*1、2、4路工作模式*/ VI_WORK_MODE_1Multiplex, /* r_mask g_mask b_mask*/ {0xFF000000, 0xFF0000}, /*逐行or隔行输入*/ VI_SCAN_PROGRESSIVE, /*AdChnId*/ {-1, -1, -1, -1}, /*enDataSeq, 仅支持YUV格式*/ VI_INPUT_DATA_UVUV, /*同步信息,对应reg手册的如下配置, --bt1120时序无效*/ { /*port_vsync port_vsync_neg port_hsync port_hsync_neg */ VI_VSYNC_PULSE, VI_VSYNC_NEG_HIGH, VI_HSYNC_VALID_SINGNAL,VI_HSYNC_NEG_HIGH,VI_VSYNC_NORM_PULSE,VI_VSYNC_VALID_NEG_HIGH, /*timing信息,对应reg手册的如下配置*/ /*hsync_hfb hsync_act hsync_hhb*/ {0, 1920, 0, /*vsync0_vhb vsync0_act vsync0_hhb*/ 0, 1080, 0, /*vsync1_vhb vsync1_act vsync1_hhb*/ 0, 0, 0} } };
作者:开发联盟



掩码 vi

需要 登录 后方可回复, 如果你还没有账号请 注册新账号