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.

CaptureLink output 2 Ques,failed

Other Parts Discussed in Thread: TVP5158

Hi,

I am capturing 8 D1 from 2 TVP5158s devices and using VIP0-PORTA and VIP0-PORTB instances as follow:

VIP0-PORTA - first 4 channels.

VIP0-PORTB - secondary 4 channels.

now I want captureLink output 2 Ques

Que0:first 4 channels + secondary 4 channels

Que1:first 4 channels + secondary 4 channels

my link config:

for (i = 0; i < 2; i++)
{
 vidDecVideoModeArgs[i].vipInstId           = SYSTEM_CAPTURE_INST_VIP0_PORTA+i;
 vidDecVideoModeArgs[i].deviceId           = DEVICE_VID_DEC_TVP5158_DRV;
 vidDecVideoModeArgs[i].numChInDevice       = 4;

 vidDecVideoModeArgs[i].modeParams.videoIfMode    = DEVICE_CAPT_VIDEO_IF_MODE_8BIT;
 vidDecVideoModeArgs[i].modeParams.videoDataFormat  = SYSTEM_DF_YUV422P;
 vidDecVideoModeArgs[i].modeParams.standard    = SYSTEM_STD_MUX_4CH_D1;
 vidDecVideoModeArgs[i].modeParams.videoCaptureMode   = DEVICE_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_PIXEL_MUX_EMBEDDED_SYNC;
 vidDecVideoModeArgs[i].modeParams.videoSystem             = DEVICE_VIDEO_DECODER_VIDEO_SYSTEM_AUTO_DETECT;
 vidDecVideoModeArgs[i].modeParams.videoCropEnable         = FALSE;
 vidDecVideoModeArgs[i].modeParams.videoAutoDetectTimeout  = -1;
}
capturePrm.numVipInst              = 2;
capturePrm.tilerEnable              = FALSE; 
capturePrm.numBufsPerCh       = 32;
capturePrm.numExtraBufs          = 32;
capturePrm.outQueParams[0].nextLink  = deiId;
capturePrm.outQueParams[1].nextLink  = ipcOutVpssId;
for (vipInstId = 0; vipInstId < capturePrm.numVipInst; vipInstId++)
{
 pCaptureInstPrm                   = &capturePrm.vipInst[vipInstId];
 pCaptureInstPrm->vipInstId        = SYSTEM_CAPTURE_INST_VIP0_PORTA + vipInstId;
 pCaptureInstPrm->videoDecoderId   = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
 pCaptureInstPrm->inDataFormat     = SYSTEM_DF_YUV422P;
 pCaptureInstPrm->standard             = SYSTEM_STD_MUX_4CH_D1;
 pCaptureInstPrm->numOutput          = 2;
 
 pCaptureOutPrm                                = &pCaptureInstPrm->outParams[0];
 pCaptureOutPrm->dataFormat        = SYSTEM_DF_YUV422I_YUYV;
 pCaptureOutPrm->scEnable            = FALSE;
 pCaptureOutPrm->scOutWidth        = 0;
 pCaptureOutPrm->scOutHeight       = 0;
 pCaptureOutPrm->outQueId             = 0;
 pCaptureOutPrm                                = &pCaptureInstPrm->outParams[1];
 pCaptureOutPrm->dataFormat        = SYSTEM_DF_YUV422I_YUYV;
 pCaptureOutPrm->scEnable            = FALSE;
 pCaptureOutPrm->scOutWidth        = 0;
 pCaptureOutPrm->scOutHeight       = 0;
 pCaptureOutPrm->outQueId             = 1;
}

when I run,it throw assertion:

 0: SYSTEM: System Common Init in progress !!!
 0: SYSTEM: IPC init in progress !!!
 16: SYSTEM: CPU [DSP] syslink proc ID is [0] !!!
 16: SYSTEM: CPU [VIDEO-M3] syslink proc ID is [1] !!!
 16: SYSTEM: CPU [VPSS-M3] syslink proc ID is [2] !!!
 16: SYSTEM: CPU [HOST] syslink proc ID is [3] !!!
 16: SYSTEM: Creating MsgQ Heap [IPC_MSGQ_MSG_HEAP_3] ...
 18: SYSTEM: Creating MsgQ [HOST_MSGQ] ...
 20: SYSTEM: Creating MsgQ [HOST_ACK_MSGQ] ...
 22: SYSTEM: Opening MsgQ [DSP_MSGQ] ...
 22: SYSTEM: Opening MsgQ [VIDEO-M3_MSGQ] ...
 23: SYSTEM: Opening MsgQ [VPSS-M3_MSGQ] ...
 24: SYSTEM: Notify register to [DSP] line 0, event 15 ...
 24: SYSTEM: Notify register to [VIDEO-M3] line 0, event 15 ...
 25: SYSTEM: Notify register to [VPSS-M3] line 0, event 15 ...
 26: SYSTEM: IPC init DONE !!!
 27: SYSTEM: Creating ListMP [HOST_IPC_OUT_24] in region 0 ...
 29: SYSTEM: Creating ListMP [HOST_IPC_IN_24] in region 0 ...
 30: SYSTEM: ListElem Shared Addr = 0x63d30880
 31: SYSTEM: Creating ListMP [HOST_IPC_OUT_25] in region 0 ...
 33: SYSTEM: Creating ListMP [HOST_IPC_IN_25] in region 0 ...
 34: SYSTEM: ListElem Shared Addr = 0x63d65a80
 36: SYSTEM: Creating ListMP [HOST_IPC_OUT_19] in region 0 ...
 38: SYSTEM: Creating ListMP [HOST_IPC_IN_19] in region 0 ...
 39: SYSTEM: ListElem Shared Addr = 0x63d9ac80
 40: SYSTEM: Creating ListMP [HOST_IPC_OUT_20] in region 0 ...
 42: SYSTEM: Creating ListMP [HOST_IPC_IN_20] in region 0 ...
 44: SYSTEM: ListElem Shared Addr = 0x63dddf80
 45: SYSTEM: Creating ListMP [HOST_IPC_OUT_21] in region 0 ...
 47: SYSTEM: Creating ListMP [HOST_IPC_IN_21] in region 0 ...
 48: SYSTEM: ListElem Shared Addr = 0x63e21280
 64: SYSTEM: System Common Init Done !!!
 VCAP: DEVICE-0 (0x5c): Chip ID 0x5158, Rev 0x0002, Firmware 0x0000 !!!
 [m3vpss ] WARNING!!.Tiler Memory cannot be accessed by M3 in 2G build.Will not disable
 VCAP: DEVICE-0 (0x5c): Detected video (720x288@50Hz, 1) !!!
 VCAP: DEVICE-1 (0x5d): Chip ID 0x5158, Rev 0x0002, Firmware 0x0000 !!!
 VCAP: DEVICE-1 (0x5d): Detected video (720x288@50Hz, 1) !!!
 TVP5158: 0x5c: Downloading patch ...
 TVP5158: 0x5c: Downloading patch ... DONE !!!
 TVP5158: 0x5c: 5158:0002:0302
 TVP5158: 0x5d: Downloading patch ...
 TVP5158: 0x5d: Downloading patch ... DONE !!!
 TVP5158: 0x5d: 5158:0002:0302
 [m3vpss ]  13882: CAPTURE: Create in progress !!!
 [m3vpss ]  CAPTURE:CaptureLink_CreateParams:


7611:!!!SLAVE CORE [VPSS-M3] DOWN!!!
SystemLink_copySlaveCoreExceptionContext:120
mmap of [0xbe020000:36864]
mmap virt addresss:0x40340000
munmap of [0x40340000:36864]
SystemLink_copySlaveCoreExceptionContext:127
SystemLink_handleSlaveCoreException:149


7617:!!!SLAVE CORE DOWN!!!.EXCEPTION INFO DUMP

 !!HW EXCEPTION ACTIVE (0/1): [0]

 !!EXCEPTION CORE NAME      : [VPSS-M3]

 !!EXCEPTION TASK NAME      : [CAPTURE ]

 !!EXCEPTION LOCATION       : [links_m3vpss/capture/captureLink_drv.c:878]

 !!EXCEPTION INFO           : [pInst->captureVipHandle != NULL]

 !!EXCEPTION CCS CRASH DUMP FORMAT FILE STORED @ ./CCS_CRASH_DUMP_VPSS-M3.txt
SystemLink_handleSlaveCoreException:154
 [m3vpss ]  13916: CAPTURE: VIP0 PortA capture mode is [ 8-bit, Pixel-mux Embedded Sync] !!!
 [m3vpss ]  13916: Assertion @ Line: 878 in links_m3vpss/capture/captureLink_drv.c: pInst->captureVipHandle != NULL : failed !!!

any sugesstions???

  • Looks like your FVID2_create() call is failing. You are on which version of RDK?

    Could you share complete Usecase file?

  • Hi Ritesh Rajore,thanks for your reply,

    my RDK ver is DVRRDK_04.00.00.03

    and my usecase:

    int EightChan_CreateWriteBitStream(void)
    {
    	struct  timeval			ts,te;
    	int ret=0;
    	UInt32 vipInstId;
    	int i, chId;
        	int deiChIdx;
    	CaptureLink_CreateParams				capturePrm;
    	CaptureLink_VipInstParams				*pCaptureInstPrm;
    	CaptureLink_OutParams					*pCaptureOutPrm;
    	DeiLink_CreateParams        				deiPrm;
    	SclrLink_CreateParams					sclrPrm;
    	NsfLink_CreateParams					nsfPrm;
    	IpcLink_CreateParams					IpcOutVpssPrm;
    	IpcLink_CreateParams					*pIpcOutVpssPrm;
    	IpcLink_CreateParams					IpcInVideoPrm;
    	IpcLink_CreateParams					*pIpcInVideoPrm;
    	EncLink_CreateParams					EncPrm;
    	EncLink_CreateParams					*pEncPrm;
    	IpcBitsOutLinkRTOS_CreateParams		IpcBitsOutVideoPrm;
    	IpcBitsOutLinkRTOS_CreateParams 		*pIpcBitsOutVideoPrm;
    	IpcBitsInLinkHLOS_CreateParams			IpcBitsInHostPrm;
    	IpcBitsInLinkHLOS_CreateParams			*pIpcBitsInHostPrm;
    	IpcFramesInLinkRTOS_CreateParams 		 ipcFramesInDspPrm;
    	IpcFramesOutLinkRTOS_CreateParams 	ipcFramesOutVpssPrm;
    	AlgLink_CreateParams					dspAlgPrm;
    	HelloWorldLink_CreateParams		helloWorldPrm; 
    	Uint32 					captureId;
    	Uint32 					deiId;
    	Uint32					sclrId;
    	Uint32					nsfId;
    	Uint32					ipcOutVpssId;
    	Uint32					ipcInVideoId;
    	Uint32					encId;
    	Uint32					ipcBitsOutVideoId;
    	Uint32					ipcBitsInHostId;
    	Uint32					dspAlgId;
    	Uint32					helloWorldId;
    	Uint32					ipcFramesOutVpssId;
    	Uint32					ipcFramesInDspId;
    	UInt16					osdFormat[8];
    	int 						status;
    	
    	VCAP_DEVICE_CREATE_PARAM_S        vidDecVideoModeArgs[2];
    	
    	System_init();
    	Vpss_reset();
    	video_setIvahdMap(&systemVid_encDecIvaChMapTbl);
    	SystemTiler_disableAllocator();
    
    	CaptureLink_CreateParams_Init(&capturePrm);
    	DeiLink_CreateParams_Init(&deiPrm);
    	SclrLink_CreateParams_Init(&sclrPrm);
    	NsfLink_CreateParams_Init(&nsfPrm);
    	IpcLink_CreateParams_Init(&IpcOutVpssPrm);
    	IpcLink_CreateParams_Init(&IpcInVideoPrm);
    	EncLink_CreateParams_Init(&EncPrm);
    	IpcBitsOutLinkRTOS_CreateParams_Init(&IpcBitsOutVideoPrm);
    	IpcBitsInLinkHLOS_CreateParams_Init(&IpcBitsInHostPrm);
    	IpcFramesInLinkRTOS_CreateParams_Init(&ipcFramesInDspPrm);
    	IpcFramesOutLinkRTOS_CreateParams_Init(&ipcFramesOutVpssPrm);
    	AlgLink_CreateParams_Init(&dspAlgPrm);
    	HelloWorldLink_CreateParams_Init(&helloWorldPrm);
    
    	captureId = SYSTEM_LINK_ID_CAPTURE;
    	deiId = SYSTEM_LINK_ID_DEI_HQ_0;
    	sclrId = SYSTEM_LINK_ID_SCLR_INST_0;
    	nsfId = SYSTEM_LINK_ID_NSF_0;
    	ipcOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_OUT_M3_0;
    	ipcInVideoId = SYSTEM_VIDEO_LINK_ID_IPC_IN_M3_0;
    	encId = SYSTEM_LINK_ID_VENC_0;
    	ipcBitsOutVideoId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
    	ipcBitsInHostId   = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;
    	ipcFramesOutVpssId = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
    	ipcFramesInDspId = SYSTEM_DSP_LINK_ID_IPC_FRAMES_IN_0;
    	dspAlgId = SYSTEM_LINK_ID_ALG_0  ;
    	helloWorldId = SYSTEM_LINK_ID_HELLOWORLD_0  ;
    
    
    	capturePrm.numVipInst       			= 2;
    	capturePrm.tilerEnable      			= FALSE;	
    	capturePrm.numBufsPerCh     		= NUM_BUFS_PER_CH;
    	capturePrm.numExtraBufs			= NUM_BUFS_PER_CH;	
    	capturePrm.outQueParams[0].nextLink = deiId;
    	capturePrm.outQueParams[1].nextLink = ipcOutVpssId;
    	for (vipInstId = 0; vipInstId < capturePrm.numVipInst; vipInstId++)
    	{
    		pCaptureInstPrm                 				= &capturePrm.vipInst[vipInstId];
    		pCaptureInstPrm->vipInstId      			= SYSTEM_CAPTURE_INST_VIP0_PORTA + vipInstId;
    		pCaptureInstPrm->videoDecoderId 		= SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
    		pCaptureInstPrm->inDataFormat   		= SYSTEM_DF_YUV422P;
    		pCaptureInstPrm->standard       			= SYSTEM_STD_MUX_4CH_D1;
    		pCaptureInstPrm->numOutput      		= 2;
    		
    		pCaptureOutPrm                  			= &pCaptureInstPrm->outParams[0];
    		pCaptureOutPrm->dataFormat      		= SYSTEM_DF_YUV422I_YUYV;
    		pCaptureOutPrm->scEnable        			= FALSE;
    		pCaptureOutPrm->scOutWidth      		= 0;
    		pCaptureOutPrm->scOutHeight     		= 0;
    		pCaptureOutPrm->outQueId        		= 0;
    		pCaptureOutPrm                  			= &pCaptureInstPrm->outParams[1];
    		pCaptureOutPrm->dataFormat      		= SYSTEM_DF_YUV422SP_UV;
    		pCaptureOutPrm->scEnable        			= FALSE;
    		pCaptureOutPrm->scOutWidth      		= 0;
    		pCaptureOutPrm->scOutHeight     		= 0;
    		pCaptureOutPrm->outQueId        		= 1;
    	}
    	
    	for (i = 0; i < 2; i++)
    	{
    		vidDecVideoModeArgs[i].vipInstId        					= SYSTEM_CAPTURE_INST_VIP0_PORTA+i;
    		vidDecVideoModeArgs[i].deviceId         					= DEVICE_VID_DEC_TVP5158_DRV;
    		vidDecVideoModeArgs[i].numChInDevice    				= 4;
    
    		vidDecVideoModeArgs[i].modeParams.videoIfMode          	  	= DEVICE_CAPT_VIDEO_IF_MODE_8BIT;
    		vidDecVideoModeArgs[i].modeParams.videoDataFormat		= SYSTEM_DF_YUV422P;
    		vidDecVideoModeArgs[i].modeParams.standard 				= SYSTEM_STD_MUX_4CH_D1;
    		vidDecVideoModeArgs[i].modeParams.videoCaptureMode 		= DEVICE_CAPT_VIDEO_CAPTURE_MODE_MULTI_CH_PIXEL_MUX_EMBEDDED_SYNC;
    		vidDecVideoModeArgs[i].modeParams.videoSystem            	= DEVICE_VIDEO_DECODER_VIDEO_SYSTEM_AUTO_DETECT;
    		vidDecVideoModeArgs[i].modeParams.videoCropEnable        	= FALSE;
    		vidDecVideoModeArgs[i].modeParams.videoAutoDetectTimeout = -1;
    	}
    	
    	Vcap_deviceCreate(vidDecVideoModeArgs, 2);
    	Vcap_deviceControl(0, DEVICE_CMD_START, NULL, NULL);	
    	Vcap_deviceControl(1, DEVICE_CMD_START, NULL, NULL);	
    
    	deiPrm.inQueParams.prevLinkId    = captureId;
    	deiPrm.inQueParams.prevLinkQueId = 0;
    	deiPrm.enableOut[DEI_LINK_OUT_QUE_DEI_SC]                		= FALSE;
    	deiPrm.outQueParams[DEI_LINK_OUT_QUE_VIP_SC].nextLink		= ipcFramesOutVpssId;
    	deiPrm.numBufsPerCh[DEI_LINK_OUT_QUE_VIP_SC] 				= NUM_BUFS_PER_CH;
    	deiPrm.setVipScYuv422Format							= FALSE;
    	deiPrm.inputFrameRate[DEI_LINK_OUT_QUE_VIP_SC]       = 60;
    	deiPrm.outputFrameRate[DEI_LINK_OUT_QUE_VIP_SC]      = 60;
    	deiPrm.inputDeiFrameRate = INPUT_DEI_FRAME_RATE;
    	deiPrm.outputDeiFrameRate = CIF_OUTPUT_FRAME_RATE;
    	deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode    = DEI_SCALE_MODE_RATIO;
           deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.numerator    = 1;
           deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.denominator  = 2;
           deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.numerator   = 1;
           deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.denominator = 2;
    	for (deiChIdx = 1; deiChIdx < DEI_LINK_MAX_CH; deiChIdx++)
    	{
    	    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][deiChIdx] =
    	        deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0];
    	}
    	deiPrm.enableOut[DEI_LINK_OUT_QUE_VIP_SC]            			= TRUE;
    	deiPrm.enableOut[DEI_LINK_OUT_QUE_VIP_SC_SECONDARY_OUT]  = FALSE;
    	deiPrm.tilerEnable[DEI_LINK_OUT_QUE_DEI_SC]          			= FALSE;
    	deiPrm.tilerEnable[DEI_LINK_OUT_QUE_VIP_SC]          		= FALSE;
    	deiPrm.comprEnable									= FALSE;
    	deiPrm.enableDeiForceBypass							= FALSE;
    	deiPrm.enableLineSkipSc								= FALSE;	
           
    
    	ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkId = deiId;
    	ipcFramesOutVpssPrm.baseCreateParams.inQueParams.prevLinkQueId = 1;
    	ipcFramesOutVpssPrm.baseCreateParams.notifyPrevLink = TRUE;
    	ipcFramesOutVpssPrm.baseCreateParams.numOutQue = 1;
    	ipcFramesOutVpssPrm.baseCreateParams.outQueParams[0].nextLink = ipcFramesInDspId ;
    	ipcFramesOutVpssPrm.baseCreateParams.notifyNextLink = TRUE;
    	ipcFramesOutVpssPrm.baseCreateParams.processLink = SYSTEM_LINK_ID_INVALID;
    	ipcFramesOutVpssPrm.baseCreateParams.notifyProcessLink = FALSE;
    	ipcFramesOutVpssPrm.baseCreateParams.noNotifyMode = FALSE;
    
    	ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkId = ipcFramesOutVpssId;
    	ipcFramesInDspPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    	ipcFramesInDspPrm.baseCreateParams.numOutQue   = 1;
    	ipcFramesInDspPrm.baseCreateParams.outQueParams[0].nextLink = helloWorldId;
    	ipcFramesInDspPrm.baseCreateParams.notifyPrevLink = TRUE;
    	ipcFramesInDspPrm.baseCreateParams.notifyNextLink = TRUE;
    	ipcFramesInDspPrm.baseCreateParams.noNotifyMode   = FALSE;
    
    	helloWorldPrm.inQueParams.prevLinkId = ipcFramesInDspId;	
    	helloWorldPrm.inQueParams.prevLinkQueId = 0;
    
    	pIpcOutVpssPrm = &(IpcOutVpssPrm);
    	pIpcOutVpssPrm->inQueParams.prevLinkId		= captureId;
    	pIpcOutVpssPrm->inQueParams.prevLinkQueId		= 1;	
    	pIpcOutVpssPrm->numOutQue					= 1;
    	pIpcOutVpssPrm->outQueParams[0].nextLink		= ipcInVideoId;
    	pIpcOutVpssPrm->notifyNextLink					= TRUE;
    	pIpcOutVpssPrm->notifyPrevLink					= TRUE;
    	pIpcOutVpssPrm->noNotifyMode					= FALSE;
    
    	pIpcInVideoPrm = &(IpcInVideoPrm);
    	pIpcInVideoPrm->inQueParams.prevLinkId	= ipcOutVpssId;
    	pIpcInVideoPrm->inQueParams.prevLinkQueId	= 0;
    	pIpcInVideoPrm->numOutQue				= 1;
    	pIpcInVideoPrm->outQueParams[0].nextLink	= encId;
    	pIpcInVideoPrm->notifyNextLink			= TRUE;
    	pIpcInVideoPrm->notifyPrevLink			= TRUE;
    	pIpcInVideoPrm->noNotifyMode			= FALSE;
    
    	pEncPrm = &(EncPrm);
    	for(i=0;i<8;i++)
    	{
    		pEncPrm->chCreateParams[i].format	= IVIDEO_H264HP;
    		pEncPrm->chCreateParams[i].profile	= IH264_HIGH_PROFILE;
    		pEncPrm->chCreateParams[i].dataLayout = IVIDEO_FIELD_SEPARATED;
    		pEncPrm->chCreateParams[i].fieldMergeEncodeEnable  = FALSE;
    		pEncPrm->chCreateParams[i].defaultDynamicParams.intraFrameInterval = 100;
    		pEncPrm->chCreateParams[i].encodingPreset = XDM_DEFAULT;
    		pEncPrm->chCreateParams[i].enableAnalyticinfo = 0;
    		pEncPrm->chCreateParams[i].rateControlPreset = IVIDEO_STORAGE;
    		pEncPrm->chCreateParams[i].defaultDynamicParams.inputFrameRate = 25;
    		pEncPrm->chCreateParams[i].defaultDynamicParams.targetBitRate = 2*1000*1000;
    		pEncPrm->chCreateParams[i].defaultDynamicParams.interFrameInterval = 1;
    		pEncPrm->chCreateParams[i].defaultDynamicParams.mvAccuracy = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
    	}
    
    	pEncPrm->inQueParams.prevLinkId = ipcInVideoId;
    	pEncPrm->inQueParams.prevLinkQueId = 0;
    	pEncPrm->outQueParams.nextLink = ipcBitsOutVideoId;
    
    	pIpcBitsOutVideoPrm = &(IpcBitsOutVideoPrm);
    	pIpcBitsOutVideoPrm->baseCreateParams.inQueParams.prevLinkId	= encId;
    	pIpcBitsOutVideoPrm->baseCreateParams.inQueParams.prevLinkQueId = 0;
    	pIpcBitsOutVideoPrm->baseCreateParams.numOutQue 				= 1;
    	pIpcBitsOutVideoPrm->baseCreateParams.outQueParams[0].nextLink	= ipcBitsInHostId;
    	pIpcBitsOutVideoPrm->baseCreateParams.noNotifyMode				= TRUE;
    	pIpcBitsOutVideoPrm->baseCreateParams.notifyNextLink			= FALSE;
    	pIpcBitsOutVideoPrm->baseCreateParams.notifyPrevLink			= TRUE;
    
    	pIpcBitsInHostPrm = &(IpcBitsInHostPrm);
    	pIpcBitsInHostPrm->baseCreateParams.inQueParams.prevLinkId		= ipcBitsOutVideoId;
    	pIpcBitsInHostPrm->baseCreateParams.inQueParams.prevLinkQueId	= 0;
    	pIpcBitsInHostPrm->baseCreateParams.outQueParams[0].nextLink	= SYSTEM_LINK_ID_INVALID;
    	pIpcBitsInHostPrm->baseCreateParams.noNotifyMode = TRUE;
    	pIpcBitsInHostPrm->cbFxn = EightChan_bitsGetCbFxn;	
    	pIpcBitsInHostPrm->cbCtx = &g_thread_sync;	
    	pIpcBitsInHostPrm->baseCreateParams.notifyNextLink = FALSE;
    	pIpcBitsInHostPrm->baseCreateParams.notifyPrevLink = FALSE;
    
    
    	System_linkCreate(captureId, &capturePrm, sizeof(CaptureLink_CreateParams));
    	System_linkCreate(deiId,&(deiPrm), sizeof(DeiLink_CreateParams));
    	System_linkCreate(ipcFramesOutVpssId, &ipcFramesOutVpssPrm, sizeof(ipcFramesOutVpssPrm));
    	System_linkCreate(ipcFramesInDspId, &ipcFramesInDspPrm, sizeof(ipcFramesInDspPrm));
    	System_linkCreate(helloWorldId , &helloWorldPrm, sizeof(helloWorldPrm));
    	System_linkCreate(ipcOutVpssId, &IpcOutVpssPrm, sizeof(IpcLink_CreateParams));
    	System_linkCreate(ipcInVideoId, &IpcInVideoPrm, sizeof(IpcLink_CreateParams));
    	System_linkCreate(encId, &EncPrm, sizeof(EncLink_CreateParams));
    	System_linkCreate(ipcBitsOutVideoId, &IpcBitsOutVideoPrm, sizeof(IpcBitsOutLinkRTOS_CreateParams));
    	System_linkCreate(ipcBitsInHostId, &IpcBitsInHostPrm, sizeof(IpcBitsInLinkHLOS_CreateParams));
    
    	System_linkStart(ipcBitsInHostId);
    	System_linkStart(ipcBitsOutVideoId);
    	System_linkStart(encId);
    	System_linkStart(ipcInVideoId);
    	System_linkStart(ipcOutVpssId);
    	System_linkStart(ipcFramesInDspId);
    	System_linkStart(helloWorldId);
    	System_linkStart(ipcFramesOutVpssId);
    	System_linkStart(deiId);
    	System_linkStart(captureId);
    
    

  • You are setting numOutput = 2 in capture VIP inst params. This means you are configuring the VIP for dual output mode. It is not possible to have dual output when VIP is configured for multi channel capture as in your case. You should dup the output of captureLink queue 0 by addign dupLink to have two output queues from capture.

  • Hi Badri,thank you.

    1.you mean if I set

    pCaptureInstPrm->standard = SYSTEM_STD_MUX_XX_XX;

    all there is *MUX* name in the standard macro,the captureLink can't output more than 2 Que,is that right???

    2.and if I set

    pCaptureInstPrm->standard = SYSTEM_STD_PAL;

    some other no *MUX* name in the standard macro,if my VIP is:

    VIP0-PORTA - first 1 channel.

    VIP0-PORTB - secondary 1 channel.

    VIP1-PORTA - third 1 channel.

    VIP1-PORTB - fourth 1 channel.

    now I can set 2 output of the capture like this:

    capturePrm.numVipInst              = 4;
    capturePrm.tilerEnable              = FALSE; 
    capturePrm.numBufsPerCh       = 32;
    capturePrm.numExtraBufs          = 32;
    capturePrm.outQueParams[0].nextLink  = deiId;
    capturePrm.outQueParams[1].nextLink  = ipcOutVpssId;
    for (vipInstId = 0; vipInstId < capturePrm.numVipInst; vipInstId++)
    {
     pCaptureInstPrm                   = &capturePrm.vipInst[vipInstId];
     pCaptureInstPrm->vipInstId        = SYSTEM_CAPTURE_INST_VIP0_PORTA + vipInstId;
     pCaptureInstPrm->videoDecoderId   = SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
     pCaptureInstPrm->inDataFormat     = SYSTEM_DF_YUV422P;
     pCaptureInstPrm->standard             = SYSTEM_STD_PAL;
     pCaptureInstPrm->numOutput          = 2;
     
     pCaptureOutPrm                                = &pCaptureInstPrm->outParams[0];
     pCaptureOutPrm->dataFormat        = SYSTEM_DF_YUV422I_YUYV;
     pCaptureOutPrm->scEnable            = FALSE;
     pCaptureOutPrm->scOutWidth        = 0;
     pCaptureOutPrm->scOutHeight       = 0;
     pCaptureOutPrm->outQueId             = 0;
     pCaptureOutPrm                                = &pCaptureInstPrm->outParams[1];
     pCaptureOutPrm->dataFormat        = SYSTEM_DF_YUV422I_YUYV;
     pCaptureOutPrm->scEnable            = FALSE;
     pCaptureOutPrm->scOutWidth        = 0;
     pCaptureOutPrm->scOutHeight       = 0;
     pCaptureOutPrm->outQueId             = 1;
    }

    the dei and ipcoutvpss there will be all containing 4 channels,is that right???

    3.like you said,in my usecase,the capture can't output 2 ques,is it possible use the dei link to output more than 1 que.config like:

    deiPrm.inQueParams.prevLinkId    = captureId;
    deiPrm.inQueParams.prevLinkQueId = 0;
    deiPrm.outQueParams[DEI_LINK_OUT_QUE_VIP_SC].nextLink = sclrId;
    deiPrm.outQueParams[DEI_LINK_OUT_QUE_DEI_SC].nextLink = ipcFramesOutVpssId;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].scaleMode    = DEI_SCALE_MODE_RATIO;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.numerator    = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.widthRatio.denominator  = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.numerator   = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0].ratio.heightRatio.denominator = 1;
    for (deiChIdx = 1; deiChIdx < DEI_LINK_MAX_CH; deiChIdx++)
    {
        deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][deiChIdx] =
            deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_VIP_SC][0];
    }
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].scaleMode    = DEI_SCALE_MODE_RATIO;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.numerator    = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.widthRatio.denominator  = 2;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.numerator   = 1;
    deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0].ratio.heightRatio.denominator = 2;
    for (deiChIdx = 1; deiChIdx < DEI_LINK_MAX_CH; deiChIdx++)
    {
        deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][deiChIdx] =
            deiPrm.outScaleFactor[DEI_LINK_OUT_QUE_DEI_SC][0];
    }
    deiPrm.enableOut[DEI_LINK_OUT_QUE_VIP_SC]             = TRUE;
    deiPrm.enableOut[DEI_LINK_OUT_QUE_DEI_SC]             = TRUE;

    4.which doc reference that if the VIP configured for multi channel capture,it can't output 2 ques,the docs in the dvr_rdk didn't mention this.

  • ling ling said:

    1.you mean if I set

    pCaptureInstPrm->standard = SYSTEM_STD_MUX_XX_XX;

    all there is *MUX* name in the standard macro,the captureLink can't output more than 2 Que,is that right???

    Yes dual output from VIP is not possible in MULTI CH mode,

    ling ling said:

    2.and if I set

    pCaptureInstPrm->standard = SYSTEM_STD_PAL;

    some other no *MUX* name in the standard macro,if my VIP is:

    VIP0-PORTA - first 1 channel.

    VIP0-PORTB - secondary 1 channel.

    VIP1-PORTA - third 1 channel.

    VIP1-PORTB - fourth 1 channel.

    now I can set 2 output of the capture like this

    Yes.

    ling ling said:
    3.like you said,in my usecase,the capture can't output 2 ques,is it possible use the dei link to output more than 1 que.config like

    Yes.DEI supports dual output. But in your case why don't you use dup ? Why do you require two copies of the captured frame if both resolution and format are the same ?

    ling ling said:
    4.which doc reference that if the VIP configured for multi channel capture,it can't output 2 ques,the docs in the dvr_rdk didn't mention this.

    Refer HDVPSS_UserGuide.pdf under ti_tools/hdvpss

  • Thank you again Badri.