Hello,
I would like to switch captureLink and nullSrcLink dynamically with selectLink into swMs. (capture 2 HD channels and create 2 nullSrc channels.) However, the selectLink can't select nullSrc correctly. (I got green video, frozen video, ...)
I could use selectLink to switch capture source by setting selectPrm.outQueChInfo[0].inChNum[], but it is failed if setting inChNum[] to nullSrc channels... (I am using RDK 3.0.)
Could you give me some clues to solve this problem? Thank you very much in advance.
Below is my use case of chain creation:
capture --2CH-->
|---+ merge --4CH--> select --2CH--> swMs --1CH--> display
nullSrc --2CH-->
Below is my code snap:
// capture link settings
capturePrm.numVipInst = 2 ;
capturePrm.outQueParams[0].nextLink = mergeId ;
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*2;
pCaptureInstPrm->videoDecoderId = ( vipInstId==0 ? SYSTEM_DEVICE_VID_DEC_TVP7002_DRV : SYSTEM_DEVICE_VID_DEC_TVP7002_VIP1_DRV );
pCaptureInstPrm->inDataFormat = SYSTEM_DF_YUV422P;
pCaptureInstPrm->standard = SYSTEM_STD_1080P_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;
}
// nullSrc link settings
nullSrcPrm.outQueParams.nextLink = mergeId ;
nullSrcPrm.timerPeriod = 33 ;
nullSrcPrm.inputInfo.numCh = 2 ;
for( i = 0; i < nullSrcPrm.inputInfo.numCh; i++ )
{
System_LinkChInfo *pChInfo;
pChInfo = &nullSrcPrm.inputInfo.chInfo[i];
pChInfo->dataFormat = SYSTEM_DF_YUV422SP_UV; // SYSTEM_DF_YUV420SP_UV ;
pChInfo->memType = SYSTEM_MT_NONTILEDMEM;
pChInfo->startX = 0;
pChInfo->startY = 0;
pChInfo->width = 1920 ; // 720
pChInfo->height = 1080 ; // 480
pChInfo->pitch[0] = SystemUtils_align(pChInfo->width+pChInfo->startX, SYSTEM_BUFFER_ALIGNMENT);
pChInfo->pitch[1] = pChInfo->pitch[0];
pChInfo->pitch[2] = 0;
pChInfo->scanFormat = SYSTEM_SF_PROGRESSIVE;
}
// merge link settings
mergePrm.inQueParams[0].prevLinkId = captureId ;
mergePrm.inQueParams[0].prevLinkQueId = 0 ;
mergePrm.inQueParams[1].prevLinkId = nullSrcId ;
mergePrm.inQueParams[1].prevLinkQueId = 0 ;
mergePrm.outQueParams.nextLink = selectId ;
mergePrm.notifyNextLink = TRUE ;
// select link settings
SelectLink_CreateParams_Init( &selectPrm );
selectPrm.inQueParams.prevLinkId = mergeId ;
selectPrm.inQueParams.prevLinkQueId = 0 ;
selectPrm.numOutQue = 1;
selectPrm.outQueParams[0].nextLink = swMsId ;
selectPrm.outQueChInfo[0].numOutCh = 2 ;
selectPrm.outQueChInfo[0].outQueId = 0 ;
selectPrm.outQueChInfo[0].inChNum[0] = 0 ; // 1: ok, 2: NG 3: NG
selectPrm.outQueChInfo[0].inChNum[1] = 1 ; // 0: ok, 2: NG 3: NG
