From 819efb4e9044f0005e49d02acfb9efd3bafd3aab Mon Sep 17 00:00:00 2001 From: Erik Walthinsen Date: Sun, 22 Apr 2001 01:30:19 +0000 Subject: [PATCH] Added gst_buffer_copy(). It's not complete, it should copy more stuff like flags and such. FIXME. Original commit message from CVS: Added gst_buffer_copy(). It's not complete, it should copy more stuff like flags and such. FIXME. --- gst/gstbuffer.c | 18 ++++++++++++++++++ gst/gstbuffer.h | 3 +++ 2 files changed, 21 insertions(+) diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c index 5f29ab84d1..db9c9d4295 100644 --- a/gst/gstbuffer.c +++ b/gst/gstbuffer.c @@ -395,3 +395,21 @@ gst_buffer_remove_meta (GstBuffer *buffer, GstMeta *meta) buffer->metas = g_slist_remove (buffer->metas, meta); gst_meta_unref (meta); } + + + +GstBuffer * +gst_buffer_copy (GstBuffer *buf) +{ + 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); + + return newbuf; +} diff --git a/gst/gstbuffer.h b/gst/gstbuffer.h index bf9fe23f36..1a89f9a8ab 100644 --- a/gst/gstbuffer.h +++ b/gst/gstbuffer.h @@ -143,6 +143,9 @@ void gst_buffer_unref (GstBuffer *buffer); /* destroying the buffer */ void gst_buffer_destroy (GstBuffer *buffer); +/* copy buffer */ +GstBuffer* gst_buffer_copy (GstBuffer *buffer); + /* add, retrieve, and remove metadata from the buffer */ void gst_buffer_add_meta (GstBuffer *buffer, GstMeta *meta); void gst_buffer_remove_meta (GstBuffer *buffer, GstMeta *meta);