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.

del the nsf link pChObj->algObj.algCreateParams.format changed

hi all ,i have a problem like that 

my link is

cap->dup->dis

                 ->dei->nsf->enc->.....                                     that my app run normally ,just because of the nsf link limit the 2 ch 1080p framerate,for example one 60 reduce to be 50fps

so now i want to delete the nsf link , i use the dei DEI_LINK_OUT_QUE_VIP_SC to link enc ,but when i run my new app ,i found that in the function EncLink_codecSetqpParamI() the format value changed from 9 to 0 ,so it has the  UTILS_assert(FALSE); error .so why? and how to fix it 

swith(pChObj->algObj.algCreateParams.format)

{case 

......

}

tks

  • now i found the other question ,i delete the nsf link ,then the enc channel can not be created successfully.

    the following is the log :

    4617.sessionNoEnc.log

    also i just link the cap to enc directly ,the app can run normally,so i am confused.

    the following is my dei configure

    MULTICH_INIT_STRUCT(DeiLink_CreateParams, deiPrm[0]);
    DeiLink_CreateParams_Init(&deiPrm[0]);
    deiPrm[0].inQueParams.prevLinkId = dupId0;
    deiPrm[0].inQueParams.prevLinkQueId = 0;
    deiPrm[0].outQueParams[1].nextLink = ipcOutVpssId;//gVcapModuleContext.nsfId[0];
    deiPrm[0].enableOut[1] = TRUE;
    deiPrm[0].tilerEnable[1] = FALSE;
    deiPrm[0].comprEnable = FALSE;
    deiPrm[0].setVipScYuv422Format = FALSE;//TRUE;
    deiPrm[0].enableDeiForceBypass = TRUE;
    deiPrm[0].enableDualVipOut = FALSE;
    //deiPrm[0].interlacedBypassMode = TRUE;
    deiPrm[0].inputFrameRate[DEI_LINK_OUT_QUE_VIP_SC] = 60;
    deiPrm[0].outputFrameRate[1] = 60;

    deiPrm[0].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode = DEI_SCALE_MODE_ABSOLUTE;
    deiPrm[0].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].absoluteResolution. outWidth = 1920;
    deiPrm[0].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].absoluteResolution. outHeight = 1080;

    so why?

  • Check ipcOutVpssPrm prevLinkId and prevLinkQueId are set correctly. It loos like you are wrongly connecting links and no encode channels are created.

  • hi Badri ,my  ipcOutVpssPrm prevLinkId is the dei id gVcapModuleContext.deiId[0] 

    prevLinkQueId is the DEI_LINK_OUT_QUE_VIP_SC=1,so i think the id is right,and you?

  • The log shows encoder received no frames. DEI is correctly outputting 60 fps. There is a ipcFramesOut link that is outputiing 60 fps. Check you link connections by printing currentLink,nextLink,prevLink and prevLinkQueId for each link you create and confirm connections are correct.

  • i have check the link connection,and i think it is right

    that following is cap my link

    {
    CaptureLink_CreateParams capturePrm;
    CaptureLink_VipInstParams *pCaptureInstPrm;
    CaptureLink_OutParams *pCaptureOutPrm;
    DeiLink_CreateParams deiPrm[2];
    NsfLink_CreateParams nsfPrm[2];
    DupLink_CreateParams dupPrm;
    IpcLink_CreateParams ipcOutVpssPrm;

    UInt32 dupId0,mergeId,ipcOutVpssId,ipcInVideoId;;

    gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;
    gVcapModuleContext.deiId[0] = SYSTEM_LINK_ID_DEI_HQ_0;
    dupId0 = SYSTEM_VPSS_LINK_ID_DUP_0;
    mergeId = SYSTEM_VPSS_LINK_ID_MERGE_0;
    gVcapModuleContext.nsfId[0] = SYSTEM_LINK_ID_NSF_0;
    ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
    ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;

    //Cap_Link
    CaptureLink_CreateParams_Init(&capturePrm);
    capturePrm.numVipInst = 2;
    capturePrm.outQueParams[0].nextLink = dupId0;//gVcapModuleContext.deiId[0] ;//mergeId;//gVcapModuleContext.nsfId[0];
    // capturePrm.isPalMode = FALSE;
    capturePrm.tilerEnable = FALSE;
    // capturePrm.fakeHdMode = TRUE;
    // capturePrm.enableSdCrop = FALSE;
    // capturePrm.doCropInCapture = FALSE;
    capturePrm.numBufsPerCh = 12;
    // capturePrm.numExtraBufs = 0;
    // capturePrm.maxBlindAreasPerCh = 0;
    // capturePrm.overrideNumBufsInInstPrms = 0;

    // setting VIP0
    {
    pCaptureInstPrm = &capturePrm.vipInst[0];
    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;
    pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
    pCaptureInstPrm->standard = SYSTEM_STD_1080P_60;
    pCaptureInstPrm->numOutput = 1;
    pCaptureInstPrm->videoCaptureMode = SYSTEM_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VSYNC;
    pCaptureInstPrm->videoIfMode = SYSTEM_CAPT_VIDEO_IF_MODE_16BIT;
    pCaptureInstPrm->inScanFormat = SYSTEM_SF_PROGRESSIVE;
    pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV422I_YUYV;
    pCaptureOutPrm->scEnable = FALSE;
    pCaptureOutPrm->scOutWidth = 0;
    pCaptureOutPrm->scOutHeight = 0;
    pCaptureOutPrm->outQueId = 0;
    }

    {
    // start VP1 port
    pCaptureInstPrm = &capturePrm.vipInst[1];
    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP1_PORTA;
    pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
    pCaptureInstPrm->standard = SYSTEM_STD_1080P_60;
    pCaptureInstPrm->numOutput = 1;
    pCaptureOutPrm = &pCaptureInstPrm->outParams[0];
    pCaptureOutPrm->dataFormat = SYSTEM_DF_YUV420SP_UV;//SYSTEM_DF_YUV422I_YUYV;
    pCaptureOutPrm->scEnable = FALSE;
    pCaptureOutPrm->scOutWidth = 0;
    pCaptureOutPrm->scOutHeight = 0;
    pCaptureOutPrm->outQueId = 0;
    }

    System_linkCreate(gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));

    //Dup_Link
    dupPrm.inQueParams.prevLinkId = gVcapModuleContext.captureId;
    dupPrm.inQueParams.prevLinkQueId = 0;
    dupPrm.numOutQue = 2;
    dupPrm.outQueParams[0].nextLink = gVcapModuleContext.deiId[0];//ipcOutVpssId;//gVcapModuleContext.nsfId[0];//
    dupPrm.outQueParams[1].nextLink = mergeId;
    dupPrm.notifyNextLink = TRUE;
    System_linkCreate(dupId0, &dupPrm, sizeof(dupPrm));


    //DEI_Link
    MULTICH_INIT_STRUCT(DeiLink_CreateParams, deiPrm[0]);
    DeiLink_CreateParams_Init(&deiPrm[0]);
    deiPrm[0].inQueParams.prevLinkId = dupId0;
    deiPrm[0].inQueParams.prevLinkQueId = 0;
    deiPrm[0].outQueParams[1].nextLink = ipcOutVpssId;//gVcapModuleContext.nsfId[0];
    deiPrm[0].enableOut[1] = TRUE;
    deiPrm[0].tilerEnable[1] = FALSE;
    deiPrm[0].comprEnable = FALSE;
    deiPrm[0].setVipScYuv422Format = FALSE;//TRUE;
    deiPrm[0].enableDeiForceBypass = TRUE;
    deiPrm[0].enableDualVipOut = FALSE;
    //deiPrm[0].interlacedBypassMode = TRUE;
    deiPrm[0].inputFrameRate[DEI_LINK_OUT_QUE_VIP_SC] = 60;
    deiPrm[0].outputFrameRate[1] = 60;

    deiPrm[0].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode = DEI_SCALE_MODE_ABSOLUTE;
    deiPrm[0].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].absoluteResolution.outWidth = 1920;
    deiPrm[0].outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].absoluteResolution.outHeight = 1080;

    System_linkCreate(gVcapModuleContext.deiId[0] , &deiPrm[0], sizeof(deiPrm[0]));


    //ipcOutVpss
    MULTICH_INIT_STRUCT(IpcLink_CreateParams, ipcOutVpssPrm);
    ipcOutVpssPrm.inQueParams.prevLinkId = gVcapModuleContext.deiId[0] ;//dupId0;//gVcapModuleContext.nsfId[0];
    ipcOutVpssPrm.inQueParams.prevLinkQueId = 1;
    ipcOutVpssPrm.numOutQue = 1;
    ipcOutVpssPrm.outQueParams[0].nextLink = ipcInVideoId;
    ipcOutVpssPrm.notifyNextLink = FALSE;
    ipcOutVpssPrm.notifyPrevLink = TRUE;
    ipcOutVpssPrm.noNotifyMode = TRUE;
    System_linkCreate(ipcOutVpssId , &ipcOutVpssPrm , sizeof(ipcOutVpssPrm));

    }

  • i have do some test with cap ->dei->swms->dis,it run normally.

    so i cannot find the problem of above usecase link ,so who can tell me why?

    tks

    CaptureLink_CreateParams_Init(&capturePrm);
    capturePrm.numVipInst = 1;
    capturePrm.outQueParams[0].nextLink = gVcapModuleContext.deiId[0];//gVcapModuleContext.nsfId[0];//gVcapModuleContext.sclrId[0];//gVdisModuleContext.swMsId[0];//
    capturePrm.isPalMode = FALSE;
    capturePrm.tilerEnable = FALSE;
    capturePrm.fakeHdMode = TRUE;
    capturePrm.enableSdCrop = FALSE;
    capturePrm.doCropInCapture = FALSE;
    capturePrm.numBufsPerCh = 0;
    capturePrm.numExtraBufs = 0;
    capturePrm.maxBlindAreasPerCh = 0;
    capturePrm.overrideNumBufsInInstPrms = 0;

    // setting VIP0
    pCaptureInstPrm = &capturePrm.vipInst[0];
    pCaptureInstPrm->vipInstId = SYSTEM_CAPTURE_INST_VIP0_PORTA;
    pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
    pCaptureInstPrm->standard = SYSTEM_STD_1080P_60;
    pCaptureInstPrm->numOutput = 1;

    pCaptureInstPrm->videoCaptureMode = SYSTEM_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_ACTVID_VSYNC;
    pCaptureInstPrm->videoIfMode = SYSTEM_CAPT_VIDEO_IF_MODE_16BIT;
    pCaptureInstPrm->inScanFormat = SYSTEM_SF_PROGRESSIVE;

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

    System_linkCreate(gVcapModuleContext.captureId, &capturePrm, sizeof(capturePrm));


    //DEI_Link
    MULTICH_INIT_STRUCT(DeiLink_CreateParams, deiPrm[0]);
    DeiLink_CreateParams_Init(&deiPrm[0]);
    deiPrm[0].inQueParams.prevLinkId = gVcapModuleContext.captureId;//gVcapModuleContext.nsfId[0];//
    deiPrm[0].inQueParams.prevLinkQueId = 0;
    deiPrm[0].outQueParams[1].nextLink = gVdisModuleContext.swMsId[0];//gVdisModuleContext.displayId[0];
    deiPrm[0].enableOut[1] = TRUE;
    deiPrm[0].tilerEnable[1] = FALSE;
    deiPrm[0].comprEnable = FALSE;
    deiPrm[0].setVipScYuv422Format = FALSE;//TRUE;
    deiPrm[0].enableDeiForceBypass = TRUE;
    deiPrm[0].enableLineSkipSc = FALSE;
    deiPrm[0].enableDualVipOut = FALSE;
    deiPrm[0].interlacedBypassMode = TRUE;
    deiPrm[0].outputFrameRate[1] = 60;
    deiPrm[0].inputDeiFrameRate = 60;
    deiPrm[0].outputDeiFrameRate = 60;

    deiPrm[0].outScaleFactor[1][0].scaleMode = DEI_SCALE_MODE_RATIO;
    deiPrm[0].outScaleFactor[1][0].ratio.widthRatio.numerator = 1;
    deiPrm[0].outScaleFactor[1][0].ratio.widthRatio.denominator = 1;
    deiPrm[0].outScaleFactor[1][0].ratio.heightRatio.numerator = 1;
    deiPrm[0].outScaleFactor[1][0].ratio.heightRatio.denominator = 1;

    System_linkCreate(gVcapModuleContext.deiId[0] , &deiPrm[0], sizeof(deiPrm[0]));