qtmux: Don't calculate PTS offset and DTS with GST_CLOCK_TIME_NONE
authorSebastian Dröge <sebastian@centricular.com>
Wed, 28 Sep 2016 20:03:58 +0000 (23:03 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 29 Sep 2016 14:45:37 +0000 (17:45 +0300)
Just error out if there is no valid PTS.

https://bugzilla.gnome.org/show_bug.cgi?id=772143

gst/isomp4/gstqtmux.c

index c28eaf6..27f9090 100644 (file)
@@ -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),