qtmux: In prefill mode, only pad buffers with > 0 sized memories as needed
authorSebastian Dröge <sebastian@centricular.com>
Thu, 11 May 2017 17:21:22 +0000 (19:21 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 11 May 2017 17:21:22 +0000 (19:21 +0200)
Adding a 0-byte memory has not much effect.

Also add some debug output.

gst/isomp4/gstqtmux.c

index c9fab7c..267d3d8 100644 (file)
@@ -4096,13 +4096,18 @@ gst_qt_mux_add_buffer (GstQTMux * qtmux, GstQTPad * pad, GstBuffer * buf)
       goto bail;
     }
 
-    mem = gst_allocator_alloc (NULL, fill_size, NULL);
-    gst_memory_map (mem, &map, GST_MAP_WRITE);
-    memset (map.data, 0, map.size);
-    gst_memory_unmap (mem, &map);
-    last_buf = gst_buffer_make_writable (last_buf);
-    gst_buffer_append_memory (last_buf, mem);
-    buffer_size = required_buffer_size;
+    if (fill_size > 0) {
+      GST_DEBUG_OBJECT (qtmux,
+          "Padding buffer by %u bytes to reach required %u bytes", fill_size,
+          required_buffer_size);
+      mem = gst_allocator_alloc (NULL, fill_size, NULL);
+      gst_memory_map (mem, &map, GST_MAP_WRITE);
+      memset (map.data, 0, map.size);
+      gst_memory_unmap (mem, &map);
+      last_buf = gst_buffer_make_writable (last_buf);
+      gst_buffer_append_memory (last_buf, mem);
+      buffer_size = required_buffer_size;
+    }
   }
 
   /* duration actually means time delta between samples, so we calculate