AnsweredAssumed Answered

Problems with GStreamer 0.10 VPU Plugins on i.MX53

Question asked by Michael John on Jun 4, 2015
Latest reply on Jun 12, 2015 by Michael John

Hello,

 

I'm trying to play an MPEG4 video on an i.MX53 via GStreamer 0.10 with the Freescale VPU plugins. I can play the video with a software decoder(ffdec_mpeg4) fine, but when I switch it out for the VPU decoder(mfw_vpudecoder) the pipeline appears to hang. Can anyone provide suggestions? Is it not possible to just swap decoders like this? I can play the video by calling the VPU directly in C (no GStreamer), so I know support for the VPU is there and working.

 

GStreamer: 0.10.36

GStreamer-base: 0.10.36

GStreamer-good: 0.10.31

gst-ffmpeg: 0.10.13

gst-fsl-plugin: 2.0.3

firmware-imx: 11.09.01

imx-lib: 11.09.01

 

Here is the console output for the software decoder (ffdec_mpeg4), this works:

# gst-launch -v filesrc location=/unit_tests/RR5700-test.mkv typefind=true ! aiurdemux ! ffdec_mpeg4 ! mfw_v4lsink
MFW_GST_V4LSINK_PLUGIN 2.0.3 build on May 27 2015 09:55:17.
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstFileSrc:filesrc0.GstPad:src: caps = video/x-matroska
Pipeline is PREROLLING ...
Aiur: 2.0.3
Core: MKVPARSER_01.00.05 build on Jul 28 2011 15:35:30
  mime: video/x-matroska
  file: lib_mkv_parser_arm11_elinux.3.0.so
/GstPipeline:pipeline0/GstAiurDemux:aiurdemux0.GstPad:sink: caps = video/x-matroska
Content Info:
  URI:
  file:///unit_tests/RR5700-test.mkv
  Idx File:
  /root/.aiur/.unit_tests.RR5700-test.mkv.aidx
  Seekable : Yes
  Size(byte): 11363843

Movie Info:
  Seekable : Yes
  Live : No
  Duration : 0:01:30.123000000
  ReadMode : Track
  Track : 2

Track 00[Video]: Enabled
  Duration: 0:01:30.123000000
  Language: eng
  Mime:
  video/mpeg, mpegversion=(int)4, parsed=(boolean)true, width=(int)704, height=(in
  t)480, framerate=(fraction)29/1
Track 01[Audio]: Enabled
  Duration: 0:01:30.123000000
  Language: eng
  Mime:
  audio/x-ac3, channels=(int)2, rate=(int)44100, bitrate=(int)0
/GstPipeline:pipeline0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = video/mpeg, mpegversion=(int)4, parsed=(boolean)true, width=(int)704, height=(int)480, framerate=(fraction)29/1
/GstPipeline:pipeline0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = video/x-raw-yuv, width=(int)704, height=(int)480, framerate=(fraction)29/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1
>>V4L_SINK: Actually buffer status:
  hardware buffer : 12
  software buffer : 0
/GstPipeline:pipeline0/MFW_GST_V4LSINK_INFO_T:mfw_gst_v4lsink_info_t0.GstPad:sink: caps = video/x-raw-yuv, width=(int)704, height=(int)480, framerate=(fraction)29/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
full screen size:480x272
[V4L Update Display]: left=0, top=0, width=480, height=272
New clock: GstSystemClock
^CCaught interrupt -- handling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 3757767375 ns.
Setting pipeline to PAUSED ...
total time:0:00:03.760337625 ,Render fps:29
Setting pipeline to READY ...
/GstPipeline:pipeline0/MFW_GST_V4LSINK_INFO_T:mfw_gst_v4lsink_info_t0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/ffdec_mpeg4:ffdec_mpeg40.GstPad:src: caps = NULL
/GstPipeline:pipeline0/ffdec_mpeg4:ffdec_mpeg40.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstAiurDemux:aiurdemux0.GstPad:audio_00: caps = NULL
/GstPipeline:pipeline0/GstAiurDemux:aiurdemux0.GstPad:video_00: caps = NULL
/GstPipeline:pipeline0/GstAiurDemux:aiurdemux0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstFileSrc:filesrc0.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Total rendered:112
Freeing pipeline ...
[--->FINALIZE v4l_sink
[--->FINALIZE aiurdemux

 

This is with the VPU decoder, the output just hangs, the video is not played:

# gst-launch -v  filesrc location=/unit_tests/RR5700-test.mkv typefind=true ! aiurdemux ! multiqueue ! mfw_vpudecoder ! mfw_v4lsink

MFW_GST_V4LSINK_PLUGIN 2.0.3 build on Jun  3 2015 14:35:01.

Setting pipeline to PAUSED ...

0:00:00.273655899 20560 default segment start=0, stop=1, last_stop=8315723440075201856, duration=3, rate=0.000000, applied_rate=0.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000001 DEBUG         mfw_vpudecoder mfw_gst_vpu_decoder.c:3864:mfw_gst_vpudec_change_state: >>VPU_DEC: State: Null to Ready

[INFO]  Product Info: i.MX53

VPU Version: firmware 1.4.41; libvpu: 5.3.2

MFW_GST_VPU_DECODER_PLUGIN 2.0.3 build on Jun  3 2015 14:34:53.

0:00:00.295671273 20560 default segment start=0, stop=1, last_stop=8315723440075201856, duration=3, rate=0.000000, applied_rate=0.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000001 DEBUG         mfw_vpudecoder mfw_gst_vpu_decoder.c:4011:mfw_gst_vpudec_change_state: >>VPU_DEC: State Change 0xa for VPU returned 1

0:00:00.296021148 20560 default segment start=0, stop=1, last_stop=8315723440075201856, duration=3, rate=0.000000, applied_rate=0.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000001 DEBUG         mfw_vpudecoder mfw_gst_vpu_decoder.c:4141:mfw_gst_vpudec_change_state: >>VPU_DEC: State unhandled next 0xa

0:00:00.298102523 20560 default segment start=0, stop=1, last_stop=8315723440075201856, duration=3, rate=0.000000, applied_rate=0.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000001 DEBUG         mfw_vpudecoder mfw_gst_vpu_decoder.c:3906:mfw_gst_vpudec_change_state: >>VPU_DEC: State: Ready to Paused

0:00:00.298489273 20560 default segment start=0, stop=1, last_stop=8315723440075201856, duration=3, rate=0.000000, applied_rate=0.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000001 DEBUG         mfw_vpudecoder mfw_gst_vpu_decoder.c:4011:mfw_gst_vpudec_change_state: >>VPU_DEC: State Change 0x13 for VPU returned 1

0:00:00.298732898 20560 default segment start=0, stop=1, last_stop=8315723440075201856, duration=3, rate=0.000000, applied_rate=0.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000001 DEBUG         mfw_vpudecoder mfw_gst_vpu_decoder.c:4141:mfw_gst_vpudec_change_state: >>VPU_DEC: State unhandled next 0x13

/GstPipeline:pipeline0/GstFileSrc:filesrc0.GstPad:src: caps = video/x-matroska

Pipeline is PREROLLING ...

Aiur: 2.0.3

Core: MKVPARSER_01.00.05  build on Jul 28 2011 15:35:30

  mime: video/x-matroska

  file: lib_mkv_parser_arm11_elinux.3.0.so

/GstPipeline:pipeline0/GstAiurDemux:aiurdemux0.GstPad:sink: caps = video/x-matroska

Content Info:

        URI:

              file:///unit_tests/RR5700-test.mkv

        Idx File:

              /root/.aiur/.unit_tests.RR5700-test.mkv.aidx

        Seekable  : Yes

        Size(byte): 11363843

 

Movie Info:

        Seekable  : Yes

        Live      : No

        Duration  : 0:01:30.123000000

        ReadMode  : Track

        Track     : 2

 

Track 00[Video]: Enabled

        Duration: 0:01:30.123000000

        Language: eng

        Mime:

              video/mpeg, mpegversion=(int)4, parsed=(boolean)true, width=(int)704, height=(in

              t)480, framerate=(fraction)29/1

Track 01[Audio]: Enabled

        Duration: 0:01:30.123000000

        Language: eng

        Mime:

              audio/x-ac3, channels=(int)2, rate=(int)44100, bitrate=(int)0

/GstPipeline:pipeline0/GstMultiQueue:multiqueue0.GstPad:sink0: caps = video/mpeg, mpegversion=(int)4, parsed=(boolean)true, width=(int)704, height=(int)480, framerate=(fraction)29/1

/GstPipeline:pipeline0/GstMultiQueue:multiqueue0.GstPad:src0: caps = video/mpeg, mpegversion=(int)4, parsed=(boolean)true, width=(int)704, height=(int)480, framerate=(fraction)29/1

 

 

Appreciate suggestions.

 

Thanks.

Outcomes