From: Nicolas Dufresne Date: Wed, 8 Jun 2016 15:24:37 +0000 (-0400) Subject: flvmux: Assume PTS is DTS when PTS is missing X-Git-Tag: 1.19.3~509^2~2491 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ad9e9bedfbe40044d46c807f217280504a2312aa;p=platform%2Fupstream%2Fgstreamer.git flvmux: Assume PTS is DTS when PTS is missing This fixes issue for encoders that only sets the DTS. We assume that there was no re-ordering when that happens. https://bugzilla.gnome.org/show_bug.cgi?id=762207 --- diff --git a/gst/flv/gstflvmux.c b/gst/flv/gstflvmux.c index 2080a3c..fec8f93 100644 --- a/gst/flv/gstflvmux.c +++ b/gst/flv/gstflvmux.c @@ -152,6 +152,20 @@ _gst_buffer_new_and_alloc (gsize size, GstBuffer ** buffer, guint8 ** data) *buffer = _gst_buffer_new_wrapped (*data, size, g_free); } +static GstFlowReturn +gst_flv_mux_clip_running_time (GstCollectPads * pads, + GstCollectData * cdata, GstBuffer * buf, GstBuffer ** outbuf, + gpointer user_data) +{ + buf = gst_buffer_make_writable (buf); + + if (!GST_CLOCK_TIME_IS_VALID (GST_BUFFER_PTS (buf))) + GST_BUFFER_PTS (buf) = GST_BUFFER_DTS (buf); + + return gst_collect_pads_clip_running_time (pads, cdata, buf, outbuf, + user_data); +} + static void gst_flv_mux_class_init (GstFlvMuxClass * klass) { @@ -217,7 +231,7 @@ gst_flv_mux_init (GstFlvMux * mux) gst_collect_pads_set_event_function (mux->collect, GST_DEBUG_FUNCPTR (gst_flv_mux_handle_sink_event), mux); gst_collect_pads_set_clip_function (mux->collect, - GST_DEBUG_FUNCPTR (gst_collect_pads_clip_running_time), mux); + GST_DEBUG_FUNCPTR (gst_flv_mux_clip_running_time), mux); gst_flv_mux_reset (GST_ELEMENT (mux)); }