← Back to team overview

tiomap-dev team mailing list archive

[Bug 1024761] [NEW] Issues playing most video files on Pandaboard ES

 

Public bug reported:

I tested today the new multimedia-extras packages released yesterday and
I found that I can't play correctly most video files, both MPEG-4/AVI
and H.264/MP4. The most visible issue is a constant "jerkiness" of the
videos, that immediately made me think of out-of-order frames.

Playing the videos with the gst-launch pipeline:

GST_DEBUG=3 gst-launch filesrc location=filename.mp4 ! qtdemux
qtdemux0.video_00 ! h264parse ! "video/x-h264" ! ducatih264dec !
dri2videosink

showed a lot of warnings in the output:

0:00:04.421264649  8902  0x147dc60 INFO        GST_ERROR_SYSTEM gstelement.c:1964:gst_element_message_full:<dri2videosink0> posting message: A lot of buffers are being dropped.
WARNING: from element /GstPipeline:pipeline0/GstDRI2VideoSink:dri2videosink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2875): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstDRI2VideoSink:dri2videosink0:
There may be a timestamping problem, or this computer is too slow.

Disabling sync (dri2videosink sync=false) makes the messages disappear,
and the video plays smoothly again but too fast (I'd say at least 2x the
expected framerate). A mailing list message I found suggested using
fakesink to check the timestamps, and in fact running the pipeline:

GST_DEBUG=3 gst-launch -v filesrc location=filename.mp4 ! qtdemux
qtdemux0.video_00 ! h264parse ! "video/x-h264" ! ducatih264dec !
fakesink sync=true

gives this:

New clock: GstSystemClock
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.120000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10490"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.160000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.200000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10508"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.240000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.280000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d105f8"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.320000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.360000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10670"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.440000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.400000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10760"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.480000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10820"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.520000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d106e8"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.600000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10820"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.560000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10508"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.640000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d105f8"
/GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.680000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10760"

As you can see after the first few frames two out of every four frames
are swapped and this goes on for the rest of the video.

This happens with pretty much all my media files, mostly DVR recordings
(DVB-T MPEG2 TS streams directly dumped to disk) transcoded to MP4
(usually h264 high profile encoded with x264) or AVI (usually XVID or
FMP4 MPEG-4 ASP encoded with mencoder). There's another issue specific
to MPEG-4 files but I'll file another report.

The only videos that seem to work are a couple of MP4/H.264 files
downloaded from Youtube, and checking with fakesink I can see that the
timestamps increase monotonically as expected.

I'm using a new installation of Precise with the TI OMAP PPA repository
added to the APT sources. Please tell me if you need other information
or sample files.

** Affects: ubuntu-omap4-extras-multimedia
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of TI OMAP
Developers, which is subscribed to ubuntu-omap4-extras-multimedia.
https://bugs.launchpad.net/bugs/1024761

Title:
  Issues playing most video files on Pandaboard ES

Status in OMAP4 Ubuntu Multimedia addons:
  New

Bug description:
  I tested today the new multimedia-extras packages released yesterday
  and I found that I can't play correctly most video files, both
  MPEG-4/AVI and H.264/MP4. The most visible issue is a constant
  "jerkiness" of the videos, that immediately made me think of out-of-
  order frames.

  Playing the videos with the gst-launch pipeline:

  GST_DEBUG=3 gst-launch filesrc location=filename.mp4 ! qtdemux
  qtdemux0.video_00 ! h264parse ! "video/x-h264" ! ducatih264dec !
  dri2videosink

  showed a lot of warnings in the output:

  0:00:04.421264649  8902  0x147dc60 INFO        GST_ERROR_SYSTEM gstelement.c:1964:gst_element_message_full:<dri2videosink0> posting message: A lot of buffers are being dropped.
  WARNING: from element /GstPipeline:pipeline0/GstDRI2VideoSink:dri2videosink0: A lot of buffers are being dropped.
  Additional debug info:
  gstbasesink.c(2875): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstDRI2VideoSink:dri2videosink0:
  There may be a timestamping problem, or this computer is too slow.

  Disabling sync (dri2videosink sync=false) makes the messages
  disappear, and the video plays smoothly again but too fast (I'd say at
  least 2x the expected framerate). A mailing list message I found
  suggested using fakesink to check the timestamps, and in fact running
  the pipeline:

  GST_DEBUG=3 gst-launch -v filesrc location=filename.mp4 ! qtdemux
  qtdemux0.video_00 ! h264parse ! "video/x-h264" ! ducatih264dec !
  fakesink sync=true

  gives this:

  New clock: GstSystemClock
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.120000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10490"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.160000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.200000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10508"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.240000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.280000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d105f8"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.320000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.360000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10670"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.440000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10580"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.400000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10760"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.480000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10820"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.520000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d106e8"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.600000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10820"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.560000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10508"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.640000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d105f8"
  /GstPipeline:pipeline0/GstFakeSink:fakesink0: last-message = "chain   ******* (fakesink0:sink) (774144 bytes, timestamp: 0:00:00.680000000, duration: none, offset: -1, offset_end: -1, flags: 0 ) 0xb5d10760"

  As you can see after the first few frames two out of every four frames
  are swapped and this goes on for the rest of the video.

  This happens with pretty much all my media files, mostly DVR
  recordings (DVB-T MPEG2 TS streams directly dumped to disk) transcoded
  to MP4 (usually h264 high profile encoded with x264) or AVI (usually
  XVID or FMP4 MPEG-4 ASP encoded with mencoder). There's another issue
  specific to MPEG-4 files but I'll file another report.

  The only videos that seem to work are a couple of MP4/H.264 files
  downloaded from Youtube, and checking with fakesink I can see that the
  timestamps increase monotonically as expected.

  I'm using a new installation of Precise with the TI OMAP PPA
  repository added to the APT sources. Please tell me if you need other
  information or sample files.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-omap4-extras-multimedia/+bug/1024761/+subscriptions


Follow ups

References