From: Sebastian Dröge Date: Wed, 28 Sep 2016 20:03:58 +0000 (+0300) Subject: qtmux: Don't calculate PTS offset and DTS with GST_CLOCK_TIME_NONE X-Git-Tag: 1.19.3~509^2~2515 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a993883b74598e5a1bc91348ea383fd856111d9b;p=platform%2Fupstream%2Fgstreamer.git qtmux: Don't calculate PTS offset and DTS with GST_CLOCK_TIME_NONE Just error out if there is no valid PTS. https://bugzilla.gnome.org/show_bug.cgi?id=772143 --- diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index c28eaf6..27f9090 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -3302,13 +3302,15 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf) sync = TRUE; } - if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_DTS (last_buf))) { + if (!GST_BUFFER_PTS_IS_VALID (last_buf)) + goto no_pts; + + if (GST_BUFFER_DTS_IS_VALID (last_buf)) { last_dts = gst_util_uint64_scale_round (GST_BUFFER_DTS (last_buf), atom_trak_get_timescale (pad->trak), GST_SECOND); pts_offset = (gint64) (gst_util_uint64_scale_round (GST_BUFFER_PTS (last_buf), atom_trak_get_timescale (pad->trak), GST_SECOND) - last_dts); - } else { pts_offset = 0; last_dts = gst_util_uint64_scale_round (GST_BUFFER_PTS (last_buf), @@ -3388,6 +3390,11 @@ fragmented_sample: ("Audio buffer contains fragmented sample.")); goto bail; } +no_pts: + { + GST_ELEMENT_ERROR (qtmux, STREAM, MUX, (NULL), ("Buffer has no PTS.")); + goto bail; + } not_negotiated: { GST_ELEMENT_ERROR (qtmux, CORE, NEGOTIATION, (NULL),