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.

DeiLink Parameters setting and its commands

Hi

I`ve encountered some problem with DeiLink,

the chain work fine without two DeiLinks, but doesn`t work properly when I insert two DeiLinks into the chain as described above,

I want to know how can I set DeiLink parameters and how can I send command to control them properly,

these are my codes below:

----------------------------------------------------------------------------------------------------------------------------------------------

//DeiLink Parameters settings...
    for (i=0; i<2; i++) {
        deiPrm[i].inQueParams.prevLinkId    = captureId;
        deiPrm[i].inQueParams.prevLinkQueId = i;
        deiPrm[i].outQueParams[0].nextLink = displayId[i];
        deiPrm[i].enableOut[0] = TRUE;
        for (j=1; j<DEI_LINK_MAX_OUT_QUE; j++)
            deiPrm[i].enableOut[j] = FALSE;
        for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
            deiPrm[i].tilerEnable[j] = FALSE;
        deiPrm[i].comprEnable = FALSE;
        deiPrm[i].setVipScYuv422Format = FALSE;    ////////////////
/*        for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
        {
            deiPrm[i].outScaleFactor[j][0].scaleMode = DEI_SCALE_MODE_RATIO;
            deiPrm[i].outScaleFactor[j][0].ratio.widthRatio.denominator  = 1;
            deiPrm[i].outScaleFactor[j][0].ratio.widthRatio.numerator    = 1;
            deiPrm[i].outScaleFactor[j][0].ratio.heightRatio.denominator = 1;
            deiPrm[i].outScaleFactor[j][0].ratio.heightRatio.numerator   = 1;
        }//*/                                    ///////////////
        deiPrm[i].enableLineSkipSc = FALSE;
        for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
        {
            deiPrm[i].inputFrameRate[j] = 60;
            deiPrm[i].outputFrameRate[j] = 60;
        }                                        //////////////
        deiPrm[i].inputDeiFrameRate = 60;        //////////////
        deiPrm[i].outputDeiFrameRate = 60;        //////////////
        /*for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
            deiPrm[i].numBufsPerCh[j] = 16;*/    //////////////
        for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
            deiPrm[i].generateBlankOut[j] = FALSE;
    }
    deiPrm[0].enableDeiForceBypass = FALSE;
    deiPrm[1].enableDeiForceBypass = FALSE;

Thanks for your regards

  • In your code no output queue is enabled. Please check if below params work:

    static
    Void multich_set_dei_prm(DeiLink_CreateParams *deiPrm)
    {
        int i;

        UInt32 outQueIdx = DEI_LINK_OUT_QUE_DEI_SC;

        DeiLink_CreateParams_Init(deiPrm);


        /* Set Output Scaling at DEI based on ratio */
        deiPrm->outScaleFactor[outQueIdx][0].scaleMode = DEI_SCALE_MODE_RATIO;
        deiPrm->outScaleFactor[outQueIdx][0].ratio.widthRatio.numerator = 1;
        deiPrm->outScaleFactor[outQueIdx][0].ratio.widthRatio.denominator = 1;
        deiPrm->outScaleFactor[outQueIdx][0].ratio.heightRatio.numerator = 1;
        deiPrm->outScaleFactor[outQueIdx][0].ratio.heightRatio.denominator = 1;
        for (i = 1; i < DEI_LINK_MAX_CH; i++)
        {
            deiPrm->outScaleFactor[outQueIdx][i] =
                         deiPrm->outScaleFactor[outQueIdx][0];
        }
        deiPrm->enableOut[DEI_LINK_OUT_QUE_DEI_SC]                        = FALSE;
        deiPrm->enableOut[DEI_LINK_OUT_QUE_VIP_SC]                        = FALSE;
        deiPrm->enableOut[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT]          = FALSE;
        deiPrm->enableOut[outQueIdx]                                      = TRUE;
        deiPrm->tilerEnable[DEI_LINK_OUT_QUE_VIP_SC]          = FALSE;
        deiPrm->comprEnable                                   = FALSE;
        deiPrm->setVipScYuv422Format                          = FALSE;
    }

  • Thanks for your timely response Badri!

    I`m sorry to say it still doesn`n work properly;

    this is my latest code in accordance with your suggestion, I`m sure that there is out queue enabling in my codes...

    -----------------------------------------------------------------

    for (i=0; i<2; i++) {
            deiPrm[i].inQueParams.prevLinkId    = captureId;
            deiPrm[i].inQueParams.prevLinkQueId = i;
            deiPrm[i].outQueParams[0].nextLink = displayId[i];
            deiPrm[i].enableOut[0] = TRUE;        //enable output queue DEI_LINK_OUT_QUE_DEI_SC
            for (j=1; j<DEI_LINK_MAX_OUT_QUE; j++)
                deiPrm[i].enableOut[j] = FALSE;
            for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
                deiPrm[i].tilerEnable[j] = FALSE;
            deiPrm[i].comprEnable = FALSE;//++++++++++
            deiPrm[i].setVipScYuv422Format = FALSE;//++++++++++
            //for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
            for (k=0; k<DEI_LINK_MAX_CH; k++)       //set 5 queue 8 channel scaling mode to 1:1 ratio
            {
                deiPrm[i].outScaleFactor[0][k].scaleMode = DEI_SCALE_MODE_RATIO;
                deiPrm[i].outScaleFactor[0][k].ratio.widthRatio.denominator  = 1;
                deiPrm[i].outScaleFactor[0][k].ratio.widthRatio.numerator    = 1;
                deiPrm[i].outScaleFactor[0][k].ratio.heightRatio.denominator = 1;
                deiPrm[i].outScaleFactor[0][k].ratio.heightRatio.numerator   = 1;
            }//*/
            deiPrm[i].enableLineSkipSc = FALSE;
    /*        for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
            {
                deiPrm[i].inputFrameRate[j] = 60;
                deiPrm[i].outputFrameRate[j] = 60;
            }
            deiPrm[i].inputDeiFrameRate = 60;
            deiPrm[i].outputDeiFrameRate = 60;//*/
            /*for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
                deiPrm[i].numBufsPerCh[j] = 16;*/
            for (j=0; j<DEI_LINK_MAX_OUT_QUE; j++)
                deiPrm[i].generateBlankOut[j] = FALSE;
        }
        deiPrm[0].enableDeiForceBypass = FALSE;
        deiPrm[1].enableDeiForceBypass = FALSE;
    --------------------------------------------------------------------

    I want to know,

    (1) apart from parameter setting , if I should send some commands to control DeiLinks to work properly,

    (2) how should I set inputFrameRate,outputFrameRate,inputDeiFrameRate,outputDeiFrameRate parameters,

    (3) how can I enable or disable channel(s) in each queue,

    I will appreciate your timely response!!!

  • If you have access to DVR RDK source code, you can refer /dvr_rdk/mcfw/src_linux/mcfw_api/usecases/multich_vcap_vdis.c which does something similar to what you want you can remove links that you dont need like nsf,swms.If you dont have the code I can share the file.

  • Okay! I have DVR RDK 3.0, I can refer it .

    Thanks for your suggestion!