[Bug 700537] theoradec drops frames because it needs a keyframe after a seek (bug in oggdemux from what I gathered)

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sat Jul 13 17:04:43 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=700537
  GStreamer | gst-plugins-base | 1.0.6

--- Comment #15 from Mathieu Duponchelle <mathieu.duponchelle at epitech.eu> 2013-07-14 00:04:37 UTC ---
OK so after an in-depth investigation, I've come up with both a headache and
the real fix, sorry for proposing this patch but it seemed good to me in the
first place, only problem was that it would have considered a little too many
packets, defeating the purpose of the check for a valid granuletime in
_chain_peer. It couldn't cause stream synchronisations though.

Now the real patch is slightly more complicated, but it fixes the root of the
problem.

For now, the following scenario could and would often be taking place:

    a) Find the earliest time for stream X
    b) bisect and find a page which granuletime is indeed < target, but
       contains another stream.
    c) decide to seek at the wrong offset, sometimes inferior to
       the real one, in which case the error was undected or
    d) the offset was superior, and thus the actual target keyframe was
       not processed, and packets were skipped waiting
       for a granulepos.

The attached patch fixes that by introducing two arguments to do_binary_search:

A boolean to specify if we want the bisection to consider only one stream, and
the actual (unique) serial number of the stream, ignored if only_serial_no is
FALSE.

The second attached patch reverts the previously mentioned commit, and removes
a variable that isn't needed anymore.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list