buffer: Add annotations and pygi friendly extraction function

API: gst_buffer_extract_dup

Conflicts:
	gst/gstbuffer.h
This commit is contained in:
Olivier Crête 2013-03-26 19:22:18 -04:00 committed by Sebastian Dröge
parent c329cc3aeb
commit 2560624fb0
4 changed files with 33 additions and 0 deletions

View file

@ -221,6 +221,7 @@ gst_buffer_unmap
gst_buffer_memcmp
gst_buffer_extract
gst_buffer_extract_dup
gst_buffer_fill
gst_buffer_memset

View file

@ -2013,3 +2013,31 @@ gst_buffer_foreach_meta (GstBuffer * buffer, GstBufferForeachMetaFunc func,
}
return res;
}
/**
* gst_buffer_extract_dup:
* @buffer: a #GstBuffer
* @offset: the offset to extract
* @size: the size to extract
* @dest: (array length=dest_size) (element-type guint8) (out): A pointer where
* the destination array will be written.
* @dest_size: (out): A location where the size of @dest can be written
*
* Extracts a copy of at most @size bytes the data at @offset into a #GBytes.
* @dest must be freed using g_free() when done.
*
* Since: 3.2
*/
void
gst_buffer_extract_dup (GstBuffer * buffer, gsize offset, gsize size,
gpointer * dest, gsize * dest_size)
{
gsize real_size;
real_size = gst_buffer_get_size (buffer);
*dest = g_malloc (MIN (real_size - offset, size));
*dest_size = gst_buffer_extract (buffer, offset, *dest, size);
}

View file

@ -306,6 +306,9 @@ gboolean gst_buffer_map_range (GstBuffer *buffer, guint idx, gint l
gboolean gst_buffer_map (GstBuffer *buffer, GstMapInfo *info, GstMapFlags flags);
void gst_buffer_unmap (GstBuffer *buffer, GstMapInfo *info);
void gst_buffer_extract_dup (GstBuffer *buffer, gsize offset,
gsize size, gpointer *dest,
gsize *dest_size);
/* refcounting */
/**

View file

@ -97,6 +97,7 @@ EXPORTS
gst_buffer_copy_into
gst_buffer_copy_region
gst_buffer_extract
gst_buffer_extract_dup
gst_buffer_fill
gst_buffer_find_memory
gst_buffer_flags_get_type