qtmux: Adding some ifs for protection
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>
Fri, 6 Nov 2009 03:46:12 +0000 (00:46 -0300)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 12 Apr 2011 19:32:13 +0000 (20:32 +0100)
Adding somes ifs to protect against warning conditions
that might happen when upstream element is not sane

Fixes #600895

gst/quicktime/atoms.c
gst/quicktime/gstqtmux.c

index 838b50f..2f69098 100644 (file)
@@ -2425,9 +2425,13 @@ atom_trak_update_duration (AtomTRAK * trak, guint64 moov_timescale)
 {
   trak->mdia.mdhd.time_info.duration =
       atom_stts_get_total_duration (&trak->mdia.minf.stbl.stts);
-  trak->tkhd.duration =
-      gst_util_uint64_scale (trak->mdia.mdhd.time_info.duration, moov_timescale,
-      trak->mdia.mdhd.time_info.timescale);
+  if (trak->mdia.mdhd.time_info.timescale != 0) {
+    trak->tkhd.duration =
+        gst_util_uint64_scale (trak->mdia.mdhd.time_info.duration,
+        moov_timescale, trak->mdia.mdhd.time_info.timescale);
+  } else {
+    trak->tkhd.duration = 0;
+  }
 }
 
 static guint32
index b52b871..41ea97f 100644 (file)
@@ -1126,7 +1126,7 @@ gst_qt_mux_stop_file (GstQTMux * qtmux)
         GST_PAD_NAME (qtpad->collect.pad));
     ret = gst_qt_mux_add_buffer (qtmux, qtpad, NULL);
     if (ret != GST_FLOW_OK)
-      GST_DEBUG_OBJECT (qtmux, "Failed to send last buffer for %s, "
+      GST_WARNING_OBJECT (qtmux, "Failed to send last buffer for %s, "
           "flow return: %s", GST_PAD_NAME (qtpad->collect.pad),
           gst_flow_get_name (ret));
   }
@@ -1405,7 +1405,8 @@ not_negotiated:
     GST_ELEMENT_ERROR (qtmux, CORE, NEGOTIATION, (NULL),
         ("format wasn't negotiated before buffer flow on pad %s",
             GST_PAD_NAME (pad->collect.pad)));
-    gst_buffer_unref (buf);
+    if (buf)
+      gst_buffer_unref (buf);
     return GST_FLOW_NOT_NEGOTIATED;
   }
 }