i.MX6SDL VPU VPU_DecDecodeBuf error.

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

i.MX6SDL VPU VPU_DecDecodeBuf error.

1,454 Views
satoshishimoda
Senior Contributor I

Hi all,

I have a question about i.MX6SDL VPU API.

When using i.MX6SDL vpudec for L3.0.35_4.1.0, the following errors were output.

ERROR                vpudec vpudec.c:1498:gst_vpudec_chain: Func VPU_DecDecodeBuf failed!! with ret 7

WARN                  vpudec vpudec.c:1409:gst_vpudec_process_error:<vpudec0> error: unknown error detect

I guess the downside log is caused by the upper side log, isn't it?

Then, could you let me know the factor to output the upper error?

Best Regards,

Satoshi Shimoda

Labels (3)
Tags (1)
2 Replies

861 Views
jamesbone
NXP TechSupport
NXP TechSupport

Hello Satoshi San,

The VPU_DecDecodeBuf() call internally picks an available framebuffer, and at the same time, the bufferpool release() function

might be returning a framebuffer to the list of available ones. So the error you are having it is cause you do not have enough frame buffer to run.

So you command should be video-sink="queue max-size-buffers=1 max-size-bytes=0 max-size-time=0 ! mfw_v4lsink"

Currently, the minimum number of free output framebuffers is 6, meaning that the num_available_framebuffers

counter must always be at least at that value. Combined with the maximum number of frames h.264 could require

with frame reordering (which is 17 frames), this means that up to 23 frames will have to be allocated with the

physical memory allocators. For 1080p videos, this means (23*1920*1088*12/8 / 1048576) byte ~ 69 MB.

(1088, because the VPU needs width and height values to be aligned to 16-pixel boundaries, and 12/8, because

12 bit is the bit depth for the I420 format, 12/8 is the number of bytes per pixel. While the decoder can also

output I42B and Y444 for motion JPEG, it won't use that many frames then, so 12 bit is still a good pick.)

Adding the typical sizes of extra decoding buffers requested by the VPU, this sums up to 72 MB.

Therefore, it is recommended to make sure at least 72 MB RAM are available for a decoder instance. If multiple

streams need to be decoded at the same time, each one must have up to 72 MB available. This ensures the

decoder instance(s) can handle any kind of input stream. (In special cases the RAM usage might be

substantially less of course.)


Have a great day,
Jaime

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

861 Views
aldobiziak
Contributor II

Hi Jamesbon,

is VPU error just a warning message that does NOT causes crash? Can I ignore it?

If I understand, in case of "VPU_DecDecodeBuf failed", some video frame is skipped and not painted on screen, isn't it?

Thank you again for your help

0 Kudos