This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM8148 DVR_RDK的display链路输出图像format问题



说明:

项目运作方式:A8中VCAP采集视频数据、传输至DSP做图像处理、最后由VDIS通过hdmi进行视频显示。

问题:

HDMI视频输入采集,VCAP的inDataFormat设置如下:

CaptureLink_CreateParams_Init(&capPrms);
//capPrms.outQueParams[0].nextLink = gVcapModuleContext.deiId[0];
capPrms.outQueParams[0].nextLink = VPSS_LINK_ID_IPC_FRAME_OUT_TO_DSP;
capPrms.numVipInst = 1;
capPrms.tilerEnable = FALSE;

capPrms.doCropInCapture = FALSE;
capPrms.enableSdCrop = FALSE;

/* capture instance init */
CaptureLink_VipInstParams *prm_cap_inst = &capPrms.vipInst[0];
prm_cap_inst->vipInstId = (SYSTEM_CAPTURE_INST_VIP0_PORTA + 0 ) % SYSTEM_CAPTURE_INST_MAX;
prm_cap_inst->inDataFormat = SYSTEM_DF_YUV422P;
prm_cap_inst->numOutput = 1;
prm_cap_inst->standard = SYSTEM_STD_1366_768_60;
prm_cap_inst->videoIfMode = DEVICE_CAPT_VIDEO_IF_MODE_16BIT;
prm_cap_inst->videoCaptureMode = DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
prm_cap_inst->inScanFormat = SYSTEM_SF_PROGRESSIVE;

/* capture out init */
CaptureLink_OutParams *prm_cap_out = &prm_cap_inst->outParams[0];
prm_cap_out->scEnable = FALSE;
prm_cap_out->scOutWidth = 0;
prm_cap_out->scOutHeight = 0;
prm_cap_out->outQueId = 0;
//prm_cap_out->dataFormat = SYSTEM_DF_YUV422I_YUYV;
prm_cap_out->dataFormat = SYSTEM_DF_RGB24_888;

考虑到opencv处理图像数据格式的情况下,我将VCAP的out   dataformat设置为24bit的888格式,这样FVID2_Frame的数据应该是RGB的交叉存储,display链路直接输出RGB图像。如下图可知道CapTureLink的outDataFormat支持RGB24格式!

display链路只是设置了preLinkId和disPlayRes!

但是我运行的时候发现会报如下错误2264383: Assertion @ Line: 941 in links_m3vpss/display/displayLink_drv.c: status == FVID2_SOK : failed !!!

定位到display_drv.c源码文件中,我发现是FVID2_setFormat()函数返回出错!

我查了HVPSS_userGuide文档如下图为displayDriver的输出图像格式。

所以displayLink链路是否支持不了GRB的格式输出,而只支持YUV422I_YUYV格式,?还是说我需要做一些修改能让disPlaylink支持RGB24_888的数据输出格式呢?