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.

why i get the frame from VIN0 PORTA is broken?

6175.multich_uw_fullfeature_cap.c
#include "mcfw/src_linux/mcfw_api/usecases/multich_common.h"
#include "mcfw/src_linux/mcfw_api/usecases/multich_ipcbits.h"
#include "uw_81xx_bas/bas_host/multich_usecase/main_interface_priv.h"


/* =============================================================================
 * Externs
 * ============================================================================= */

/* Merge Link for camera streams */
//#define NUM_DUP_LINK           (3)
#define NUM_MERGE_LINK              (1)
#define CAM_STREAM_MERGE_IDX        (0)
#define NUM_CAPTURE_DEVICES 1

//#define HDMIDIS_DUP_IDX        (0)

#define NUM_CAPTURE_DEVICES 1

#define GET_FRAME_FROM_VIP0PORTA  (1)
//
//
/* =============================================================================
 * Use case code
 * ============================================================================= */
#if GET_FRAME_FROM_VIP0PORTA 

static SystemVideo_Ivahd2ChMap_Tbl systemVid_encDecIvaChMapTbl = {
    .isPopulated = 1,
    .ivaMap[0] = {
				  .EncNumCh  = 2,
				  .EncChList = {0, 1},
                  .DecNumCh = 0,
                  .DecChList = {0, 0},
                  },
    .ivaMap[1] = {
                  .EncNumCh = 2,
                  .EncChList = {2, 3 },
                  .DecNumCh = 0,
                  .DecChList = {0, 0},
                  },

};
#if 0
static Void SetIpcFramesOutInQueInfo(System_LinkQueInfo *inQueInfo)
{
    Int i;

    inQueInfo->numCh =2;// gVencModuleContext.vencConfig.numPrimaryChn;
    for (i = 0; i < inQueInfo->numCh; i++)
    {
        inQueInfo->chInfo[i].bufType = SYSTEM_BUF_TYPE_VIDFRAME;
        inQueInfo->chInfo[i].dataFormat = SYSTEM_DF_YUV420SP_UV;
        inQueInfo->chInfo[i].memType    = SYSTEM_MT_NONTILEDMEM;
        inQueInfo->chInfo[i].scanFormat = SYSTEM_SF_PROGRESSIVE;
        inQueInfo->chInfo[i].startX     = 0;
        inQueInfo->chInfo[i].startY     = 0;
        inQueInfo->chInfo[i].width      = uw_ch_width;//1920;
        inQueInfo->chInfo[i].height     = uw_ch_height;//1080;
        inQueInfo->chInfo[i].pitch[0]   = uw_ch_width*2;
        inQueInfo->chInfo[i].pitch[1]   = uw_ch_width*2;
        inQueInfo->chInfo[i].pitch[2]   = uw_ch_width*2;
    }
}
#endif
Int32 multich_create_uw_fullftr()
{
	Int32 i;
	// VPSS ---->A8
	//A8--->c674
    System_LinkInfo framesProducerLinkInfo;
	
	//A8--->VIDEO
    CaptureLink_CreateParams capPrm;
    
	UInt32 mergeId[NUM_MERGE_LINK];
    MergeLink_CreateParams mergePrm[NUM_MERGE_LINK];
	//VPSS ---->A8
	IpcFramesOutLinkRTOS_CreateParams ipcFramesOutVpssToHostPrm;
	IpcFramesInLinkHLOS_CreateParams ipcFramesInHostPrm;
    //A8--->M3Video
	UInt32 ipcInVideoFrameId;

	IpcFramesOutLinkHLOS_CreateParams  ipcFramesOutHostPrm;
    IpcFramesInLinkRTOS_CreateParams   ipcFramesInVideoFromHostPrm;

	EncLink_CreateParams encPrm;
    //M3Video --->A8
	IpcBitsOutLinkRTOS_CreateParams ipcBitsOutVideoToHostPrm;
    IpcBitsInLinkHLOS_CreateParams ipcBitsInHostPrm;
//    VCAP_VIDDEC_PARAMS_S vidDecVideoModeArgs[NUM_CAPTURE_DEVICES];

    CaptureLink_VipInstParams *pCapInstPrm;
    CaptureLink_OutParams *pCapOutPrm;

	/* IPC struct init */
	MULTICH_INIT_STRUCT(IpcFramesOutLinkRTOS_CreateParams, ipcFramesOutVpssToHostPrm);
	MULTICH_INIT_STRUCT(IpcFramesInLinkHLOS_CreateParams, ipcFramesInHostPrm);
	MULTICH_INIT_STRUCT(IpcFramesOutLinkHLOS_CreateParams, ipcFramesOutHostPrm);
	MULTICH_INIT_STRUCT(IpcFramesInLinkRTOS_CreateParams,  ipcFramesInVideoFromHostPrm);

	MULTICH_INIT_STRUCT(IpcBitsOutLinkRTOS_CreateParams, ipcBitsOutVideoToHostPrm);
	MULTICH_INIT_STRUCT(IpcBitsInLinkHLOS_CreateParams, ipcBitsInHostPrm);
	
//	MULTICH_INIT_STRUCT(CaptureLink_CreateParams, capPrm);

    //System_init();
    MultiCh_detectBoard();
    System_linkControl(SYSTEM_LINK_ID_M3VPSS, SYSTEM_M3VPSS_CMD_RESET_VIDEO_DEVICES, NULL, 0, TRUE);
    System_linkControl(SYSTEM_LINK_ID_M3VIDEO, SYSTEM_COMMON_CMD_SET_CH2IVAHD_MAP_TBL,
                       &systemVid_encDecIvaChMapTbl, sizeof(SystemVideo_Ivahd2ChMap_Tbl), TRUE);


    gVcapModuleContext.captureId = SYSTEM_LINK_ID_CAPTURE;

    mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
	gVcamModuleContext.ipcFramesOutVpssToHostId  = SYSTEM_VPSS_LINK_ID_IPC_FRAMES_OUT_0;
	gVcamModuleContext.ipcFramesInHostId = SYSTEM_HOST_LINK_ID_IPC_FRAMES_IN_0;
	gVcamModuleContext.ipcFramesOutHostId = SYSTEM_HOST_LINK_ID_IPC_FRAMES_OUT_0;
    gMjpegModuleContext.mjpepEncId = SYSTEM_LINK_ID_MJPEG;

    ipcInVideoFrameId = SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_IN_0;
	
	gVencModuleContext.encId = SYSTEM_LINK_ID_VENC_0;
	
	gVencModuleContext.ipcBitsOutRTOSId = SYSTEM_VIDEO_LINK_ID_IPC_BITS_OUT_0;
    gVencModuleContext.ipcBitsInHLOSId = SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0;

	/* Camera Link params */
	CaptureLink_CreateParams_Init(&capPrm);
	
	capPrm.outQueParams[0].nextLink  = mergeId[CAM_STREAM_MERGE_IDX];
	capPrm.outQueParams[1].nextLink  = mergeId[CAM_STREAM_MERGE_IDX];

	/* This is for TVP5158 Audio Channels - Change it to 16 if there are 16
	 * audio channels connected in cascade */
	capPrm.numVipInst = 1;
    capPrm.tilerEnable = FALSE;
    capPrm.numBufsPerCh = 6;
    capPrm.numExtraBufs = 6;
    capPrm.numAudioChannels= 0;
    capPrm.fakeHdMode = FALSE;
	capPrm.isPalMode=FALSE;
	capPrm.enableSdCrop=FALSE;
	capPrm.doCropInCapture=FALSE;
	
	pCapInstPrm                     = &capPrm.vipInst[0];
	pCapInstPrm->vipInstId          = SYSTEM_CAPTURE_INST_VIP0_PORTA;
//	pCapInstPrm->videoDecoderId     = 0;//SYSTEM_DEVICE_VID_DEC_SII9135_DRV;// SYSTEM_DEVICE_VID_DEC_TVP7002_DRV;// SYSTEM_DEVICE_VID_DEC_TVP5158_DRV;
	//MultiCh_getSensorId(gUI_mcfw_config.sensorId);
	pCapInstPrm->inDataFormat       = SYSTEM_DF_YUV422P;//SYSTEM_DF_YUV422I_UYVY;// SYSTEM_DF_YUV422P;//  SYSTEM_DF_YUV420SP_UV;
	pCapInstPrm->standard           = SYSTEM_STD_1080P_30;
	pCapInstPrm->numOutput          = 2;
	
	/* First stream */
	pCapOutPrm                      = &pCapInstPrm->outParams[0];
	pCapOutPrm->dataFormat          = SYSTEM_DF_YUV420SP_UV;
	pCapOutPrm->scEnable            = FALSE;
	pCapOutPrm->scOutWidth          = 0;//uw_ch_width;
	pCapOutPrm->scOutHeight         = 0;//uw_ch_height;
	pCapOutPrm->outQueId          = 0;
	
	/* second stream */
	pCapOutPrm                      = &pCapInstPrm->outParams[1];
	pCapOutPrm->dataFormat          = SYSTEM_DF_YUV420SP_UV;
	pCapOutPrm->scEnable            = FALSE;
	pCapOutPrm->scOutWidth          = 0;//uw_ch_width;
	pCapOutPrm->scOutHeight         = 0;//uw_ch_height;
	pCapOutPrm->outQueId          = 1;

	
	mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkId = gVcapModuleContext.captureId;
	mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[0].prevLinkQueId = 0;
   
	mergePrm[CAM_STREAM_MERGE_IDX].numInQue = 2;
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkId = gVcapModuleContext.captureId;
    mergePrm[CAM_STREAM_MERGE_IDX].inQueParams[1].prevLinkQueId = 1;
    mergePrm[CAM_STREAM_MERGE_IDX].outQueParams.nextLink = gVcamModuleContext.ipcFramesOutVpssToHostId;
    mergePrm[CAM_STREAM_MERGE_IDX].notifyNextLink = TRUE;

	//set Frames out vpss to host link info
	ipcFramesOutVpssToHostPrm.baseCreateParams.noNotifyMode = TRUE;
	ipcFramesOutVpssToHostPrm.baseCreateParams.notifyNextLink = FALSE;
	ipcFramesOutVpssToHostPrm.baseCreateParams.notifyPrevLink = TRUE;
	ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkId =  mergeId[CAM_STREAM_MERGE_IDX];
	ipcFramesOutVpssToHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
	ipcFramesOutVpssToHostPrm.baseCreateParams.outQueParams[0].nextLink = gVcamModuleContext.ipcFramesInHostId;
	ipcFramesOutVpssToHostPrm.baseCreateParams.numOutQue=1;
	ipcFramesOutVpssToHostPrm.baseCreateParams.notifyProcessLink=FALSE;

	ipcFramesInHostPrm.baseCreateParams.noNotifyMode = TRUE;
	ipcFramesInHostPrm.baseCreateParams.notifyNextLink = FALSE;
	ipcFramesInHostPrm.baseCreateParams.notifyPrevLink = FALSE;//TRUE;
	ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkId = gVcamModuleContext.ipcFramesOutVpssToHostId;
	ipcFramesInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
	ipcFramesInHostPrm.baseCreateParams.outQueParams[0].nextLink = SYSTEM_LINK_ID_INVALID;;
	ipcFramesInHostPrm.baseCreateParams.numOutQue = 1;
	ipcFramesInHostPrm.exportOnlyPhyAddr = TRUE;

	ipcFramesInHostPrm.cbCtx = &gVcamModuleContext;
	ipcFramesInHostPrm.cbFxn = Vcam_ipcFramesInCbFxn;

	//A8 Frames to M3Video set
	ipcFramesOutHostPrm.baseCreateParams.noNotifyMode = TRUE;
	ipcFramesOutHostPrm.baseCreateParams.notifyNextLink = TRUE;
	ipcFramesOutHostPrm.baseCreateParams.notifyPrevLink = FALSE;
	ipcFramesOutHostPrm.baseCreateParams.numOutQue = 1;
	ipcFramesOutHostPrm.baseCreateParams.inQueParams.prevLinkId = SYSTEM_LINK_ID_INVALID;
	ipcFramesOutHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
	ipcFramesOutHostPrm.baseCreateParams.outQueParams[0].nextLink = ipcInVideoFrameId;
	//SetIpcFramesOutInQueInfo(&ipcFramesOutHostPrm.inQueInfo);

	ipcFramesInVideoFromHostPrm.baseCreateParams.noNotifyMode = TRUE;
	ipcFramesInVideoFromHostPrm.baseCreateParams.notifyNextLink = TRUE;
	ipcFramesInVideoFromHostPrm.baseCreateParams.notifyPrevLink = FALSE;
	ipcFramesInVideoFromHostPrm.baseCreateParams.numOutQue = 1;
	ipcFramesInVideoFromHostPrm.baseCreateParams.inQueParams.prevLinkId = gVcamModuleContext.ipcFramesOutHostId;
	ipcFramesInVideoFromHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
	ipcFramesInVideoFromHostPrm.baseCreateParams.outQueParams[0].nextLink = gVencModuleContext.encId;

	// init encode params
    /* Video Encoder Link params */
	MULTICH_INIT_STRUCT(EncLink_CreateParams, encPrm);
	{
	    encPrm.numBufPerCh[0] = 6; //D1
	    encPrm.numBufPerCh[1] = 6; //CIF]]
		
		EncLink_ChCreateParams *pLinkChPrm;
        EncLink_ChDynamicParams *pLinkDynPrm;
        VENC_CHN_DYNAMIC_PARAM_S *pDynPrm;
        VENC_CHN_PARAMS_S *pChPrm;

		for (i = 0; i < VENC_PRIMARY_CHANNELS; i++)
		{
			pLinkChPrm  = &encPrm.chCreateParams[i];
			pLinkDynPrm = &pLinkChPrm->defaultDynamicParams;

			pChPrm      = &gVencModuleContext.vencConfig.encChannelParams[i];
			pDynPrm     = &pChPrm->dynamicParam;
		
			pLinkChPrm->format = IVIDEO_H264HP;

			pLinkChPrm->profile                 = gVencModuleContext.vencConfig.h264Profile[i];
			pLinkChPrm->dataLayout              = IVIDEO_PROGRESSIVE;
			pLinkChPrm->fieldMergeEncodeEnable  = FALSE;
			pLinkChPrm->enableAnalyticinfo      = pChPrm->enableAnalyticinfo;
			pLinkChPrm->maxBitRate              = pChPrm->maxBitRate;
			pLinkChPrm->encodingPreset          = pChPrm->encodingPreset;
			pLinkChPrm->rateControlPreset       = IVIDEO_USER_DEFINED; //pChPrm->rcType;
			pLinkChPrm->enableHighSpeed         = FALSE;
			pLinkChPrm->enableWaterMarking      = pChPrm->enableWaterMarking;
			pLinkChPrm->StreamPreset            = gUI_mcfw_config.StreamPreset[i];

/*			pLinkChPrm->profile                 = VENC_CHN_BASELINE_PROFILE ;//gVencModuleContext.vencConfig.h264Profile[i];
			pLinkChPrm->dataLayout              = IVIDEO_PROGRESSIVE;
			pLinkChPrm->fieldMergeEncodeEnable  = FALSE;
			pLinkChPrm->enableAnalyticinfo      = pChPrm->enableAnalyticinfo;
			pLinkChPrm->maxBitRate              =  pChPrm->maxBitRate;
			pLinkChPrm->encodingPreset          = pChPrm->encodingPreset;
			pLinkChPrm->rateControlPreset       = IVIDEO_USER_DEFINED; //pChPrm->rcType;
			pLinkChPrm->enableHighSpeed         = TRUE;//FALSE;
			pLinkChPrm->enableWaterMarking      = pChPrm->enableWaterMarking;
			pLinkChPrm->StreamPreset            = gUI_mcfw_config.StreamPreset[i];
*/
			pLinkDynPrm->intraFrameInterval     = 30;//pDynPrm->intraFrameInterval;
			pLinkDynPrm->targetBitRate          = 1000*1000;//pDynPrm->targetBitRate;
			pLinkDynPrm->interFrameInterval     = 1;
			pLinkDynPrm->mvAccuracy             = IVIDENC2_MOTIONVECTOR_QUARTERPEL;
//			pLinkDynPrm->inputFrameRate         = 60;//pDynPrm->inputFrameRate;
			pLinkDynPrm->rcAlg                  = pDynPrm->rcAlg;
			pLinkDynPrm->qpMin                  = pDynPrm->qpMin;
			pLinkDynPrm->qpMax                  = pDynPrm->qpMax;
			pLinkDynPrm->qpInit                 = pDynPrm->qpInit;
			pLinkDynPrm->vbrDuration            = pDynPrm->vbrDuration;
			pLinkDynPrm->vbrSensitivity         = pDynPrm->vbrSensitivity;

//			encPrm.numBufPerCh[i] = 4;
//			gVencModuleContext.encFormat[i] = pLinkChPrm->format;
		}
	}

    /* Video Encoder Framerate */
   // encPrm.chCreateParams[0].defaultDynamicParams.interFrameInterval    = 0;
    encPrm.chCreateParams[0].defaultDynamicParams.inputFrameRate = 30;
    encPrm.chCreateParams[1].defaultDynamicParams.inputFrameRate = 30;
	encPrm.vsEnable = 0;//gUI_mcfw_config.vsEnable;
	encPrm.isVaUseCase = 0;
    for (i =0 ; i < 1; i++)
    {
        encPrm.chCreateParams[i].format = IVIDEO_MJPEG;
        encPrm.chCreateParams[i].profile = 0;
        encPrm.chCreateParams[i].dataLayout = IVIDEO_PROGRESSIVE;
        encPrm.chCreateParams[i].fieldMergeEncodeEnable = FALSE;
        encPrm.chCreateParams[i].defaultDynamicParams.intraFrameInterval = 30;
        encPrm.chCreateParams[i].encodingPreset = 0;
        encPrm.chCreateParams[i].enableAnalyticinfo = 0;
        encPrm.chCreateParams[i].enableWaterMarking = 0;
//        encPrm.chCreateParams[i].defaultDynamicParams.inputFrameRate = 25;
        encPrm.chCreateParams[i].rateControlPreset = 0;
        encPrm.chCreateParams[i].defaultDynamicParams.targetBitRate = 1000 * 1000;
        encPrm.chCreateParams[i].defaultDynamicParams.interFrameInterval = 1;
        encPrm.chCreateParams[i].defaultDynamicParams.mvAccuracy = 0;
    }

	encPrm.inQueParams.prevLinkId = ipcInVideoFrameId;
    encPrm.inQueParams.prevLinkQueId = 0;
    encPrm.outQueParams.nextLink = gVencModuleContext.ipcBitsOutRTOSId;

	/* IPC Bits Out VIDEO Link params */
	ipcBitsOutVideoToHostPrm.baseCreateParams.noNotifyMode = TRUE;//FALSE;
	ipcBitsOutVideoToHostPrm.baseCreateParams.notifyNextLink = FALSE;
	ipcBitsOutVideoToHostPrm.baseCreateParams.notifyPrevLink = FALSE;
    ipcBitsOutVideoToHostPrm.baseCreateParams.inQueParams.prevLinkId = gVencModuleContext.encId;
    ipcBitsOutVideoToHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    ipcBitsOutVideoToHostPrm.baseCreateParams.numOutQue = 1;
    ipcBitsOutVideoToHostPrm.baseCreateParams.outQueParams[0].nextLink = gVencModuleContext.ipcBitsInHLOSId;
    MultiCh_ipcBitsInitCreateParams_BitsOutRTOS(&ipcBitsOutVideoToHostPrm, TRUE);

    /* IPC Bits In HOST Link params */
	ipcBitsInHostPrm.baseCreateParams.noNotifyMode = TRUE;//FALSE;
	ipcBitsInHostPrm.baseCreateParams.notifyNextLink = FALSE;
	ipcBitsInHostPrm.baseCreateParams.notifyPrevLink = FALSE;//TRUE;
    ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkId = gVencModuleContext.ipcBitsOutRTOSId;
    ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
    MultiCh_ipcBitsInitCreateParams_BitsInHLOS(&ipcBitsInHostPrm);

    /* Links Creation */
    /* Camera Link */
    System_linkCreate (gVcapModuleContext.captureId, &capPrm, sizeof(capPrm));
    /* Merge Link */
    System_linkCreate(mergeId[CAM_STREAM_MERGE_IDX], &mergePrm[CAM_STREAM_MERGE_IDX], sizeof(mergePrm[CAM_STREAM_MERGE_IDX]));

	//out yuv 420 1080P to A8
	System_linkCreate(gVcamModuleContext.ipcFramesOutVpssToHostId, &ipcFramesOutVpssToHostPrm, sizeof(ipcFramesOutVpssToHostPrm));
	System_linkCreate(gVcamModuleContext.ipcFramesInHostId, &ipcFramesInHostPrm, sizeof(ipcFramesInHostPrm));

	System_linkGetInfo(gVcamModuleContext.ipcFramesInHostId,&framesProducerLinkInfo);
	OSA_assert(framesProducerLinkInfo.numQue == 1);
	ipcFramesOutHostPrm.inQueInfo = framesProducerLinkInfo.queInfo[0];
	//A8 out yuv420 to M3Video
	System_linkCreate(gVcamModuleContext.ipcFramesOutHostId, &ipcFramesOutHostPrm, sizeof(ipcFramesOutHostPrm));
	System_linkCreate(ipcInVideoFrameId, &ipcFramesInVideoFromHostPrm, sizeof(ipcFramesInVideoFromHostPrm));
#if 1
	// Video Encoder Link
    System_linkCreate(gVencModuleContext.encId, &encPrm, sizeof(encPrm));

	//M3Video to A8
	System_linkCreate(gVencModuleContext.ipcBitsOutRTOSId, &ipcBitsOutVideoToHostPrm, sizeof(ipcBitsOutVideoToHostPrm));
	System_linkCreate(gVencModuleContext.ipcBitsInHLOSId, &ipcBitsInHostPrm, sizeof(ipcBitsInHostPrm));
#endif
	return 0;
}


Void multich_delete_uw_fullftr()
{
    UInt32 mergeId[NUM_MERGE_LINK];
	UInt32 ipcInVideoFrameId;

    mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
    ipcInVideoFrameId = SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_IN_0;

	System_linkDelete(gVencModuleContext.ipcBitsInHLOSId);
	System_linkDelete(gVencModuleContext.ipcBitsOutRTOSId);
	System_linkDelete(gVencModuleContext.encId);
	System_linkDelete(ipcInVideoFrameId);
	System_linkDelete(gVcamModuleContext.ipcFramesOutHostId);
	System_linkDelete(gVcamModuleContext.ipcFramesInHostId);
	System_linkDelete(gVcamModuleContext.ipcFramesOutVpssToHostId);

    System_linkDelete(mergeId[CAM_STREAM_MERGE_IDX]);

    System_linkDelete(gVcapModuleContext.captureId);

    /* Reset the accumulated timer ticks */
    MultiCh_prfLoadCalcEnable(FALSE, TRUE, FALSE);

    OSA_printf("USECASE TEARDOWN DONE\n");
}


Int32 multich_start_uw_fullftr()
{
    UInt32 mergeId[NUM_MERGE_LINK];
	UInt32 ipcInVideoFrameId;
    
	mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
    ipcInVideoFrameId = SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_IN_0;

	//start Links
#if 1
	System_linkStart(gVencModuleContext.ipcBitsInHLOSId);
    System_linkStart(gVencModuleContext.ipcBitsOutRTOSId);
    System_linkStart(gVencModuleContext.encId);
#endif
    System_linkStart(ipcInVideoFrameId);

    System_linkStart(gVcamModuleContext.ipcFramesOutHostId);
    System_linkStart(gVcamModuleContext.ipcFramesInHostId);
    System_linkStart(gVcamModuleContext.ipcFramesOutVpssToHostId);

	System_linkStart(mergeId[CAM_STREAM_MERGE_IDX]);
	System_linkStart(gVcapModuleContext.captureId);

	return 0;
	
}
Void multich_stop_uw_fullftr()
{
    UInt32 mergeId[NUM_MERGE_LINK];
	UInt32 ipcInVideoFrameId;
    
	mergeId[CAM_STREAM_MERGE_IDX] = SYSTEM_VPSS_LINK_ID_MERGE_0;
    ipcInVideoFrameId = SYSTEM_VIDEO_LINK_ID_IPC_FRAMES_IN_0;

	//start Links
	System_linkStop(gVcapModuleContext.captureId);
	System_linkStop(mergeId[CAM_STREAM_MERGE_IDX]);
    System_linkStop(gVcamModuleContext.ipcFramesOutVpssToHostId);
    System_linkStop(gVcamModuleContext.ipcFramesInHostId);
    System_linkStop(gVcamModuleContext.ipcFramesOutHostId);
    System_linkStop(ipcInVideoFrameId);
    System_linkStop(gVencModuleContext.encId);
    System_linkStop(gVencModuleContext.ipcBitsOutRTOSId);
    
	System_linkStop(gVencModuleContext.ipcBitsInHLOSId);
}

#endif

i use ipnc rdk3.5.0, 8147, get frame from vin0 porta,

pVipCreateArgs->videoCaptureMode = VPS_CAPT_VIDEO_CAPTURE_MODE_SINGLE_CH_NON_MUX_DISCRETE_SYNC_HSYNC_VSYNC;
pVipCreateArgs->videoIfMode = VPS_CAPT_VIDEO_IF_MODE_16BIT;

i got the frame , but the frame is broken ? my image like this.

i set 1080P_30, but fps is 233 , very odd !!!

mylog:

 [m3vpss ]  *** CAPTURE Statistics ***
 [m3vpss ] 1017068: CAPTURE: Queued to driver = 232041, Dequeued from driver = 232027
 [m3vpss ] CAPTURE [0] Buf Q Status
 [m3vpss ] Empty Q -> count 0, wrPtr 0, rdPtr 0
 [m3vpss ] Full Q -> count 0, wrPtr 378, rdPtr 378
 [m3vpss ]  1029612: CAPTURE: Fields = 7009 (fps = 233), Total Resets = 0 (Avg 0 ms per reset)

Look forward your reply. Thanks,