Description
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
nither memory space goes away. Metadata is supported as a list of
pointers to arbitrary metadata.
Details
GST_BUFFER_FLAGS()
#define GST_BUFFER_FLAGS(buf) |
Get the flags from this buffer.
GST_BUFFER_FLAG_IS_SET()
#define GST_BUFFER_FLAG_IS_SET(buf,flag) |
Gives the status of a given flag.
GST_BUFFER_FLAG_SET()
#define GST_BUFFER_FLAG_SET(buf,flag) |
Set a flag in a buffer.
GST_BUFFER_FLAG_UNSET()
#define GST_BUFFER_FLAG_UNSET(buf,flag) |
Clear a flag in a buffer.
GST_BUFFER_TYPE()
#define GST_BUFFER_TYPE(buf) (GST_BUFFER(buf)->type) |
Retrieves the type id of the data in the buffer.
GST_BUFFER_DATA()
#define GST_BUFFER_DATA(buf) (GST_BUFFER(buf)->data) |
Retrieves a pointer to the data element of this buffer
GST_BUFFER_SIZE()
#define GST_BUFFER_SIZE(buf) (GST_BUFFER(buf)->size) |
Get the size of the data in this buffer.
GST_BUFFER_OFFSET()
#define GST_BUFFER_OFFSET(buf) (GST_BUFFER(buf)->offset) |
Get the offset in the source file of this buffer.
GST_BUFFER_MAXSIZE()
#define GST_BUFFER_MAXSIZE(buf) (GST_BUFFER(buf)->maxsize) |
GST_BUFFER_TIMESTAMP()
#define GST_BUFFER_TIMESTAMP(buf) (GST_BUFFER(buf)->timestamp) |
Get the timestamp for this buffer.
GST_BUFFER_LOCK()
#define GST_BUFFER_LOCK(buf) (g_mutex_lock(GST_BUFFER(buf)->lock)) |
This macro will obtain a lock on the object, making serialization
possible.
GST_BUFFER_TRYLOCK()
#define GST_BUFFER_TRYLOCK(buf) (g_mutex_trylock(GST_BUFFER(buf)->lock)) |
This macro will try to obtain a lock on the object, but will return with
FALSE if it can't get it immediately.
GST_BUFFER_UNLOCK()
#define GST_BUFFER_UNLOCK(buf) (g_mutex_unlock(GST_BUFFER(buf)->lock)) |
This macro releases a lock on the object.
enum GstBufferFlags
typedef enum {
GST_BUFFER_READONLY,
GST_BUFFER_ORIGINAL,
GST_BUFFER_DONTFREE,
GST_BUFFER_FLUSH,
GST_BUFFER_EOS,
GST_BUFFER_DISCONTINUOUS,
} GstBufferFlags; |
struct GstBuffer
struct GstBuffer {
/* locking */
GMutex *lock;
/* refcounting */
#ifdef HAVE_ATOMIC_H
atomic_t refcount;
#define GST_BUFFER_REFCOUNT(buf) (atomic_read(&(GST_BUFFER((buf))->refcount)))
#else
int refcount;
#define GST_BUFFER_REFCOUNT(buf) (GST_BUFFER(buf)->refcount)
#endif
/* data type of this buffer */
guint16 type;
/* flags */
guint16 flags;
/* pointer to data, its size, and offset in original source if known */
guchar *data;
guint32 size;
guint32 maxsize;
guint32 offset;
/* timestamp */
guint64 timestamp;
/* max age */
guint64 maxage;
/* pointer to metadata, is really lame right now */
GSList *metas;
/* subbuffer support, who's my parent? */
GstBuffer *parent;
/* this is a pointer to the buffer pool (if any) */
GstBufferPool *pool;
}; |
gst_buffer_new ()
Create a new buffer.
gst_buffer_new_from_pool ()
Create a new buffer using the specified bufferpool.
gst_buffer_create_sub ()
Creates a sub-buffer from the parent at a given offset.
gst_buffer_append ()
Creates a new buffer by appending the data of append to the
existing data of buffer.
gst_buffer_ref ()
Increment the refcount of this buffer.
gst_buffer_ref_by_count ()
void gst_buffer_ref_by_count (GstBuffer *buffer,
int count); |
Increment the refcount of this buffer by the given number.
gst_buffer_unref ()
Decrement the refcount of this buffer. If the refcount is
zero, the buffer will be destroyed.
gst_buffer_destroy ()
destroy the buffer
gst_buffer_add_meta ()
Add the meta data to the buffer.
gst_buffer_get_first_meta ()
Get the first metadata from the buffer.
gst_buffer_get_metas ()
GSList* gst_buffer_get_metas (GstBuffer *buffer); |
Get the metadatas from the buffer.
gst_buffer_remove_meta ()
Remove the given metadata from the buffer.