meta: add boolean to signal a region copy
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 2 Mar 2012 11:45:23 +0000 (12:45 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Fri, 2 Mar 2012 11:45:23 +0000 (12:45 +0100)
Add a boolean to the metadata copy transform that signals if a only a
region is copied.

gst/gstbuffer.c
gst/gstmeta.h

index 1b1db7e0817336a766cebe2826892ddf1ba6c4f9..ca758b5d38f3420e10dc03dfb04a692369ef767a 100644 (file)
@@ -271,6 +271,7 @@ gst_buffer_copy_into (GstBuffer * dest, GstBuffer * src,
 {
   GstMetaItem *walk;
   gsize bufsize;
+  gboolean region = FALSE;
 
   g_return_if_fail (dest != NULL);
   g_return_if_fail (src != NULL);
@@ -283,8 +284,12 @@ gst_buffer_copy_into (GstBuffer * dest, GstBuffer * src,
 
   bufsize = gst_buffer_get_size (src);
   g_return_if_fail (bufsize >= offset);
+  if (offset > 0)
+    region = TRUE;
   if (size == -1)
     size = bufsize - offset;
+  if (size < bufsize)
+    region = TRUE;
   g_return_if_fail (bufsize >= offset + size);
 
   GST_CAT_LOG (GST_CAT_BUFFER, "copy %p to %p, offset %" G_GSIZE_FORMAT
@@ -362,6 +367,7 @@ gst_buffer_copy_into (GstBuffer * dest, GstBuffer * src,
       if (info->transform_func) {
         GstMetaTransformCopy copy_data;
 
+        copy_data.region = region;
         copy_data.offset = offset;
         copy_data.size = size;
 
index a99dd3cfca16b167ac05e2e53706020ad83af01a..c616a74833236c26a04a7cd619e58d1fbd0770ee 100644 (file)
@@ -123,12 +123,14 @@ GST_EXPORT GQuark _gst_meta_transform_copy;
 
 /**
  * GstMetaTransformCopy:
- * @offset: the offset to copy
- * @size: the size to copy
+ * @region: %TRUE if only region is copied
+ * @offset: the offset to copy, 0 if @region is %FALSE, otherwise > 0
+ * @size: the size to copy, -1 or the buffer size when @region is %FALSE
  *
  * Extra data passed to a "gst-copy" transform #GstMetaTransformFunction.
  */
 typedef struct {
+  gboolean region;
   gsize offset;
   gsize size;
 } GstMetaTransformCopy;