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