mxfdemux: fix keyframe detection in index
authorStéphane Cerveau <scerveau@collabora.com>
Mon, 19 Apr 2021 16:25:06 +0000 (18:25 +0200)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 4 May 2021 19:11:27 +0000 (19:11 +0000)
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>

gst/mxf/mxfdemux.c

index d34827c..5ed054c 100644 (file)
@@ -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;
         }
       }