summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.com>2021-05-22 19:32:55 +0100
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-05-23 07:32:09 +0000
commit04fe2233f09a58deabd6b7d26182c81b1b6758c3 (patch)
tree9dec48f7b9dcb6ef0bcd958d9f3d2058a1926986 /gst
parentcaa608e5c0c5829f67a4fbe82e0abc28b24aa150 (diff)
buffer: add gst_buffer_new_copy() convenience function
More convenient and discoverable variant of the fairly widely-used gst_buffer_new_wrapped(g_memdup(data,size),size). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/826>
Diffstat (limited to 'gst')
-rw-r--r--gst/gstbuffer.c19
-rw-r--r--gst/gstbuffer.h4
2 files changed, 23 insertions, 0 deletions
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index 2d91d4e5e2..97b1b9fc31 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -1040,6 +1040,25 @@ gst_buffer_new_wrapped_bytes (GBytes * bytes)
}
/**
+ * gst_buffer_new_copy:
+ * @data: (array length=size) (element-type guint8) (transfer none): data to copy into new buffer
+ * @size: size of @data in bytes
+ *
+ * Creates a new buffer of size @size and fills it with a copy of @data.
+ *
+ * Returns: (transfer full): a new #GstBuffer
+ *
+ * Since: 1.20
+ */
+GstBuffer *
+gst_buffer_new_copy (gconstpointer data, gsize size)
+{
+ gpointer data2 = g_memdup (data, size);
+
+ return gst_buffer_new_wrapped_full (0, data2, size, 0, size, data2, g_free);
+}
+
+/**
* gst_buffer_n_memory:
* @buffer: a #GstBuffer.
*
diff --git a/gst/gstbuffer.h b/gst/gstbuffer.h
index 83eba10c84..0b9e77da57 100644
--- a/gst/gstbuffer.h
+++ b/gst/gstbuffer.h
@@ -314,9 +314,13 @@ GstBuffer * gst_buffer_new_wrapped_full (GstMemoryFlags flags, gpointer data,
GDestroyNotify notify);
GST_API
GstBuffer * gst_buffer_new_wrapped (gpointer data, gsize size);
+
GST_API
GstBuffer * gst_buffer_new_wrapped_bytes (GBytes * bytes);
+GST_API
+GstBuffer * gst_buffer_new_copy (gconstpointer data, gsize size);
+
/* memory blocks */
GST_API