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.