avimux: don't make the buffer writable unless absolutely necessary
authorMichael Olbrich <m.olbrich@pengutronix.de>
Wed, 11 Dec 2013 08:36:22 +0000 (09:36 +0100)
committerThiago Santos <ts.santos@sisa.samsung.com>
Fri, 17 Jan 2014 22:25:15 +0000 (19:25 -0300)
https://bugzilla.gnome.org/show_bug.cgi?id=722396

gst/avi/gstavimux.c

index 7c90f10..f1de873 100644 (file)
@@ -1998,13 +1998,16 @@ gst_avi_mux_do_buffer (GstAviMux * avimux, GstAviPad * avipad)
   gulong total_size, pad_bytes = 0;
   guint flags;
   gsize datasize;
+  GstClockTime time;
 
   data = gst_collect_pads_pop (avimux->collect, avipad->collect);
   /* arrange downstream running time */
-  data = gst_buffer_make_writable (data);
-  GST_BUFFER_TIMESTAMP (data) =
-      gst_segment_to_running_time (&avipad->collect->segment,
+  time = gst_segment_to_running_time (&avipad->collect->segment,
       GST_FORMAT_TIME, GST_BUFFER_TIMESTAMP (data));
+  if (time != GST_BUFFER_TIMESTAMP (data)) {
+    data = gst_buffer_make_writable (data);
+    GST_BUFFER_TIMESTAMP (data) = time;
+  }
 
   /* Prepend a special buffer to the first one for some formats */
   if (avipad->is_video) {