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.

DM8168 dvrrdk4.0 can't create displayLink problem

Other Parts Discussed in Thread: TVP7002

HI:

I'm trying to run the demo vcap_vdis in dvrrdk4.0,by making some changes, my demo captures single channel video of 720p  by tvp7002, and has the process of  vcap_nfs_ dei _dup_display,but it asserted an error when creating displaylink.

And I didn't kown why it happed, could anyone help me out?

Thanks a lot !

Here are the logs:

1: VCAP + VENC + VDEC + VDIS  - Progressive SD Encode + Decode
 2: VCAP + VENC        + VDIS  - SD Encode ONLY
 3: VCAP + VENC + VDEC + VDIS  - Progressive HD Encode + Decode
 4:               VDEC + VDIS  - SD/HD Decode ONLY
 a: 960H DVR usecase

 e: Exit

 Enter Choice: 5
--------------- CHANNEL DETAILS-------------
Capture Channels => 1
Disp Channels => 1
-------------------------------------------
 0: SYSTEM: System Common Init in progress !!!
 0: SYSTEM: IPC init in progress !!!
 17: SYSTEM: CPU [DSP] syslink proc ID is [0] !!!
 17: SYSTEM: CPU [VIDEO-M3] syslink proc ID is [1] !!!
 17: SYSTEM: CPU [VPSS-M3] syslink proc ID is [2] !!!
 17: SYSTEM: CPU [HOST] syslink proc ID is [3] !!!
 17: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_3] ...
 20: SYSTEM: Creating MsgQ [HOST_MSGQ] ...
 22: SYSTEM: Creating MsgQ [HOST_ACK_MSGQ] ...
 24: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
 24: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
 25: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 26: SYSTEM: Notify register to [DSP] line 0, event 15 ...
 27: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ...
 27: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ...
 28: SYSTEM: IPC init DONE !!!
 29: SYSTEM: Creating ListMP [HOST_IPC_OUT_24] in region 0 ...
 32: SYSTEM: Creating ListMP [HOST_IPC_IN_24] in region 0 ...
 33: SYSTEM: ListElem Shared Addr = 0x406f9880
 34: SYSTEM: Creating ListMP [HOST_IPC_OUT_25] in region 0 ...
 37: SYSTEM: Creating ListMP [HOST_IPC_IN_25] in region 0 ...
 39: SYSTEM: ListElem Shared Addr = 0x4072ea80
 40: SYSTEM: Creating ListMP [HOST_IPC_OUT_19] in region 0 ...
 43: SYSTEM: Creating ListMP [HOST_IPC_IN_19] in region 0 ...
 44: SYSTEM: ListElem Shared Addr = 0x40763c80
 45: SYSTEM: Creating ListMP [HOST_IPC_OUT_20] in region 0 ...
 48: SYSTEM: Creating ListMP [HOST_IPC_IN_20] in region 0 ...
 50: SYSTEM: ListElem Shared Addr = 0x407a6f80
 51: SYSTEM: Creating ListMP [HOST_IPC_OUT_21] in region 0 ...
 54: SYSTEM: Creating ListMP [HOST_IPC_IN_21] in region 0 ...
 56: SYSTEM: ListElem Shared Addr = 0x407ea280
 72: SYSTEM: System Common Init Done !!!
 [host] HDMI Ctrl :Initializing
 [host] HDMI Ctrl :Initialized
 [FBDEV]
 [FBDEV] FB: Starting !!!
 [FBDEV] FB: Opened device [/dev/fb0] (fd=22) !!!
 [FBDEV]
 [FBDEV] Fix Screen Info
 [FBDEV] ---------------
 [FBDEV] Line Length - 2560
 [FBDEV] Physical Address = dd600000
 [FBDEV] Buffer Length = 8388608
 [FBDEV]
 [FBDEV]
 [FBDEV] Var Screen Info
 [FBDEV] ---------------
 [FBDEV] Xres - 1280
 [FBDEV] Yres - 720
 [FBDEV] Xres Virtual - 1280
 [FBDEV] Yres Virtual - 720
 [FBDEV] Bits Per Pixel - 16
 [FBDEV] Pixel Clk - 13468
 [FBDEV] Rotation - 0
 [FBDEV]
 [FBDEV]
 [FBDEV] Reg Params Info
 [FBDEV] ---------------
 [FBDEV] region 0, postion 0 x 0, prioirty 1
 [FBDEV] first 1, last 1
 [FBDEV] sc en 0, sten en 0
 [FBDEV] tran en 0, type 0, key 0
 [FBDEV] blend 0, alpha 0
 [FBDEV] bb en 0, alpha 0
 [FBDEV]
 [FBDEV]
 [FBDEV] ### BUF SIZE = 1843200 Bytes !!!
 [FBDEV]
 [FBDEV]
 [FBDEV] Fix Screen Info
 [FBDEV] ---------------
 [FBDEV] Line Length - 2560
 [FBDEV] Physical Address = dd600000
 [FBDEV] Buffer Length = 8388608
 [FBDEV]
 [FBDEV]
 [FBDEV] Var Screen Info
 [FBDEV] ---------------
 [FBDEV] Xres - 1280
 [FBDEV] Yres - 720
 [FBDEV] Xres Virtual - 1280
 [FBDEV] Yres Virtual - 720
 [FBDEV] Bits Per Pixel - 16
 [FBDEV] Pixel Clk - 13468
 [FBDEV] Rotation - 0
 [FBDEV]
 [FBDEV]
 [FBDEV] Reg Params Info
 [FBDEV] ---------------
 [FBDEV] region 0, postion 0 x 0, prioirty 1
 [FBDEV] first 1, last 1
 [FBDEV] sc en 0, sten en 0
 [FBDEV] tran en 0, type 0, key 0
 [FBDEV] blend 0, alpha 0
 [FBDEV] bb en 0, alpha 0
 [FBDEV]
 [FBDEV]
 [FBDEV] ### BUF SIZE = 1843200 Bytes !!!
 [FBDEV]
 [FBDEV] grpx_fb_draw ...
 [FBDEV] grpx_fb_draw ... Done !!!
 [FBDEV] FB: Start DONE !!!
 [FBDEV]
 182: MCFW  : CPU Revision [ES2.0] !!!
 [m3vpss ]  9739: CAPTURE!!!: Create in progress !!!
 [m3vpss ]  9768: CAPTURE!!!: VIP0 PortA capture mode is [16-bit, Non-mux Embedded Sync] !!!
 [m3vpss ]  UTILS: DMA: Allocated CH (TCC) = 58 (58)
 [m3vpss ]  UTILS: DMA: 0 of 4: Allocated PaRAM = 58 (0x49004740)
 [m3vpss ]  UTILS: DMA: 1 of 4: Allocated PaRAM = 64 (0x49004800)
 [m3vpss ]  UTILS: DMA: 2 of 4: Allocated PaRAM = 65 (0x49004820)
 [m3vpss ]  UTILS: DMA: 3 of 4: Allocated PaRAM = 66 (0x49004840)
 [m3vpss ] CAPTURE::HEAPID:0    USED:328
 [m3vpss ] CAPTURE::HEAPID:4    USED:24422400
 [m3vpss ]  9861: CAPTURE: Create Done !!!
 [m3vpss ]  9862: NSF: Create in progress !!!
 [m3vpss ] NSF::HEAPID:0        USED:128
 [m3vpss ] NSF::HEAPID:1        USED:4928
 [m3vpss ] NSF::HEAPID:4        USED:9891840
 [m3vpss ]  9908: NSF: Create Done !!!
 [m3vpss ]  9908: DEI    : Create in progress !!!
 [m3vpss ]  9954: DEI     : Loading Down-scaling Co-effs
 [m3vpss ]  9954: DEI     : Co-effs Loading ... DONE !!!
 [m3vpss ] DEI:HEAPID:0 USED:64
 [m3vpss ] DEI:HEAPID:1 USED:4832
 [m3vpss ] DEI:HEAPID:4 USED:9676800
 [m3vpss ]  9954: DEI    : Create Done !!!
 [m3vpss ]  9959: DUP   : Create Done !!!
 [m3vpss ]  9959: DISPLAY: Create in progress !!!
 [m3vpss ]  9961: Assertion @ Line: 940 in links_m3vpss/display/displayLink_drv.c: status == FVID2_SOK : failed !!!

And here are my demo codes:

Void MultiCh_createVcapVdis()
{
    CaptureLink_CreateParams    capturePrm;
    NsfLink_CreateParams        nsfPrm;
    DeiLink_CreateParams        deiPrm[2];
    DupLink_CreateParams        dupPrm;
    DisplayLink_CreateParams    displayPrm[2];

    CaptureLink_VipInstParams *pCaptureInstPrm;
    CaptureLink_OutParams     *pCaptureOutPrm;

    VCAP_DEVICE_CREATE_PARAM_S vidDecVideoModeArgs[1];

    UInt32 grpxId[VDIS_DEV_MAX];
    UInt32 nullId;
    UInt32 dupId;
    UInt32 deiOutQue;

    UInt32 vipInstId;
    UInt32 i;
    UInt32 numSubChains;
    Bool enableSdtv;

    UInt32 numCaptureDevices;
    UInt32 deviceId = ~0u;
    for (i = 0; i < 1; i++)
    {
        MULTICH_INIT_STRUCT(DisplayLink_CreateParams,displayPrm[i]);
    }
    MultiCh_detectBoard();
    System_linkControl(
        SYSTEM_LINK_ID_M3VPSS,
        SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES,
        NULL,
        0,
        TRUE
        );
    gVcapModuleContext.captureId    = SYSTEM_LINK_ID_CAPTURE;
    gVcapModuleContext.nsfId[0]     = SYSTEM_LINK_ID_NSF_0;
    gVcapModuleContext.deiId[0]     = SYSTEM_LINK_ID_DEI_HQ_0;
    gVcapModuleContext.deiId[1]     = SYSTEM_LINK_ID_DEI_0;
    gVcapModuleContext.nullSrcId    = SYSTEM_VPSS_LINK_ID_NULL_SRC_0;
    dupId                           = SYSTEM_VPSS_LINK_ID_DUP_0;

    gVdisModuleContext.displayId[0] = SYSTEM_LINK_ID_DISPLAY_0; // ON CHIP HDMI
   // gVdisModuleContext.displayId[1] = SYSTEM_LINK_ID_DISPLAY_1; // OFF CHIP HDMI
  //  gVdisModuleContext.displayId[2] = SYSTEM_LINK_ID_DISPLAY_2; // OFF CHIP HDMI
    grpxId[0]                       = SYSTEM_LINK_ID_GRPX_0;
    grpxId[1]                       = SYSTEM_LINK_ID_GRPX_1;
#if 0    /* Enabling graphics only for ON CHIP HDMI an OFF CHIP HDMI*/
    grpxId[2]                       = SYSTEM_LINK_ID_GRPX_2;
#endif
    nullId                          = SYSTEM_VPSS_LINK_ID_NULL_0;

    numSubChains             = 1;
    deiOutQue                = DEI_LINK_OUT_QUE_VIP_SC;
    enableSdtv               = FALSE;
    CaptureLink_CreateParams_Init(&capturePrm);
    capturePrm.numVipInst    = 1;
    capturePrm.outQueParams[0].nextLink = gVcapModuleContext.nsfId[0];

    capturePrm.tilerEnable              = FALSE;
    capturePrm.enableSdCrop             = FALSE;

    for(vipInstId=0; vipInstId<capturePrm.numVipInst; vipInstId++)
    {
        pCaptureInstPrm                     = &capturePrm.vipInst[vipInstId];
        pCaptureInstPrm->vipInstId          = (SYSTEM_CAPTURE_INST_VIP0_PORTA+vipInstId)%SYSTEM_CAPTURE_INST_MAX;
        pCaptureInstPrm->videoDecoderId     = 0;
        pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;
        pCaptureInstPrm->standard           = SYSTEM_STD_720P_60;
        pCaptureInstPrm->numOutput          = 1;

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

    for(i = 0; i < numCaptureDevices; i++)
    {
        vidDecVideoModeArgs[i].deviceId         = deviceId;
        if(deviceId == DEVICE_VID_DEC_TW2968_DRV)
        {
            /* consider first device connected to VIP0 Port A and second device connected to VIP1 PortA */
            vidDecVideoModeArgs[i].vipInstId        = SYSTEM_CAPTURE_INST_VIP0_PORTA+i*2;
            vidDecVideoModeArgs[i].numChInDevice    = 1;
        }
        else
        {
            vidDecVideoModeArgs[i].vipInstId        = SYSTEM_CAPTURE_INST_VIP0_PORTA+i;
            vidDecVideoModeArgs[i].numChInDevice    = 1;
        }
        vidDecVideoModeArgs[i].modeParams.videoIfMode        = DEVICE_CAPT_VIDEO_IF_MODE_16BIT;
        vidDecVideoModeArgs[i].modeParams.videoDataFormat    = SYSTEM_DF_YUV422P;
        vidDecVideoModeArgs[i].modeParams.standard           = SYSTEM_STD_720P_60;
        vidDecVideoModeArgs[i].modeParams.videoCaptureMode   = DEVICE_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_EMBEDDED_SYNC;
        vidDecVideoModeArgs[i].modeParams.videoSystem        = DEVICE_VIDEO_DECODER_VIDEO_SYSTEM_AUTO_DETECT;
        vidDecVideoModeArgs[i].modeParams.videoCropEnable    = FALSE;
        vidDecVideoModeArgs[i].modeParams.videoAutoDetectTimeout = -1;
    }
    Vcap_configVideoDecoder(vidDecVideoModeArgs, numCaptureDevices);
    NsfLink_CreateParams_Init(&nsfPrm);
    nsfPrm.bypassNsf                 = FALSE;
    nsfPrm.tilerEnable               = FALSE;
    nsfPrm.inQueParams.prevLinkId    = gVcapModuleContext.captureId;
    nsfPrm.inQueParams.prevLinkQueId = 0;
    nsfPrm.numOutQue                 = numSubChains;
    nsfPrm.outQueParams[0].nextLink  = gVcapModuleContext.deiId[0];

    for(i=0; i<numSubChains; i++)
    {
        Int32 chId;

        DeiLink_CreateParams_Init(&deiPrm[i]);

        deiPrm[i].inQueParams.prevLinkId                        = gVcapModuleContext.nsfId[0];
        deiPrm[i].inQueParams.prevLinkQueId                     = i;
        deiPrm[i].outQueParams[deiOutQue].nextLink              = dupId;
        deiPrm[i].outQueParams[deiOutQue^1].nextLink            = nullId;
        deiPrm[i].enableOut[deiOutQue]                          = TRUE;
        deiPrm[i].enableOut[deiOutQue^1]                        = FALSE;
        deiPrm[i].tilerEnable[DEI_LINK_OUT_QUE_VIP_SC]          = FALSE;

        deiPrm[i].comprEnable                                   = FALSE;
        deiPrm[i].setVipScYuv422Format                          = FALSE;

        /* DEI Path Scalar ratio is 1:2, D1 => CIF */
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].scaleMode = DEI_SCALE_MODE_RATIO;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.numerator    = 1;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.denominator  = 2;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.numerator   = 1;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.denominator         = 2;
        for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
            deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][chId] = deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0];

        /* VIP Scalar ratio is 1:1 */
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode = DEI_SCALE_MODE_RATIO;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.numerator    = 1;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.denominator  = 1;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.numerator   = 1;
        deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.denominator     = 1;
        for (chId=1; chId < DEI_LINK_MAX_CH; chId++)
            deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][chId] = deiPrm[i].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0];

 
        dupPrm.inQueParams.prevLinkId         = gVcapModuleContext.deiId[i];
        dupPrm.inQueParams.prevLinkQueId      = deiOutQue;
        dupPrm.numOutQue                      = numSubChains;
        dupPrm.outQueParams[i].nextLink       = gVdisModuleContext.displayId[i];
        dupPrm.notifyNextLink                 = TRUE;
    }

    for(i=0; i<numSubChains; i++)
    {  
        displayPrm[i].inQueParams[0].prevLinkId    = dupId;
        displayPrm[i].inQueParams[0].prevLinkQueId = 0;
        displayPrm[i].displayRes                = gVdisModuleContext.vdisConfig.deviceParams[i].resolution;
    }

    capturePrm.isPalMode = Vcap_isPalMode();


    System_linkCreate(gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));
    System_linkCreate(gVcapModuleContext.nsfId[0] , &nsfPrm, sizeof(nsfPrm));

    for(i=0; i<numSubChains; i++)
        System_linkCreate(gVcapModuleContext.deiId[i]  , &deiPrm[i], sizeof(deiPrm[i]));

    System_linkCreate(dupId     , &dupPrm    , sizeof(dupPrm));

    for(i=0; i<numSubChains; i++)
        System_linkCreate(gVdisModuleContext.displayId[i], &displayPrm[i], sizeof(displayPrm[i]));

    MultiCh_memPrintHeapStatus();

}