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.

A question about DM8148 IPCFRAMES link

Other Parts Discussed in Thread: TVP7002

Hi,

I used capture/display mode in DM8148, the input was from TVP7002.

When the link is capture ---> display, the video I received is suspended, just a image. I thought maybe it was because I had not enough time to deal the data. Then I changed the link to capture ---> ipcFramesOutVpss ---> display, at the same time there is a processlink in ipcFramesOutVpss: ipcFramesOutVpss ---> ipcFramesIndsp ---> dspAlg. Then I saw the screen black.

Could somebody give me some advices please? Thanks.

My program is:

    gVcapModuleContext.ipcFramesOutVpssId[0] = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
    gVcapModuleContext.ipcFramesInDspId[0] = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
    gVcapModuleContext.dspAlgId[0] = SYSTEM_LINK_ID_ALG_0;
  
    capturePrm.outQueParams[0].nextLink = gVcapModuleContext.ipcFramesOutVpssId[0];
    pCaptureOutPrm->outQueId = 0;
 
    /* Set ipcFramesOutVpss link info */
    ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE; 
    ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
    ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.captureId;
    ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
    ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
    ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = gVdisModuleContext.displayId[0];
    ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = TRUE;
    ipcFramesOutVpssPrm.baseCreateParams.processLink = gVcapModuleContext.ipcFramesInDspId;
  
    //prevLink->processLink->nextLink
    ipcFramesInDspPrm.baseCreateParams.noNotifyMode = FALSE;
    ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
    ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = gVcapModuleContext.ipcFramesOutVpssId[0];
    ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcFramesInDspPrm.baseCreateParams.numOutQue = 1;
    ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
    ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = gVcapModuleContext.dspAlgId[0];
 
    dspAlgPrm.enableOSDAlg = TRUE;
    dspAlgPrm.enableSCDAlg = FALSE;
    dspAlgPrm.inQueParams.prevLinkId = gVcapModuleContext.ipcFramesInDspId[0];
    dspAlgPrm.inQueParams.prevLinkQueId = 0;
    dspAlgPrm.outQueParams.nextLink = SYSTEM_LINK_ID_INVALID;

    /* display link params */
    MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm);
    displayPrm.inQueParams[0].prevLinkId = gVcapModuleContext.ipcFramesOutVpssId[0];
    displayPrm.inQueParams[0].prevLinkQueId = 0;
    displayPrm.displayRes = gVdisModuleContext.vdisConfig.deviceParams[VDIS_DEV_HDMI].resolution;
    displayPrm.displayId  = DISPLAY_LINK_DISPLAY_SC1;

    /* Links Creation */
    System_linkCreate(gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));
    System_linkControl(gVcapModuleContext.captureId, CAPTURE_LINK_CMD_DETECT_VIDEO, NULL, 0, TRUE);

    /* IpcFrames link */
    System_linkCreate(gVcapModuleContext.ipcFramesOutVpssId[0], &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));
    System_linkCreate(gVcapModuleContext.ipcFramesInDspId[0], &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));
    System_linkCreate(gVcapModuleContext.dspAlgId[0], &dspAlgPrm, sizeof(dspAlgPrm));

    /* display link */
    System_linkCreate(gVdisModuleContext.displayId[0], &displayPrm, sizeof(displayPrm));

  • Hello,

    What is the software release that you are using here?

    BR
    Margarita
  • Hi,
    I used IPNC RDK v3.8. And I changed camera to capture in multich_capturedisplay.c, and I was successful in HDMI IN and HDMI OUT mode using the link from capture to display. Now I want to use tvp7002 instead SII9125.
  • Hello,

    I will notify the IPNC team for help.

    BR
    Margarita
  • Hi,

    The capture->display is the simple use case which you should get working.

    Pl. check if the capture is happening properly by putting debug messages in the capture link call back.

    regards,

    Anand

  • Hi,
    How should I do to check this? Thanks.
  • Hi,

    There is callback function 'CaptureLink_drvCallback()' defined in the '..\ipnc_rdk\ipnc_mcfw\mcfw\src_bios6\links_m3vpss\capture\captureLink_drv.c' file which is called from the capture driver after a frame is captured.
    You can put debug messages here like 'Vps_rprintf("Frame Received\n");'.

    regards,
    Anand
  • Hi,
    I found an error in the printf log: Assertion @ Line: 560 in links_m3vpss/display/displayLink_drv.c: status == 0 : failed !!!
    The error occured when Utils_queGet runned which is in the function DisplayLink_drvSetFrameInfo. What will call the display queget error? Thanks.

    Part of my log is :
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvDetectVideo end
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x7
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData System_sendLinkCmd nextLink=0x2000002f
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x1
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData System_sendLinkCmd nextLink=0x2000002f
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] -- DisplayLink_drvSetFrameInfo end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x1
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData System_sendLinkCmd nextLink=0x2000002f
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- DisplayLink_drvSetFrameInfo start
    [m3vpss ] -- DisplayLink_drvSetFrameInfo !fieldSeparatedInputMode Utils_queGet
    [m3vpss ] 7172: Assertion @ Line: 560 in links_m3vpss/display/displayLink_drv.c: status == 0 :
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x1
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData System_sendLinkCmd nextLink=0x2000002f
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x1
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData System_sendLinkCmd nextLink=0x2000002f
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x1
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData System_sendLinkCmd nextLink=0x2000002f
    [m3vpss ] -- CaptureLink_drvDetectVideo start
    [m3vpss ] -- CaptureLink_drvDetectVideo numVipInst=0x1
    [m3vpss ] -- CaptureLink_drvDetectVideo pInst->videoDecoderHandle=0x8f24fbf8
    [m3vpss ] Vps_tvp7002Control start
    [m3vpss ] Vps_tvp7002Control IOCTL_VPS_VIDEO_DECODER_GET_VIDEO_STATUS
    [m3vpss ] Vps_tvp7002GetVideoStatusIoctl start
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
    [m3vpss ] -- CaptureLink_drvProcessData start
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData frameList.numFrames=0x0
    [m3vpss ] -- CaptureLink_drvProcessData end
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_drvCallback Frame Received.
    [m3vpss ] -- CaptureLink_tskRun SYSTEM_CMD_NEW_DATA
  • Hi,

    The 'Utils_quePut()' for the frameInfo queue is done in DisplayLink_drvDeQueue() fn so pl. check if this function is getting called.

    regards,

    Anand

  • When I add printf in DisplayLink_drvDeQueue(), the error disappeared, and the log shows Utils_quePut() was called. However, the result is the same. "CaptureLink_drvCallback Frame Received." is always be printfed, I guess the capture input is OK. But functions with the prefix "DisplayLink_drv" were disappered. Does this mean that the HDMI display is wrong?
  • Hi,
    May I ask if TVP7002 support RGB888 output mode? Thanks. I used TVP7002 as: input YPbPr 720p60, output RGB888 720p60. Should I?
  • Hello,

    I am not aware with IPNC but about TVP7002 you could check here:
    www.ti.com/.../tvp7002.pdf


    BR
    Margarita