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.

encoder could not get empty buffer

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