summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2016-09-28 23:03:58 +0300
committerSebastian Dröge <sebastian@centricular.com>2016-09-29 17:45:37 +0300
commita993883b74598e5a1bc91348ea383fd856111d9b (patch)
treef8430728a166d08385df81f2443edc24c7cd945a
parent52879dacbc688da164154d6bb11c0f5e94127ec5 (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.c11
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),