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.

Error occurs while creating scalar link

Other Parts Discussed in Thread: TVP5158

Dear Sirs,

I use rdk 3.0 and I try to create my usecase:

cap -> nsf -> dup -> scalar -> nsf-> merge-> ipcOutVpss ->ipcInVideo -> enc -> ipcBitsOutVideo -> ipcBitsInHost

But I get error when I create scalar link!

Here is part of my code :

CaptureLink_CreateParams_Init(&capturePrm);

    capturePrm.numVipInst               = 4;
    capturePrm.outQueParams[0].nextLink = gVcapModuleContext.nsfId[NSF_AFTER_CAPTURE];

    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     = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
        pCaptureInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;
        pCaptureInstPrm->standard           = SYSTEM_STD_MUX_4CH_D1;
        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;
    }


    /*
     * Set up TVP Module
     *
     */

    for(i = 0; i < NUM_CAPTURE_DEVICES; i++)
    {
        vidDecVideoModeArgs[i].videoIfMode        = DEVICE_CAPT_VIDEO_IF_MODE_8BIT;
        vidDecVideoModeArgs[i].videoDataFormat    = SYSTEM_DF_YUV422P;
        vidDecVideoModeArgs[i].standard           = SYSTEM_STD_MUX_4CH_D1;
        vidDecVideoModeArgs[i].videoCaptureMode   = DEVICE_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_PIXEL_MUX_EMBEDDED_SYNC;
        vidDecVideoModeArgs[i].videoSystem        = DEVICE_VIDEO_DECODER_VIDEO_SYSTEM_AUTO_DETECT;
        vidDecVideoModeArgs[i].videoCropEnable    = FALSE;
        vidDecVideoModeArgs[i].videoAutoDetectTimeout = -1;
    }

    Vcap_configVideoDecoder(vidDecVideoModeArgs, NUM_CAPTURE_DEVICES);

    /*
     * Set up NSF Module
     *
     */


    NsfLink_CreateParams_Init(&nsfPrm[NSF_AFTER_CAPTURE]);
    nsfPrm[NSF_AFTER_CAPTURE].bypassNsf                 = TRUE;
    nsfPrm[NSF_AFTER_CAPTURE].tilerEnable               = FALSE;
    nsfPrm[NSF_AFTER_CAPTURE].inQueParams.prevLinkId    = gVcapModuleContext.captureId;
    nsfPrm[NSF_AFTER_CAPTURE].inQueParams.prevLinkQueId = 0;
    nsfPrm[NSF_AFTER_CAPTURE].numOutQue                 = 1;

    nsfPrm[NSF_AFTER_CAPTURE].outQueParams[0].nextLink  = dupId;
    nsfPrm[NSF_AFTER_CAPTURE].numBufsPerCh              = 6;
 



    dupPrm.inQueParams.prevLinkId      = gVcapModuleContext.nsfId[NSF_AFTER_CAPTURE];
    dupPrm.inQueParams.prevLinkQueId   = 0;
    dupPrm.notifyNextLink              = TRUE;
    dupPrm.outQueParams[0].nextLink    = gVcapModuleContext.sclrId[0];
    dupPrm.numOutQue                   = 1;
 




    sclrPrm.enableLineSkipSc = FALSE;
    sclrPrm.inputFrameRate   = 30;
    sclrPrm.outputFrameRate  = 1;
    sclrPrm.inQueParams.prevLinkId    = dupId;
    sclrPrm.inQueParams.prevLinkQueId = 0;
    sclrPrm.outQueParams.nextLink     = gVcapModuleContext.nsfId[NSF_AFTER_SCALAR_LINK];
    sclrPrm.scaleMode = DEI_SCALE_MODE_RATIO;
    sclrPrm.outScaleFactor.ratio.heightRatio.numerator   = 1;
    sclrPrm.outScaleFactor.ratio.heightRatio.denominator = 2;
    sclrPrm.outScaleFactor.ratio.widthRatio.numerator    = 1;
    sclrPrm.outScaleFactor.ratio.widthRatio.denominator  = 2;
    sclrPrm.tilerEnable = FALSE; // force tiler disable;
    sclrPrm.numBufsPerCh = 1;








    nsfPrm[NSF_AFTER_SCALAR_LINK].bypassNsf                     = TRUE;
    nsfPrm[NSF_AFTER_SCALAR_LINK].tilerEnable                   = TILER_ENABLE;
    nsfPrm[NSF_AFTER_SCALAR_LINK].inQueParams.prevLinkId        = gVcapModuleContext.sclrId[0];
    nsfPrm[NSF_AFTER_SCALAR_LINK].inQueParams.prevLinkQueId     = 0;
    nsfPrm[NSF_AFTER_SCALAR_LINK].numOutQue                     = 1;
    nsfPrm[NSF_AFTER_SCALAR_LINK].outQueParams[0].nextLink      = mergeId;
    nsfPrm[NSF_AFTER_SCALAR_LINK].numBufsPerCh                  = 1;



    // CH0..15 - D1 FOR MJPEG
    mergePrm.inQueParams[0].prevLinkId = gVcapModuleContext.nsfId[NSF_AFTER_SCALAR_LINK];
    mergePrm.inQueParams[0].prevLinkQueId = 0;
    mergePrm.notifyNextLink         = TRUE;
    mergePrm.numInQue               = 1;
    mergePrm.outQueParams.nextLink  = ipcId[IPC_OUT_VPSS_LINK_IDX];

........

/*
     * Create ALL Modules
     *
     */
   
    System_linkCreate (gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));
   
    System_linkCreate (gVcapModuleContext.nsfId[NSF_AFTER_CAPTURE], &nsfPrm[NSF_AFTER_CAPTURE], sizeof(nsfPrm[NSF_AFTER_CAPTURE]));

    System_linkCreate(dupId, &dupPrm, sizeof(dupPrm));
   
    System_linkCreate(gVcapModuleContext.sclrId[0], &sclrPrm, sizeof(sclrPrm));
   
    System_linkCreate(gVcapModuleContext.nsfId[NSF_AFTER_SCALAR_LINK] , &nsfPrm[NSF_AFTER_SCALAR_LINK], sizeof(nsfPrm[NSF_AFTER_SCALAR_LINK]));

    System_linkCreate(mergeId   , &mergePrm  , sizeof(mergePrm));

.....

My log is :

 [m3vpss ]  26300: CAPTURE: Create in progress !!!
 [m3vpss ]  26310: CAPTURE: VIP0 PortA capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
 [m3vpss ]  26388: CAPTURE: VIP0 PortB capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
 [m3vpss ]  26465: CAPTURE: VIP1 PortA capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
 [m3vpss ]  26542: CAPTURE: VIP1 PortB capture mode is [ 8-bit, Pixel-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:904
 [m3vpss ] CAPTURE::HEAPID:4    USED:67829760
 [m3vpss ]  26621: CAPTURE: Create Done !!!
 [m3vpss ]  26621: NSF: Create in progress !!!


 [m3vpss ] NSF::HEAPID:0        USED:128
 [m3vpss ] NSF::HEAPID:1        USED:26048
 [m3vpss ] NSF::HEAPID:4        USED:30523392
 [m3vpss ]  26762: NSF: Create Done !!!
 [m3vpss ]  26764: DUP   : Create Done !!!
 [m3vpss ]  26765: SCLR: Create in progress !!!
 [m3vpss ] Memory allocation failed due to insufficient free memory, requested - 716288
 [m3vpss ]  26765: SYSTEM  : FREE SPACE : System Heap      = 187928 B, Mbx = 10239 msgs)
 [m3vpss ]  26766: SYSTEM  : FREE SPACE : SR0 Heap         = 1966080 B (1 MB)
 [m3vpss ]  26766: SYSTEM  : FREE SPACE : Frame Buffer     = 51805056 B (49 MB)
 [m3vpss ]  26766: SYSTEM  : FREE SPACE : Bitstream Buffer = 94371712 B (89 MB)
 [m3vpss ]  26766: SYSTEM  : FREE SPACE : Tiler 8-bit      = 62914560 B (60 MB)  - TILER ON
 [m3vpss ]  26766: SYSTEM  : FREE SPACE : Tiler 16-bit     = 41943040 B (40 MB)  - TILER ON
 [m3vpss ]  26766: Assertion @ Line: 344 in links_m3vpss/sclr/sclrLink_drv.c: status == FVID2_SOK : failed !!!

Could you help me with it issue?

Thank you!

  • There are several bugs in scalerLink that have been fixed since DVRRDK 3.0. I suggest you migrate to DVRRDK 4.1 which is the supported release. If you want to manually merge in the latest scaler link changes I am attaching the latest scalerLink from dvr_rdk.

    0245.sclr.zip

  • Thank you , but I get following error while compilation :

    "links_m3vpss/sclr/sclrLink_drv.c", line 587: error: struct "<unnamed>" has no field "hsType"
    "links_m3vpss/sclr/sclrLink_drv.c", line 678: error: struct "<unnamed>" has no field "hsType"
    2 errors detected in the compilation of "links_m3vpss/sclr/sclrLink_drv.c".

    I would like to migrate to 4.1 version, but I don't know where I can get latest version

  • You can get the DVRRDK release from TI FAE. Also check with UDworks if they have a release based on DVRRDK 4.1 if you are unable to contact TI FAE. I assume you purchased from UDworks directly.

    For the compilation errors you can comment out lines causing compilation error.