summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndoni Morales Alastruey <amorales@flumotion.com>2011-12-02 11:35:10 +0100
committerThiago Santos <thiagoss@osg.samsung.com>2016-04-11 17:59:41 -0300
commit2daec4378f14eafaf8ed360f78719ccb3a5ae1dd (patch)
tree905c44559c2da1f31a49fc5c5b3ca10874969d3a
parent9f738f26b6196ba3c904f448cda14ca444e54f08 (diff)
ismlmux: make sure fragments start with a keyframe
https://bugzilla.gnome.org/show_bug.cgi?id=660260
-rw-r--r--gst/isomp4/gstqtmux.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c
index 2bc8ab931..84b290f39 100644
--- a/gst/isomp4/gstqtmux.c
+++ b/gst/isomp4/gstqtmux.c
@@ -2783,7 +2783,7 @@ gst_qt_mux_pad_fragment_add_buffer (GstQTMux * qtmux, GstQTPad * pad,
guint32 delta, guint32 size, gboolean sync, gint64 pts_offset)
{
GstFlowReturn ret = GST_FLOW_OK;
- gboolean pad_sync, event_sync, time_sync;
+ gboolean is_kf, pad_sync, event_sync, time_sync;
GstQTMuxClass *qtmux_klass = (GstQTMuxClass *) (G_OBJECT_GET_CLASS (qtmux));
/* setup if needed */
@@ -2793,11 +2793,12 @@ gst_qt_mux_pad_fragment_add_buffer (GstQTMux * qtmux, GstQTPad * pad,
flush:
/* flush pad fragment if threshold reached,
* or at new keyframe if we should be minding those in the first place */
+ is_kf = !GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_DELTA_UNIT);
pad_sync = qtmux->fragment_method != FRAGMENT_METHOD_EVENT && (sync
&& pad->sync);
- event_sync = pad->forcekeyunit_events != NULL &&
+ event_sync = is_kf && pad->forcekeyunit_events != NULL &&
GST_BUFFER_PTS (buf) >= pad->next_fragment_ts;
- time_sync = pad->fragment_duration < (guint64) delta;
+ time_sync = is_kf && pad->fragment_duration < (guint64) delta;
if (event_sync && pad->first_fragment) {
pad->first_fragment = FALSE;