qtmux: Use buffer PTS if DTS is not set
authorEdward Hervey <edward@collabora.com>
Sun, 4 Aug 2013 14:52:15 +0000 (16:52 +0200)
committerEdward Hervey <edward@collabora.com>
Sun, 4 Aug 2013 15:15:38 +0000 (17:15 +0200)
Avoids ending up with completely bogus scaled duration/pts when new
buffers have invalid DTS.

gst/isomp4/gstqtmux.c

index 7207a00..6a9de52 100644 (file)
@@ -2229,7 +2229,10 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf)
     if (pad->have_dts) {
       gint64 scaled_dts;
       if (pad->last_buf) {
-        pad->last_dts = GST_BUFFER_DTS (pad->last_buf);
+        if (GST_BUFFER_DTS_IS_VALID (pad->last_buf))
+          pad->last_dts = GST_BUFFER_DTS (pad->last_buf);
+        else
+          pad->last_dts = GST_BUFFER_PTS (pad->last_buf);
       } else {
         pad->last_dts = GST_BUFFER_DTS (last_buf) +
             GST_BUFFER_DURATION (last_buf);