Hi3516dv300支持BT1120(已经解决)

您所在的位置:网站首页 海思3516dv300编译报错 Hi3516dv300支持BT1120(已经解决)

Hi3516dv300支持BT1120(已经解决)

2024-01-24 05:39| 来源: 网络整理| 查看: 265

感谢社区内小伙伴的帖子和回答,不然不知道什么时候能将BT1120调通。故记录下来方便其他小伙伴查阅。目的:将fpga输出的YUV数据通过BT1120输入Hi3516dv300数据流如下:BT1120 —yuv422—> VI — yuv420—> VENC —h264—> networkBT1120 标准时序下,数据就是yuv422格式,16Bit总线位宽,Y通道8bit灰度,C通道8bit色度。VI1必须连接Y通道, VI0必须连接C通道,如果保存下的YUV图像出现色度数据与灰度数据对调的情况可以尝试将Y,C通道换一下。1、主要设置以下几个结构体:

combo_dev_attr_tcombo_dev_attr_t MIPI_BT1120_ATTR ={ /* input mode */ .devno = 1, .input_mode = INPUT_MODE_CMOS, //使MIPI RX PHY处于CMOS模式 .data_rate = MIPI_DATA_RATE_X1, .img_rect = {0, 0, 1280, 720}, { .mipi_attr = {DATA_TYPE_YUV422_8BIT, HI_MIPI_WDR_MODE_NONE, {-1, -1, -1, -1}} }}; 注意:根据文档,对于3516dv300, 只有videv1,MIPI1才支持BT1120输入,且要将输入模式设置为CMOS

VI_DEV_ATTR_S

/* BT1120 1080p */VI_DEV_ATTR_S DEV_ATTR_BT1120_720P_BASE ={ /* interface mode */ VI_MODE_BT1120_STANDARD, /* multiplex mode */ VI_WORK_MODE_1Multiplex, /* r_mask g_mask b_mask*/ {0xFF000000, 0xFF0000}, /* progessive or interleaving */ VI_SCAN_PROGRESSIVE, /*逐行*/ /*AdChnId*/ {-1, -1, -1, -1}, /*enDataSeq, only support yuv*/ VI_DATA_SEQ_UVUV, /* synchronization information */ { /*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, /*hsync_hfb hsync_act hsync_hhb*/ { 0, 0, 0, /*vsync0_vhb vsync0_act vsync0_hhb*/ 0, 0, 0, /*vsync1_vhb vsync1_act vsync1_hhb*/ 0, 0, 0 } }, /* input data type */ VI_DATA_TYPE_YUV, /* bReverse */ HI_FALSE, /* input size */ {1280, 720}, {{ {1280, 720}, }, {VI_REPHASE_MODE_NONE, VI_REPHASE_MODE_NONE}}, {WDR_MODE_NONE, 720}, DATA_RATE_X1}; VI_PIPE_ATTR_S VI_PIPE_ATTR_S PIPE_ATTR_BT1120_720P_BIT16_420 = { /* bBindDev bYuvSkip */ VI_PIPE_BYPASS_NONE, HI_FALSE, /*YUV skip enable */ HI_TRUE, /* ISP Bypass */ 1280, 720, PIXEL_FORMAT_YVU_SEMIPLANAR_422, COMPRESS_MODE_NONE, DATA_BITWIDTH_8, /* bit_width width: 16 illegal, should be when YUV!*/ HI_FALSE, {PIXEL_FORMAT_YVU_SEMIPLANAR_420, DATA_BITWIDTH_8, VI_NR_REF_FROM_RFR, COMPRESS_MODE_NONE}, HI_FALSE, {-1, -1}};

不需要ISP,故设置ISP Bypass为true。

VI_CHN_ATTR_S

VI_CHN_ATTR_S CHN_ATTR_BT1120_720P_420_SDR8_LINEAR = { {1280, 720}, PIXEL_FORMAT_YVU_SEMIPLANAR_420, DYNAMIC_RANGE_SDR8, VIDEO_FORMAT_LINEAR, COMPRESS_MODE_NONE, 0, 0, 0, {-1, -1}};

2、接口调用关系如下

SAMPLE_COMM_VI_StartVi() SAMPLE_COMM_VI_StartMIPI_BT1120() //combo_dev_attr_t SAMPLE_COMM_VI_SetParam() SAMPLE_COMM_VI_CreateVi() SAMPLE_COMM_VI_CreateSingleVi() SAMPLE_COMM_VI_StartDev() //VI_DEV_ATTR_S SAMPLE_COMM_VI_BindPipeDev() SAMPLE_COMM_VI_StartViPipe() //VI_PIPE_ATTR_S SAMPLE_COMM_VI_StartViChn() //VI_CHN_ATTR_S //SAMPLE_COMM_VI_CreateIsp() /*close isp*/

SAMPLE_COMM_VI_StartMIPI_BT1120()实现如下:

HI_S32 SAMPLE_COMM_VI_StartMIPI_BT1120(SAMPLE_VI_CONFIG_S* pstViConfig) { HI_S32 fd; combo_dev_attr_t *pstcomboDevAttr = NULL; fd = open("/dev/hi_mipi", O_RDWR); if (fd


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3