Tool/software: TI-RTOS
hi all,
i refer the answer of e2e.ti.com/.../2794974
my link is : NullSource_Animation (A15) -> Decode -> VPE_Animation -> Display_vid3
i change the code to support convert YUV420 to RGB888 as following:
vpscore_vpeWb.c:
/* Even for YUV444 we need to use RGB888 data type */
case FVID2_DF_YUV444I:
case FVID2_DF_RGB24_888:
/* Note: The R and B lines are connected to B and R ports of
* VPDMA. Hence need to use BGR datatype to capture RGB data and
* viceversa.
* Same applies for YUV444 output as well - Y and V are
* swapped. */
chObj->vpdmaDataType[0U] = VPSHAL_VPDMA_CHANDT_RGB888;
break;
and displayLink_drv.c:
if(dssPrms->inFmt.dataFormat == SYSTEM_DF_ARGB32_8888)
{
/* Convert to equivalent Display format */
dssPrms->inFmt.dataFormat = SYSTEM_DF_BGRA32_8888;
}
if(dssPrms->inFmt.dataFormat == SYSTEM_DF_RGB24_888)
{
/* Convert to equivalent Display format */
dssPrms->inFmt.dataFormat = SYSTEM_DF_BGR24_888;
}
but the red and blue color are swap as follow:
what's more the left and top edge of screen appear strange mosic, my setting VPE parameter code as following:
UInt16 chId;
pPrm->enableOut[0] = TRUE;
for(chId = 0; chId < numLvdsCh; chId++)
{
pPrm->chParams[chId].outParams[0].numBufsPerCh = VPE_LINK_NUM_BUFS_PER_CH_DEFAULT;
pPrm->chParams[chId].outParams[0].width = 1920;
pPrm->chParams[chId].outParams[0].height = 720;
pPrm->chParams[chId].outParams[0].dataFormat = SYSTEM_DF_RGB24_888;
pPrm->chParams[chId].scCfg.bypass = FALSE;
pPrm->chParams[chId].scCfg.nonLinear = FALSE;
pPrm->chParams[chId].scCfg.stripSize = 0;
pPrm->chParams[chId].scCropCfg.cropStartX = 0;
pPrm->chParams[chId].scCropCfg.cropStartY = 0;
pPrm->chParams[chId].scCropCfg.cropWidth = 1920;
pPrm->chParams[chId].scCropCfg.cropHeight = 720;
}
}
the correct should be: