VPU decoder VPU_DEC_NO_ENOUGH_BUF

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

VPU decoder VPU_DEC_NO_ENOUGH_BUF

1,834 Views
Tarek
Senior Contributor I

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.

Labels (2)
0 Kudos
5 Replies

876 Views
anishkhanna
Contributor I

hi, can you please provide the application you are using?

0 Kudos

876 Views
Tarek
Senior Contributor I

Hi Anish,

I moved away from using the VPU API's as it's too complicated and proven to be unreliable "at least for my purpose!"

Gstreamer is more reliable for handling the decoding and save me a lot of headache but it's very limited in it's display capabilities.

I'm trying to learn OpenGL to use it for display while gstreamer for decoding I hope this will work.

In my opinion Freescale is not providing enough examples on how to use the i.MX6 platform. My application is simply playing multiple video stream and a GUI! There should be a similar example provided by Freescale but there isn't one:smileysad:

0 Kudos

876 Views
anishkhanna
Contributor I

Thanks Tarek El-Sherbiny for your information :smileyhappy:

0 Kudos

876 Views
Yongxin
NXP Employee
NXP Employee

Hi, can you let me know the chip related with this question?

0 Kudos

876 Views
Tarek
Senior Contributor I

Chip is i.MX6Q

0 Kudos