#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,