From c32f455b7b9e8dd145077d634d9ba392a7e05cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Cerveau?= Date: Mon, 19 Apr 2021 18:25:06 +0200 Subject: [PATCH] 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: --- gst/mxf/mxfdemux.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index d34827c58b..5ed054ccd5 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; } }