diff options
author | Andoni Morales Alastruey <amorales@flumotion.com> | 2011-12-02 11:35:10 +0100 |
---|---|---|
committer | Thiago Santos <thiagoss@osg.samsung.com> | 2016-04-11 17:59:41 -0300 |
commit | 2daec4378f14eafaf8ed360f78719ccb3a5ae1dd (patch) | |
tree | 905c44559c2da1f31a49fc5c5b3ca10874969d3a | |
parent | 9f738f26b6196ba3c904f448cda14ca444e54f08 (diff) |
ismlmux: make sure fragments start with a keyframe
https://bugzilla.gnome.org/show_bug.cgi?id=660260
-rw-r--r-- | gst/isomp4/gstqtmux.c | 7 |
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; |