summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorStéphane Cerveau <scerveau@collabora.com>2021-04-19 18:25:06 +0200
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-05-04 19:11:27 +0000
commitc32f455b7b9e8dd145077d634d9ba392a7e05cf3 (patch)
tree15a30d918d16623579bc93510b8dfe8128240ec6 /gst
parent51e96fd2c3312738d1254dff1d76e91a5abf8526 (diff)
downloadgstreamer-plugins-bad-c32f455b7b9e8dd145077d634d9ba392a7e05cf3.tar.gz
mxfdemux: fix keyframe detection in index
An index entry should be considered as a keyframe if the flags allow a random access only. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2173>
Diffstat (limited to 'gst')
-rw-r--r--gst/mxf/mxfdemux.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index d34827c58..5ed054ccd 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -3796,8 +3796,13 @@ collect_index_table_segments (GstMXFDemux * demux)
}
index->offset = offset;
- index->keyframe = ! !(segment->index_entries[i].flags & 0x80)
- || (segment->index_entries[i].key_frame_offset == 0);
+ /* EG41-2004 Table 9: 0x80 = Random access */
+ /* random_access is more reliable to determine if the index is
+ * a key-frame than checking the keyframe_offset or the frame type flag.
+ * See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2173#note_900580
+ * for more details.
+ */
+ index->keyframe = ! !(segment->index_entries[i].flags & 0x80);
index->dts = pts_i;
}
}