Hi,
I'm running RDK 4.01 with DM8148 custom board.
My usecase is cap --> swms --> nfs --> enc --> dec --> display
When Utils_bitbufGetEmptyBuf() trying to get an empty buffer, the returned buffer is always NULL,
then encoder keeps skipping all the received frames
[m3video] *** ENCODE Statistics ***
[m3video]
[m3video] Elasped Time : 1091 secs
[m3video]
[m3video]
[m3video] CH | In Recv In Skip In User Out Latency
[m3video] Num | FPS FPS Skip FPS FPS Min / Max
[m3video] --------------------------------------------
[m3video] 0 | 66 66 0 0 255 / 5029
[m3video]
[m3video] Multi Channel Encode Average Submit Batch Size
[m3video] Max Submit Batch Size : 24
[m3video] IVAHD_0 Average Batch Size : 1
[m3video] IVAHD_0 Max achieved Batch Size : 1
[m3video]
[m3video] Multi Channel Encode Batch break Stats
[m3video] Total Number of Batches created: 0
[m3video] All numbers are based off total number of Batches created
[m3video] Batch breaks due to batch sizeexceeding limit: 0 %
[m3video] Batch breaks due to ReqObj Que being empty: 0 %
[m3video] Batch breaks due to changed resolution class: 0 %
[m3video] Batch breaks due to interlace and progressivecontent mix: 0 %
[m3video] Batch breaks due to channel repeat: 0 %
[m3video] Batch breaks due to different codec: 0 %
[m3video] recv Q -> count = 0 , maxElements = 1024 , flags = 3
[m3video] EVC-ENC pMsg=9ce65480 , Cmd=5013
Here is part of usecase:
ipcOutVpssPrm.inQueParams.prevLinkId = nsfId[0];
ipcOutVpssPrm.inQueParams.prevLinkQueId = 0;
ipcOutVpssPrm.numOutQue = 1;
ipcOutVpssPrm.outQueParams[0].nextLink = ipcInVideoId;
ipcOutVpssPrm.notifyNextLink = TRUE;
ipcOutVpssPrm.notifyPrevLink = FALSE;
ipcOutVpssPrm.noNotifyMode = FALSE;
ipcInVideoPrm.inQueParams.prevLinkId = ipcOutVpssId;
ipcInVideoPrm.inQueParams.prevLinkQueId = 0;
ipcInVideoPrm.numOutQue = 1;
ipcInVideoPrm.outQueParams[0].nextLink = encId;
ipcInVideoPrm.notifyNextLink = TRUE;
ipcInVideoPrm.notifyPrevLink = TRUE;
ipcInVideoPrm.noNotifyMode = FALSE;
encPrm.numBufPerCh[0] = 4;
encPrm.chCreateParams[0].format = IVIDEO_H264BP;
encPrm.chCreateParams[0].profile = IH264_BASELINE_PROFILE;
encPrm.chCreateParams[0].dataLayout = IVIDEO_FIELD_SEPARATED;
encPrm.chCreateParams[0].fieldMergeEncodeEnable = FALSE;
encPrm.chCreateParams[0].maxBitRate = 10 * 1000 * 1000;
encPrm.chCreateParams[0].encodingPreset = XDM_USER_DEFINED;
encPrm.chCreateParams[0].enableHighSpeed = FALSE;
encPrm.chCreateParams[0].enableAnalyticinfo = FALSE;
encPrm.chCreateParams[0].enableWaterMarking = FALSE;
.....................
encPrm.inQueParams.prevLinkId = ipcInVideoId;
encPrm.inQueParams.prevLinkQueId = 0;
encPrm.outQueParams.nextLink = ipcBitsOutVideoId;
ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkId = encId;
ipcBitsOutVideoPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
ipcBitsOutVideoPrm.baseCreateParams.numOutQue = 1;
ipcBitsOutVideoPrm.baseCreateParams.outQueParams[0].nextLink = ipcBitsInHostId;
Chains_ipcBitsInitCreateParams_BitsOutRTOS(&ipcBitsOutVideoPrm, TRUE);
ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkId = ipcBitsOutVideoId;
ipcBitsInHostPrm.baseCreateParams.inQueParams.prevLinkQueId = 0;
Chains_ipcBitsInitCreateParams_BitsInHLOS(&ipcBitsInHostPrm);
Best Regards,
Dwayne