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.

8127 ipnc scaler

I want to use the scaler module in ipnc SDK,But cannt create?who can tell me why! thanks!!

  • Can you please add following details:

    1. Which IPNC RDK version are you using?

    2. Which scalar link did you try to instantiate and what was the error message that you get?

    3. What is the usecase?

    Thanks,

    Regards

    Rajat

  • 1. IPC RDK_Version2.8.0

    2. usecase:
    capture -> dup -> nsf -> scaler -> merge -> ipcoutvpss -> icpInvideo -> enc -> ipcBitOutVideo -> ipcBitInHost

    Nsf Link params:

     nsfPrm.bypassNsf = NSF_LINK_BYPASS_NONE;
     nsfPrm.tilerEnable = TRUE;//FALSE;
     nsfPrm.inQueParams.prevLinkId = dupId[0];
     nsfPrm.inQueParams.prevLinkQueId = 1;
     nsfPrm.numOutQue = 1;
     nsfPrm.numBufsPerCh = 4;
     nsfPrm.inputFrameRate = 60;
     nsfPrm.outputFrameRate = 60;
     nsfPrm.outQueParams[0].nextLink =scalerId;// mergeId[CAM_STREAM_MERGE_IDX];//////dupId[1];//ipcOutVpssId;//nullId1;
     nsfPrm.nsfLevel = 7;

    Scaler Link Params:
    scalerId = SYSTEM_LINK_ID_SCLR_INST_0;

    SclrLink_CreateParams_Init(&sclrPrm);
    sclrPrm.inQueParams.prevLinkId             = gVcapModuleContext.nsfId[0];//dupId[SCALER_DUP_IDX];
    sclrPrm.inQueParams.prevLinkQueId          = 1;
    sclrPrm.outQueParams.nextLink              = mergeId[CAM_STREAM_MERGE_IDX];//gVsysModuleContext.fdId;
    sclrPrm.tilerEnable                        = FALSE;
    sclrPrm.enableLineSkipSc                   = FALSE;
    sclrPrm.inputFrameRate                     = 60;
    sclrPrm.outputFrameRate                    = 60;
    sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
    sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
    sclrPrm.outScaleFactor.absoluteResolution.outWidth   = 1600;
    sclrPrm.outScaleFactor.absoluteResolution.outHeight  = 1200;
    sclrPrm.outDataFormat = VF_YUV420SP_UV;
    sclrPrm.pathId = SCLR_LINK_SEC0_SC3;

    Blocking in utils_mem.c Utils_memAlloc() functon, I think this is because cannot alloc mem.  But I do not why? thanks

  • Are you using the capture link or camera link?

    Are you using the same memory map used by IPNC RDK? The IPNC_RDK uses the sclr link for doing scaling from D1 to CIF resolution. Can you please use that as an example for your usecase.

    If you still see issues we'll need your mcfw usecase file for review.

    Regards

    Rajat

  • I use a new usecase , using the capture link, and the memory map same as the IPNC_RDK config_512M.bld.

    But blocking different before.

    My usecase:

    Void MultiCh_createStreamCaptureDisplay()
    {
     CaptureLink_CreateParams    capturePrm;//+
     CaptureLink_VipInstParams *pCaptureInstPrm;//+
     CaptureLink_OutParams  *pCaptureOutPrm;//+

        NullLink_CreateParams nullPrm1;
     NullLink_CreateParams nullPrm0;
     
        DupLink_CreateParams dupPrm[NUM_DUP_LINK];
     SclrLink_CreateParams       sclrPrm;
     
        UInt32 nullId0; 
        UInt32 nullId1;
     
     UInt32 dupId[NUM_DUP_LINK];
     UInt32 scalerId;

     gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
        /* dup Link IDs*/
        dupId[0] = SYSTEM_VPSS_LINK_ID_DUP_0;
        /* null link IDs*/
       nullId1 = SYSTEM_VPSS_LINK_ID_NULL_1;
       nullId0 = SYSTEM_VPSS_LINK_ID_NULL_0;
       scalerId = SYSTEM_LINK_ID_SCLR_INST_0;
     printf("\n********* Entered Capture + Display usecase - H264 1080p @60 fps,H264 D1 @30fps ********\n\n"); 
        /* System init */
        System_init();

        MultiCh_detectBoard();
        System_linkControl(SYSTEM_LINK_ID_M3VPSS, SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
        /* Capture Link params */
     CaptureLink_CreateParams_Init(&capturePrm);

        capturePrm.outQueParams[0].nextLink = nullId0;
     capturePrm.outQueParams[1].nextLink = dupId[0] ;
       
        capturePrm.numAudioChannels = 0;
        capturePrm.numVipInst = 1;
        capturePrm.tilerEnable = FALSE;

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

        /* First stream */
        pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
        pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV422I_YUYV;//SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV422I_YUYV;
        pCaptureOutPrm->scEnable = FALSE;
     //pCaptureOutPrm->scEnable = TRUE; 
        pCaptureOutPrm->scOutWidth = 1600;//1920;
        pCaptureOutPrm->scOutHeight = 1200;
        pCaptureOutPrm->outQueId = 0;

     /* Second stream */
     pCaptureOutPrm = &pCaptureInstPrm->outParams[1];
     pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV422I_YUYV;//SYSTEM_DF_YUV420SP_VU;
     pCaptureOutPrm->scEnable = FALSE;
     pCaptureOutPrm->scOutWidth = 720;
     pCaptureOutPrm->scOutHeight = 480;
     pCaptureOutPrm->standard = SYSTEM_STD_NTSC;//SYSTEM_STD_PAL;
     pCaptureOutPrm->outQueId = 1;

        /* dup link parameters*/
        dupPrm[0].inQueParams.prevLinkId = gVcapModuleContext.captureId;
     
        dupPrm[0].inQueParams.prevLinkQueId = 0;
        dupPrm[0].numOutQue = 2;
        dupPrm[0].outQueParams[0].nextLink = nullId1;
        dupPrm[0].outQueParams[1].nextLink = scalerId;
        dupPrm[0].notifyNextLink = TRUE;

        /* Scaler Link Params */
     SclrLink_CreateParams_Init(&sclrPrm);
     sclrPrm.inQueParams.prevLinkId             = dupId[0];
     sclrPrm.inQueParams.prevLinkQueId          = 1;
     sclrPrm.outQueParams.nextLink              = gVsysModuleContext.fdId;
     sclrPrm.tilerEnable                        = FALSE;
     sclrPrm.enableLineSkipSc                   = FALSE;
     sclrPrm.inputFrameRate                     = 30;
     sclrPrm.outputFrameRate                    = 30;
     sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
     sclrPrm.scaleMode                          = DEI_SCALE_MODE_ABSOLUTE;
     sclrPrm.outScaleFactor.absoluteResolution.outWidth   = 320;
        sclrPrm.outScaleFactor.absoluteResolution.outHeight  = 192;
     sclrPrm.outDataFormat = VF_YUV420SP_UV;
     sclrPrm.pathId = SCLR_LINK_SC5;//SCLR_LINK_SEC0_SC3;

        nullPrm1.numInQue = 1;
        nullPrm1.inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
        nullPrm1.inQueParams[0].prevLinkQueId = 0;

     nullPrm0.numInQue = 1;
        nullPrm0.inQueParams[0].prevLinkId = scalerId;
        nullPrm0.inQueParams[0].prevLinkQueId = 0;
     
        /* Capture Link */
        System_linkCreate(gVcapModuleContext.captureId, &capturePrm,sizeof(capturePrm));        
        /*dup link*/
        System_linkCreate(dupId[0], &dupPrm[0], sizeof(dupPrm[0]));
      
     System_linkCreate(scalerId, &sclrPrm, sizeof(sclrPrm));
        /* null Link */
        System_linkCreate(nullId1,&nullPrm1, sizeof(nullPrm1));
     System_linkCreate(nullId0,&nullPrm0, sizeof(nullPrm0));
     
        MultiCh_memPrintHeapStatus();
     
        OSA_printf("USECASE SETUP DONE\n");
     
    }

    block here:

    pObj->fvidHandle = FVID2_create(FVID2_VPS_M2M_SC_DRV,  
                                           pathId,
                                           &pObj->scCreateParams,
                                           &pObj->scCreateStatus, &cbParams);

  • Hi Xin, 

    The scalar link is working fine in my setup.

    Can you please attach the following in this post - 

    - Your modified usecase file

    - Boot log

    Regards

    Rajat

  • Thanks your replay!

     I use the capture link base the 8148 development baord.  Is that why can not use the scale module?