matroskamux: Only mark new clusters as keyframe if they start on a keyframe or we...
authorSebastian Dröge <sebastian@centricular.com>
Wed, 28 Feb 2018 17:21:53 +0000 (19:21 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 28 Feb 2018 17:21:53 +0000 (19:21 +0200)
Based on a patch by Nicola Murino <nicola.murino@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=792775

gst/matroska/matroska-mux.c

index 78cffe8..0d129fc 100644 (file)
@@ -3752,7 +3752,8 @@ gst_matroska_mux_write_data (GstMatroskaMux * mux, GstMatroskaPad * collect_pad,
           gst_util_uint64_scale (buffer_timestamp, 1, mux->time_scale));
       GST_LOG_OBJECT (mux, "cluster timestamp %" G_GUINT64_FORMAT,
           gst_util_uint64_scale (buffer_timestamp, 1, mux->time_scale));
-      gst_ebml_write_flush_cache (ebml, TRUE, buffer_timestamp);
+      gst_ebml_write_flush_cache (ebml, is_video_keyframe
+          || is_audio_only, buffer_timestamp);
       mux->cluster_time = buffer_timestamp;
       gst_ebml_write_uint (ebml, GST_MATROSKA_ID_PREVSIZE,
           mux->prev_cluster_size);