[gstreamer-bugs] [Bug 638276] oggstream: when the last keyframe position is not known, do not use -1

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Jan 2 14:06:19 PST 2011


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

--- Comment #4 from David Schleef <ds at schleef.org> 2011-01-02 22:06:15 UTC ---
The only problem in granulepos regeneration that I know of is for theora
streams where several frames including a key frame are included in the first
theora data page.  Thus, for a stream that starts out with a page like this:

 (frame type) (original frame gp)
  non-key    1000|10
  non-key    1000|11
  keyframe   1012|0
  non-key    1012|1    -> page gets granulepos 1011|2

The reconstructed gp values are:

  non-key    garbage (1, iirc)
  non-key    garbage (2, iirc)
  keyframe   1012|0
  non-key    1012|1

I didn't spend much time on this when I discovered it, because it only affected
remuxing and not playback.  There are two possible fixes:  Drop the packets
before the first keyframe.  Or, create more reasonable bogus granulepos values
for the pre-keyframe packets.  But one needs to also check for the case:

  keyframe   ??? (should be 1|0)
  non-key    ??? (should be 1|1)
  keyframe   3|0
  non-key    3|1

Note that we now have a method for checking if a packet is a keyframe, which
can be used instead of simply checking for "|0" in the granule pos.

-- 
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