From: Philip Jägenstedt Date: Sun, 6 Jun 2010 12:03:53 +0000 (+0200) Subject: matroskademux: Ignore keyframe flag for non-video streams X-Git-Tag: RELEASE-0.10.24~130 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b2ff8042d36077ce01e82e28efaf4e6f5d21391b;p=platform%2Fupstream%2Fgst-plugins-good.git matroskademux: Ignore keyframe flag for non-video streams When the keyframe bit of SimpleBlock Flags wasn't set, the buffer was being marked with GST_BUFFER_FLAG_DELTA_UNIT, causing all buffers to be skipped after a seek. This may be a problem with the Sorenson Squish encoder, but arguably the keyframe bit should only be applied to video. Fixes bug #620358. --- diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 63f4e76b1..8ba9ea18e 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -4815,7 +4815,9 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, gst_matroska_demux_sync_streams (demux); if (is_simpleblock) { - if (flags & 0x80) + /* bit 0 of SimpleBlock Flags is "Keyframe, set when the Block + contains only keyframes" */ + if (flags & 0x80 || stream->type != GST_MATROSKA_TRACK_TYPE_VIDEO) GST_BUFFER_FLAG_UNSET (sub, GST_BUFFER_FLAG_DELTA_UNIT); else GST_BUFFER_FLAG_SET (sub, GST_BUFFER_FLAG_DELTA_UNIT);