After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 628322 - problem by playing chained video ogg file
problem by playing chained video ogg file
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.10.x
Other Linux
: Normal normal
: 0.11.x
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-08-30 13:08 UTC by Oleksij Rempel
Modified: 2012-09-20 17:00 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
chained video (646.13 KB, audio/ogg)
2010-08-30 13:08 UTC, Oleksij Rempel
Details

Description Oleksij Rempel 2010-08-30 13:08:04 UTC
Created attachment 169054 [details]
chained video

Hallo,
i have problems to play chained video ogg.

First part played smoothly, the second with pauses on video.

to reproduce i used 

ffmpeg2theora -p preview -s 2500 -e 2510 -o foo.ogg samplevideo.ogg
ffmpeg2theora -p preview -s 2550 -e 2560 -o foo2.ogg samplevideo.ogg

cat foo2.ogg >> foo.ogg
Comment 1 Bastien Nocera 2010-08-31 16:03:17 UTC
<hadess> __tim: can you reproduce https://bugzilla.gnome.org/show_bug.cgi?id=628322 ?
<__tim> hadess, maybe: with git it plays fine for me, both from local file and http, while with core/base 0.10.30 it just seems to stop after the first chain
<__tim> where stop=eos
<hadess> __tim: i'll reassign and somebody will probably find the dupe then :)
Comment 2 Oleksij Rempel 2010-08-31 20:13:27 UTC
Thank you :D
Comment 3 Youness Alaoui 2011-07-10 00:06:36 UTC
This patch should fix the EOS issue, although the video seems to freeze after it switches to a different chain, it might be a new-segment issue or something like that. If you seek though (used totem) it will play fine instead of stopping.
http://cgit.collabora.com/git/user/kakaroto/gst-plugins-base.git/commit/?id=26155822adf734af16634a99effc3aca0989a4ef
Comment 4 Edward Hervey 2011-07-25 16:01:38 UTC
Only just realized I pushed something similar this morning. Haven't investigated the timing issue though.

commit c91928f7a2461aba57f64e014f507bcb62d7adc6
Author: Edward Hervey <edward.hervey@collabora.co.uk>
Date:   Mon Jul 25 10:41:04 2011 +0200

    decodebin2: Properly handle multi-stream chains
    
    When we have a multi-stream (i.e. audio and video) input and the demuxer
    adds/removes pads for a new stream (common in a mpeg-ts stream when the
    program stream mapping is updated), the algorithm for EOS handling was
    previously wrong (it would only drop the EOS of the *last* pad but would
    let the EOS on the other pads go through).
    
    The logic has only been changed a tiny bit for EOS handling resulting in:
    * If there is no next group, let the EOS go through
    * If there is a next group, but not all pads are drained in the active
      group, drop the EOS event
    * If there is a next group and all pads are drained, then the ghostpads
      will be removed and the EOS event will be dropped automatically.
Comment 5 Vincent Penquerc'h 2011-08-13 08:14:17 UTC
This is caused by the second chain causing a second Theora decoder to be created, and being unaware of the running time of the first chain.
The second decoder then receives buffers from timestamp 0 in the new segment, and sees the associated running time as starting from 0.
However, it also receives QoS messages with timestamps taking that previous running time into account, and thus believes it is very late, and drops all frames.

A fix would need to reconcile the two time bases by making the second decoder aware of the running time of the previous chain's decoder, but I don't see a clean way to do that at the moment.

A workaround is to disable QoS for the Theora decoder, and playback works as expected.

Note that the Vorbis decoder does not do QoS, which is why audio works fine here.
Comment 6 Sebastian Dröge (slomo) 2011-08-13 09:45:31 UTC
This should be fixed when enabling the stream synchronizer in playsink, at least it worked last time I enabled it.
Comment 7 Vincent Penquerc'h 2011-08-13 10:12:30 UTC
All the while debugging this, I had this horrible feeling of deja vu without being able to remember, and that comment just brought it all back. I had already debugged that issue, and found that enabling that made it work.

Sigh.

Yep, setting passthrough to FALSE makes it work too.
Comment 8 Sebastian Dröge (slomo) 2011-08-16 06:06:36 UTC
Only problem is that enabling the streamsynchronizer causes playback issues in other situations. We should make sure that this is fixed in 0.11 as it might require core changes
Comment 9 Tim-Philipp Müller 2012-09-20 17:00:41 UTC
This seems to work now in 0.11 / git master, closing.