buffer: implement COPY_MERGE
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 29 Mar 2011 15:17:46 +0000 (17:17 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 29 Mar 2011 15:17:46 +0000 (17:17 +0200)
gst/gstbuffer.c

index e3ce594..8faadaa 100644 (file)
@@ -169,6 +169,9 @@ _span_memory (GstBuffer * buffer, gsize offset, gsize size)
   /* not enough room, span buffers */
   mem[0] = GST_BUFFER_MEM_ARRAY (buffer);
   len[0] = GST_BUFFER_MEM_LEN (buffer);
+  if (len[0] == 1)
+    return;
+
   span = _gst_buffer_arr_span (mem, len, 1, offset, size);
 
   /* unref old buffers */
@@ -324,6 +327,9 @@ gst_buffer_copy_into (GstBuffer * dest, GstBuffer * src,
         left -= tocopy;
       }
     }
+    if (flags & GST_BUFFER_COPY_MERGE) {
+      _span_memory (dest, 0, size);
+    }
   }
 
   for (walk = GST_BUFFER_META (src); walk; walk = walk->next) {