GstBuffer
Data-passing buffer type, supporting sub-buffers and metadata
Buffers are the basic unit of data transfer in GST. The GstBuffer type
provides all the state necessary to define a region of memory as part of a
stream. Sub-buffer are also supported, allowing a smaller region of a
buffer to become its own buffer, with mechanisms in place to ensure that
neither memory space goes away. Metadata is supported as a list of
pointers to arbitrary metadata.
Buffers are usually created with gst_buffer_new(). After a buffer has been
created one will typically allocate memory for it and set the size of the
buffer data.
GstBuffer *buffer;
gint size, widht, height, bpp;
size = width * height * bpp;
buffer = gst_buffer_new ();
GST_BUFFER_SIZE (buffer) = size;
GST_BUFFER_DATA (buffer) = g_alloc (size);
...
GstBuffers can also be created from a GstBufferPool with
gst_buffer_new_from_pool(). The bufferpool can be obtained from a
peer element with gst_pad_get_bufferpool().
gst_buffer_ref() is used to increase the refcount of a buffer. This must be
done when you want to keep a handle to the buffer after pushing it to the
next element.
To efficiently create a smaller buffer out of an existing one, you can
use gst_buffer_create_sub().
Several flags of the buffer can be set and unset with the GST_BUFFER_FLAG_SET()
and GST_BUFFER_FLAG_UNSET() macros. Use GST_BUFFER_FLAG_IS_SET() to test it
a certain flag is set.
Buffers usually are freed by unreffing them with gst_buffer_unref().
gst_buffer_destroy() can also be used to effectively destroy the buffer
regardless of the refcount (dangerous).
#GstBufferPool, #GstPad
Get the flags from this buffer.
@buf: GstBuffer to retrieve the flags from
Gives the status of a given flag.
@buf: GstBuffer to query
@flag: the flag to check
Set a flag in a buffer.
@buf: GstBuffer to query
@flag: the flag to set
Clear a flag in a buffer.
@buf: GstBuffer to modify
@flag: the flag to clear
Retrieves a pointer to the data element of this buffer
@buf: GstBuffer
Get the size of the data in this buffer.
@buf: GstBuffer
Get the offset in the source file of this buffer.
@buf: GstBuffer
Gets the maximun size of this buffer.
@buf: GstBuffer
Get the timestamp for this buffer.
@buf: GstBuffer
Get the bufferpool for this buffer.
@buf: GstBuffer
Get the bufferpool private data.
@buf: GstBuffer
@pool:
This macro will obtain a lock on the object, making serialization
possible.
@buf: GstBuffer to lock
This macro will try to obtain a lock on the object, but will return with
FALSE if it can't get it immediately.
@buf: GstBuffer to try to lock
This macro releases a lock on the object.
@buf: GstBuffer to unlock.
Get the parent of this buffer. The parent is set on subbuffers.
@buf: GstBuffer to get the parent of.
Get the maximun age of a buffer.
@buf: GstBuffer to get the maxage of.
This function is used to copy the buffer contents.
@srcbuf: the src buffer
@dstbuf: the destination buffer
The function called when the buffer data has to be freed
@buf: the buffer to clear the buffer data of.
@GST_BUFFER_READONLY: the buffer is read only
@GST_BUFFER_ORIGINAL: this buffer not a copy
@GST_BUFFER_DONTFREE: do not try to free the data when this buffer is unref-ed
@GST_BUFFER_FLUSH: this buffer is not related to previous buffers. This flag is mainly
used when data in a stream has been skipped
@GST_BUFFER_EOS: this buffer is the last one in the stream
@GST_BUFFER_DISCONTINUOUS: The buffer has a discontinuity
@lock:
@data:
@size:
@maxsize:
@offset:
@timestamp:
@maxage:
@parent:
@pool:
@pool_private:
@free:
@Returns:
@pool:
@Returns:
@buffer:
@Returns:
@parent:
@offset:
@size:
@Returns:
@buffer:
@append:
@Returns:
@buffer:
@buffer:
@count:
@buffer:
@buffer: