AnsweredAssumed Answered

VPU decoder VPU_DEC_NO_ENOUGH_BUF

Question asked by Tarek El-Sherbiny on Nov 13, 2012
Latest reply on Jan 3, 2013 by anish khanna
Branched to a new discussion

Hi,

I'm playing live stream from a remote camera using the VPU Wrapper for decoding and IPU mxc_ipu dev for display. The video runs smoothly for about 3 to 4 minutes then VPU_DecDecodeBuf() starts returning

VPU_DEC_INPUT_USED,

VPU_DEC_OUTPUT_NODIS,

VPU_DEC_NO_ENOUGH_BUF then the video stops.

 

I've double checked that all the allocated video buffers are cleared once displayed by calling VPU_DecOutFrameDisplayed().

 

When I enabled VPU debugging I get the following messages:

 

 

1_repeatFrame: 0,interlacedFrame: 0, indexFrameRangemap: 0, progressiveFrame: 0, topFieldFirst: 0

aspect ratio: format: 0, ratio: 0x1, InWidth: 640, InHeight: 480

return Q16Ratio: 0x10000, [OutWidth,OutHeight]=[65536, 65536] 

one decoded frame: start: 0x18D76ACA, end: 0x18D797C1

VpuAccumulateConsumedBytes: size: 11511, type: 2

last end: 0x18D76ACA, start: 0x18D76ACA, buf start: 0x18C00000, buf end: 0x18F00000, stuff size: 0

indexFrameDisplay=2

frame : (P)

VpuGetOutput: Ref frame 1

VpuCheckDeadLoop: total_dec_size: 0, total_dec_loop: 0, total_null_loop: 1

calling vpu_DecGetBitstreamBuffer()

calling vpu_DecGetBitstreamBuffer()

Wr: 0x18D8CD08, Rd: 0x18D79A00, space: 3065079

calling vpu_DecUpdateBitstreamBuffer(): 2997

calling vpu_DecGetBitstreamBuffer()

nSpace: 3062082, filled : 83646

===================vpu_DecStartOneFrame: chunkSize: 0, search: 0

calling vpu_DecStartOneFrame(): 0, skipmode: 0

while: calling vpu_WaitForInt(500)

VPU_DecOutFrameDisplayed: calling vpu_DecClrDispFlag(): 2

calling vpu_DecGetOutputInfo()

calling vpu_DecGetOutputInfo(), indexFrmDec: 0, return indexFrmDis: 3, type: 0, success: 0x1, errMB: 0, consumed: 78793

fieldSequence: 0, vc1_repeatFrame: 0,interlacedFrame: 0, indexFrameRangemap: 0, progressiveFrame: 0, topFieldFirst: 0

aspect ratio: format: 0, ratio: 0x1, InWidth: 640, InHeight: 480

return Q16Ratio: 0x10000, [OutWidth,OutHeight]=[65536, 65536] 

one decoded frame: start: 0x18D797C1, end: 0x18D8CB8A

VpuAccumulateConsumedBytes: size: 78793, type: 2

last end: 0x18D797C1, start: 0x18D797C1, buf start: 0x18C00000, buf end: 0x18F00000, stuff size: 0

indexFrameDisplay=3

frame : (P)

VpuGetOutput: Ref frame 1

VpuCheckDeadLoop: total_dec_size: 0, total_dec_loop: 0, total_null_loop: 1

VPU_DecOutFrameDisplayed: calling vpu_DecClrDispFlag(): 3

calling vpu_DecGetBitstreamBuffer()

calling vpu_DecGetBitstreamBuffer()

Wr: 0x18D8D8BD, Rd: 0x18D8CE00, space: 3140930

calling vpu_DecUpdateBitstreamBuffer(): 3217

calling vpu_DecGetBitstreamBuffer()

nSpace: 3137713, filled : 8015

===================vpu_DecStartOneFrame: chunkSize: 0, search: 0

calling vpu_DecStartOneFrame(): 0, skipmode: 0

while: calling vpu_WaitForInt(500)

calling vpu_DecGetOutputInfo()

calling vpu_DecGetOutputInfo(), indexFrmDec: -1, return indexFrmDis: -3, type: 0, success: 0x1, errMB: 0, consumed: 78793

fieldSequence: 0, vc1_repeatFrame: 0,interlacedFrame: 0, indexFrameRangemap: 0, progressiveFrame: 0, topFieldFirst: 0

TSE: no enough frame buffer and return one output frame

VpuCheckDeadLoop: total_dec_size: 0, total_dec_loop: 0, total_null_loop: 1

calling vpu_DecGetBitstreamBuffer()

calling vpu_DecGetBitstreamBuffer()

Wr: 0x18D8E54E, Rd: 0x18D8CE00, space: 3137713

calling vpu_DecUpdateBitstreamBuffer(): 3009

calling vpu_DecGetBitstreamBuffer()

nSpace: 3134704, filled : 11024

===================vpu_DecStartOneFrame: chunkSize: 0, search: 0

calling vpu_DecStartOneFrame(): 0, skipmode: 0

while: calling vpu_WaitForInt(500)

calling vpu_DecGetOutputInfo()

calling vpu_DecGetOutputInfo(), indexFrmDec: -1, return indexFrmDis: -3, type: 0, success: 0x1, errMB: 0, consumed: 78793

fieldSequence: 0, vc1_repeatFrame: 0,interlacedFrame: 0, indexFrameRangemap: 0, progressiveFrame: 0, topFieldFirst: 0

TSE: no enough frame buffer and return one output frame

VpuCheckDeadLoop: total_dec_size: 3217, total_dec_loop: 1, total_null_loop: 2

calling vpu_DecGetBitstreamBuffer()

calling vpu_DecGetBitstreamBuffer()

Wr: 0x18D8F10F, Rd: 0x18D8CE00, space: 3134704

calling vpu_DecUpdateBitstreamBuffer(): 3225

calling vpu_DecGetBitstreamBuffer()

nSpace: 3131479, filled : 14249

===================vpu_DecStartOneFrame: chunkSize: 0, search: 0

calling vpu_DecStartOneFrame(): 0, skipmode: 0

while: calling vpu_WaitForInt(500)

calling vpu_DecGetOutputInfo()

calling vpu_DecGetOutputInfo(), indexFrmDec: -1, return indexFrmDis: -3, type: 0, success: 0x1, errMB: 0, consumed: 78793

 

 

why the decoder is not using the available buffers and how should I retrieve the normal video stream display without restarting the process?

 

Note: I'm running BSP12.08 on Nitrogen Board and using Poky distribution Yocto build system.

Outcomes