diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-09-28 23:03:58 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-09-29 17:45:37 +0300 |
commit | a993883b74598e5a1bc91348ea383fd856111d9b (patch) | |
tree | f8430728a166d08385df81f2443edc24c7cd945a | |
parent | 52879dacbc688da164154d6bb11c0f5e94127ec5 (diff) |
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
-rw-r--r-- | gst/isomp4/gstqtmux.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index c28eaf6d0..27f90906d 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), |