summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Walthinsen <omega@temple-baptist.org>2001-04-22 01:41:40 +0000
committerErik Walthinsen <omega@temple-baptist.org>2001-04-22 01:41:40 +0000
commite5abd7fde71f4a55b086d14c3e0f7b81bfd35d45 (patch)
treeea58350481595fb3a38cbbd9d20a290a580665c1
parent2acfc61ce7224f7a261e868492d4f9da8456d346 (diff)
completed gst_buffer_copy, added API comments
Original commit message from CVS: completed gst_buffer_copy, added API comments
-rw-r--r--gst/gstbuffer.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index db9c9d4295..8e76f5a68c 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -398,18 +398,31 @@ gst_buffer_remove_meta (GstBuffer *buffer, GstMeta *meta)
+/**
+ * gst_buffer_copy:
+ * @buffer: the orignal GstBuffer to make a copy of
+ *
+ * Make a full copy of the give buffer, data and all.
+ *
+ * Returns: new buffer
+ */
GstBuffer *
-gst_buffer_copy (GstBuffer *buf)
+gst_buffer_copy (GstBuffer *buffer)
{
GstBuffer *newbuf;
-/***** FIXME: this is not complete, it doesn't copy everything it should *****/
newbuf = gst_buffer_new();
- GST_BUFFER_SIZE(newbuf) = GST_BUFFER_DATA(buf);
- GST_BUFFER_DATA(newbuf) = malloc(GST_BUFFER_SIZE(buf));
- memcpy(GST_BUFFER_DATA(newbuf),GST_BUFFER_DATA(buf),GST_BUFFER_SIZE(buf));
- GST_BUFFER_OFFSET(newbuf) = GST_BUFFER_OFFSET(buf);
- GST_BUFFER_TIMESTAMP(newbuf) = GST_BUFFER_TIMESTAMP(buf);
+ GST_BUFFER_SIZE(newbuf) = GST_BUFFER_SIZE(buffer);
+ GST_BUFFER_DATA(newbuf) = malloc(GST_BUFFER_SIZE(buffer));
+ memcpy(GST_BUFFER_DATA(newbuf),GST_BUFFER_DATA(buf),GST_BUFFER_SIZE(buffer));
+ GST_BUFFER_MAXSIZE(newbuf) = GST_BUFFER_MAXSIZE(buffer);
+ GST_BUFFER_OFFSET(newbuf) = GST_BUFFER_OFFSET(buffer);
+ GST_BUFFER_TIMESTAMP(newbuf) = GST_BUFFER_TIMESTAMP(buffer);
+ GST_BUFFER_MAXAGE(newbuf) = GST_BUFFER_MAXAGE(buffer);
+
+ // since we just created a new buffer, so we have no ties to old stuff
+ GST_BUFFER_PARENT(newbuf) = NULL;
+ GST_BUFFER_POOL(newbuf) = NULL;
return newbuf;
}