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.

DVRRDK4.1 After NSF ,the chroma pixel of picture error!

Hi all

    I use DVRRDK4.1 DM8168.

   I find if the picture after NSF Link, the Cb pixel error.  Following is the chain code. And the attachment is the YUV420_SP data of picture got  from channel0(no nsf) and channel1(nsf)

capturePrm.numVipInst = 1;
capturePrm.outQueParams[0].nextLink = mergeId0;//gVcapModuleContext.nsfId[1];
capturePrm.outQueParams[1].nextLink = gVcapModuleContext.nsfId[1]; // D1 to alg0
capturePrm.tilerEnable = FALSE;
capturePrm.enableSdCrop = FALSE;

vipInstId=0;
pCaptureInstPrm = &capturePrm.vipInst[vipInstId];
pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;
pCaptureInstPrm->videoDecoderId = 0;
pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
pCaptureInstPrm->standard = SYSTEM_STD_1080P_24;
pCaptureInstPrm->numOutput = 2;

pCaptureInstPrm->videoIfMode = SYSTEM_CAPT_VIDEO_IF_MODE_16BIT;
pCaptureInstPrm->videoCaptureMode = DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
pCaptureInstPrm->inScanFormat = SYSTEM_SF_PROGRESSIVE;
pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;
pCaptureOutPrm->scEnable = FALSE;
pCaptureOutPrm->scOutWidth = 704;
pCaptureOutPrm->scOutHeight = 576;
pCaptureOutPrm->outQueId = 0;

pCaptureOutPrm = &pCaptureInstPrm->outParams[1];
pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV;
pCaptureOutPrm->scEnable = FALSE;
pCaptureOutPrm->scOutWidth = 0;
pCaptureOutPrm->scOutHeight = 0;
pCaptureOutPrm->outQueId = 1;


nsfPrm1.bypassNsf = FALSE;
nsfPrm1.inputFrameRate = 25;
nsfPrm1.inQueParams.prevLinkId = gVcapModuleContext.captureId;
nsfPrm1.inQueParams.prevLinkQueId = 1;
nsfPrm1.numOutQue = 1;
nsfPrm1.outputFrameRate = 25;
nsfPrm1.outQueParams[0].nextLink = mergeId0;

mergePrm0.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
mergePrm0.inQueParams[0].prevLinkQueId = 0;
mergePrm0.inQueParams[1].prevLinkId = gVcapModuleContext.nsfId[1];
mergePrm0.inQueParams[1].prevLinkQueId = 0;
mergePrm0.notifyNextLink = TRUE;
mergePrm0.numInQue = 2;
mergePrm0.outQueParams.nextLink = gVcapModuleContext.ipcFramesOutVpssId[0] ;

ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkId = mergeId0;
ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFramesOutVpssToHostPrm.baseCreateParams.inputFrameRate = 25;
ipcFramesOutVpssToHostPrm.baseCreateParams.noNotifyMode = TRUE;
ipcFramesOutVpssToHostPrm.baseCreateParams.notifyPrevLink = TRUE;
ipcFramesOutVpssToHostPrm.baseCreateParams.notifyNextLink = FALSE;
ipcFramesOutVpssToHostPrm.baseCreateParams.notifyProcessLink = FALSE;
ipcFramesOutVpssToHostPrm.baseCreateParams.outputFrameRate = 25;
ipcFramesOutVpssToHostPrm.baseCreateParams.numOutQue = 1;
ipcFramesOutVpssToHostPrm.baseCreateParams.outQueParams[0].nextLink = gVcapModuleContext.ipcFramesInHostId;;

ipcFramesInHostPrm.baseCreateParams.noNotifyMode = TRUE;
ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE;
ipcFramesInHostPrm.baseCreateParams.notifyPrevLink = FALSE;
ipcFramesInHostPrm.baseCreateParams.notifyProcessLink = FALSE;
ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.ipcFramesOutVpssId[0];
ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcFramesInHostPrm.baseCreateParams.numOutQue = 1;
ipcFramesInHostPrm.baseCreateParams.outQueParams[0].nextLink = SYSTEM_LINK_ID_INVALID;
ipcFramesInHostPrm.cbCtx = &gVcapModuleContext.callbackArg;
ipcFramesInHostPrm.cbFxn = gVcapModuleContext.callbackFxn.newDataAvailableCb;//;

https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/yuv.7z

  • Hello,

    refer to:

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/717/t/224844

    Best Regards,
    Margarita
  • Hi Eric,

    I am able to see "channel1.yuv" properly when I use 1920x1088 though original (unaligned) resolution is 1920x1080. Here last 8 lines are holes after actual luma. Hence 8 lines of hole data is present in yuv you have shared between y and cb, also correspondingly few lines of chroma data are missing at the end of frame.

    When you open "channel1.yuv" with 1920x1080 the issue is that chroma offset goes wrong. Since luma and chroma buffers are separate in yuv420sp, please make sure chroma of output burrer data are used from corresponding buffer address and not derived from luma address. I hope this clarifies your doubt.

    Regards,

    Murali