GstAdapter

GstAdapter —

Synopsis


#include <gst/base/gstadapter.h>


            GstAdapter;
GstAdapter* gst_adapter_new                 (void);
void        gst_adapter_clear               (GstAdapter *adapter);
void        gst_adapter_push                (GstAdapter *adapter,
                                             GstBuffer *buf);
const guint8* gst_adapter_peek              (GstAdapter *adapter,
                                             guint size);
void        gst_adapter_flush               (GstAdapter *adapter,
                                             guint flush);
guint       gst_adapter_available           (GstAdapter *adapter);
guint       gst_adapter_available_fast      (GstAdapter *adapter);
guint8*     gst_adapter_take                (GstAdapter *adapter,
                                             guint nbytes);


Description

Details

GstAdapter

typedef struct {
  GObject	object;
} GstAdapter;

The opaque GstAdapter data structure.


gst_adapter_new ()

GstAdapter* gst_adapter_new                 (void);

Creates a new GstAdapter.

Returns : a new GstAdapter

gst_adapter_clear ()

void        gst_adapter_clear               (GstAdapter *adapter);

Removes all buffers from adapter.

adapter : a GstAdapter

gst_adapter_push ()

void        gst_adapter_push                (GstAdapter *adapter,
                                             GstBuffer *buf);

Adds the data from buf to the data stored inside adapter and takes ownership of the buffer.

adapter : a GstAdapter
buf : a GstBuffer to add to queue in the adapter

gst_adapter_peek ()

const guint8* gst_adapter_peek              (GstAdapter *adapter,
                                             guint size);

Gets the first size bytes stored in the adapter. The returned pointer is valid until the next function is called on the adapter.

Note that setting the returned pointer as the data of a GstBuffer is incorrect for general-purpose plugins. The reason is that if a downstream element stores the buffer so that it has access to it outside of the bounds of its chain function, the buffer will have an invalid data pointer after your element flushes the bytes. In that case you should use gst_adapter_take(), which returns a freshly-allocated buffer that you can set as GstBuffer malloc_data.

Returns NULL if size bytes are not available.

adapter : a GstAdapter
size : the number of bytes to peek
Returns : a pointer to the first size bytes of data, or NULL.

gst_adapter_flush ()

void        gst_adapter_flush               (GstAdapter *adapter,
                                             guint flush);

Flushes the first flush bytes in the adapter. The caller must ensure that at least this many bytes are available.

See also: gst_adapter_peek().

adapter : a GstAdapter
flush : the number of bytes to flush

gst_adapter_available ()

guint       gst_adapter_available           (GstAdapter *adapter);

Gets the maximum amount of bytes available, that is it returns the maximum value that can be supplied to gst_adapter_peek() without that function returning NULL.

adapter : a GstAdapter
Returns : number of bytes available in adapter

gst_adapter_available_fast ()

guint       gst_adapter_available_fast      (GstAdapter *adapter);

Gets the maximum number of bytes available without the need to do expensive operations (like copying the data into a temporary buffer).

adapter : a GstAdapter
Returns : number of bytes available in adapter without expensive operations

gst_adapter_take ()

guint8*     gst_adapter_take                (GstAdapter *adapter,
                                             guint nbytes);

Returns a freshly allocated buffer containing the first nbytes bytes of the adapter.

Caller owns returned value.

adapter : a GstAdapter
nbytes : the number of bytes to take
Returns : oven-fresh hot data, or NULL if nbytes bytes are not available