Issues decoding MJPEG with VPUdec

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

Issues decoding MJPEG with VPUdec

2,058 Views
yanntinaugus
Contributor II

Hi everyone,

I'm having issue using VPUdec to decode MJPEG video. Althought, it is said that VPUdec can  decode MJPEG stream, i have been unable to make it works on my side.

Then, tried to transcode a file from H264 to MJPEG thanks to VPUenc (codec=12). This worked great. But then, when I do the other way around : use the file transcoded by the iMX6 and decode it thanks to the VPUdec, it doesn't work.

Does someone has an idea what's wrong ?

Thanks in advance for your help..

command line to transcode h264 ->MJPEG :

gst-launch -vvv filesrc location=test.avi ! decodebin2 ! vpuenc codec=12 bitrate=20000 ! filesink location=test_mjpeg.avi

command line to decode MJPEG :

gst-launch -vvv filesrc location=test_mjpeg.avi ! 'image/jpeg' ! vpudec ! vpuenc codec=6 ! filesink location=test_decode.avi

(I know this is not an 'image' as said in the pipeline, but this is the most relevant parameter I have found in VPUdec description.)

error when I try to decode MJPEG :

root@phyFLEX-i:~ gst-launch -vvv filesrc location=test_mjpeg.avi ! 'image/jpeg'

! vpudec ! vpuenc codec=6 ! filesink location=test_decode.avi

Setting pipeline to PAUSED ...

[INFO]  Product Info: i.MX6Q/D/S

vpuenc versions :smileyhappy:

        plugin: 3.0.7

        wrapper: 1.0.35(VPUWRAPPER_ARM_LINUX Build on Sep  2 2014 12:27:25)

        vpulib: 5.4.12

        firmware: 2.1.9.36350

[INFO]  Product Info: i.MX6Q/D/S

vpudec versions :smileyhappy:

        plugin: 3.0.7

        wrapper: 1.0.35(VPUWRAPPER_ARM_LINUX Build on Sep  2 2014 12:27:25)

        vpulib: 5.4.12

        firmware: 2.1.9.36350

Pipeline is PREROLLING ...

/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = image/jpeg

[INFO]  bitstreamMode 1, chromaInterleave 0, mapType 0, tiled2LinearEnable 0

/GstPipeline:pipeline0/GstVpuDec:vpudec0.GstPad:sink: caps = image/jpeg

/GstPipeline:pipeline0/GstVpuDec:vpudec0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)1/1, crop-top=(int)0, crop-left=(int)0, crop-right=(int)0, crop-bottom=(int)0, num-buffers-required=(int)7, framerate=(fraction)30/1, alignment=(int)1

VPU blocking: timeout.

[WARN]  pic was forced to be done

/GstPipeline:pipeline0/GstVpuEnc:vpuenc0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)1/1, crop-top=(int)0, crop-left=(int)0, crop-right=(int)0, crop-bottom=(int)0, num-buffers-required=(int)7, framerate=(fraction)30/1, alignment=(int)1

[INFO]  chromaInterleave 0, mapType 0, linear2TiledEnable 0

/GstPipeline:pipeline0/GstVpuEnc:vpuenc0.GstPad:src: caps = video/x-h264, width=(int)720, height=(int)576, framerate=(fraction)30/1, framed=(boolean)true

/GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = video/x-h264, width=(int)720, height=(int)576, framerate=(fraction)30/1, framed=(boolean)true

Pipeline is PREROLLED ...

Setting pipeline to PLAYING ...

New clock: GstSystemClock

ERROR: from element /GstPipeline:pipeline0/GstVpuDec:vpudec0: unknown error detect

Additional debug info:

vpudec.c(1409): gst_vpudec_process_error (): /GstPipeline:pipeline0/GstVpuDec:vpudec0

Execution ended after 1580669 ns.

Setting pipeline to PAUSED ...

Setting pipeline to READY ...

/GstPipeline:pipeline0/GstFileSink:filesink0.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstVpuEnc:vpuenc0.GstPad:src: caps = NULL

/GstPipeline:pipeline0/GstVpuEnc:vpuenc0.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstVpuDec:vpudec0.GstPad:src: caps = NULL

/GstPipeline:pipeline0/GstVpuDec:vpudec0.GstPad:sink: caps = NULL

/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = NULL

Setting pipeline to NULL ...

Freeing pipeline ...

Yann

Labels (3)
0 Kudos
3 Replies

897 Views
Yuri
NXP Employee
NXP Employee

Hello,

  Perhaps, the problem relates to the fact, that in hardware the VPU supports
only Baseline JPEG profile, for others You need to use a software JPEG codec.


Have a great day,
Yuri

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

0 Kudos

897 Views
yanntinaugus
Contributor II

Hi Yuri,

On this topic : jpg decode using vpudec ?  It's said that VPU of iMX6 is able to decode MJPEG and not JPEG :

"No, the vpudec doesn't support jpeg decode"  -

"it seems vpudec just can support mjpeg video" -

Yann

0 Kudos

897 Views
Yuri
NXP Employee
NXP Employee

Hello,

as has been mentioned only Baseline JPEG profile is supported,

so, please check what profile is used in Your "test_mjpeg.avi".

Regards,

Yuri

0 Kudos