Instead, use either 0 or 1, depending on bitstream version, which give
the correct result for streams which aren't cut off at start.
This allows that function to not return negative granpos.
https://bugzilla.gnome.org/show_bug.cgi?id=638276
gint64 keyoffset;
if (pad->granuleshift != 0) {
+ /* If we don't know where the previous keyframe is yet, assume it is
+ at 0 or 1, depending on bitstream version. If nothing else, this
+ avoids getting negative granpos back. */
+ if (keyframe_granule < 0)
+ keyframe_granule = pad->theora_has_zero_keyoffset ? 0 : 1;
keyoffset = granule - keyframe_granule;
return (keyframe_granule << pad->granuleshift) | keyoffset;
} else {