GstBitReader

GstBitReader — Reads any number of bits from a memory buffer

Synopsis


#include <gst/base/gstbitreader.h>

                    GstBitReader;
#define             GST_BIT_READER_INIT                 (data, size)
#define             GST_BIT_READER_INIT_FROM_BUFFER     (buffer)
GstBitReader*       gst_bit_reader_new                  (const guint8 *data,
                                                         guint size);
GstBitReader*       gst_bit_reader_new_from_buffer      (const GstBuffer *buffer);
void                gst_bit_reader_free                 (GstBitReader *reader);
void                gst_bit_reader_init                 (GstBitReader *reader,
                                                         const guint8 *data,
                                                         guint size);
void                gst_bit_reader_init_from_buffer     (GstBitReader *reader,
                                                         const GstBuffer *buffer);
guint               gst_bit_reader_get_pos              (const GstBitReader *reader);
guint               gst_bit_reader_get_remaining        (const GstBitReader *reader);
gboolean            gst_bit_reader_set_pos              (GstBitReader *reader,
                                                         guint pos);
gboolean            gst_bit_reader_skip                 (GstBitReader *reader,
                                                         guint nbits);
gboolean            gst_bit_reader_skip_to_byte         (GstBitReader *reader);
gboolean            gst_bit_reader_get_bits_uint16      (GstBitReader *reader,
                                                         guint16 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_get_bits_uint32      (GstBitReader *reader,
                                                         guint32 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_get_bits_uint64      (GstBitReader *reader,
                                                         guint64 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_get_bits_uint8       (GstBitReader *reader,
                                                         guint8 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_peek_bits_uint16     (const GstBitReader *reader,
                                                         guint16 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_peek_bits_uint32     (const GstBitReader *reader,
                                                         guint32 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_peek_bits_uint64     (const GstBitReader *reader,
                                                         guint64 *val,
                                                         guint nbits);
gboolean            gst_bit_reader_peek_bits_uint8      (const GstBitReader *reader,
                                                         guint8 *val,
                                                         guint nbits);

Description

GstBitReader provides a bit reader that can read any number of bits from a memory buffer. It provides functions for reading any number of bits into 8, 16, 32 and 64 bit variables.

Details

GstBitReader

typedef struct {
  const guint8 *data;
  guint size;

  guint byte;  /* Byte position */
  guint bit;   /* Bit position in the current byte */
} GstBitReader;

A bit reader instance.

const guint8 *data; Data from which the bit reader will read
guint size; Size of data in bytes
guint byte; Current byte position
guint bit; Bit position in the current byte

GST_BIT_READER_INIT()

#define GST_BIT_READER_INIT(data, size) {data, size, 0, 0}

A GstBitReader must be initialized with this macro, before it can be used. This macro can used be to initialize a variable, but it cannot be assigned to a variable. In that case you have to use gst_bit_reader_init().

data : Data from which the GstBitReader should read
size : Size of data in bytes

Since 0.10.22


GST_BIT_READER_INIT_FROM_BUFFER()

#define GST_BIT_READER_INIT_FROM_BUFFER(buffer) {GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer), 0, 0}

A GstBitReader must be initialized with this macro, before it can be used. This macro can used be to initialize a variable, but it cannot be assigned to a variable. In that case you have to use gst_bit_reader_init().

buffer : Buffer from which the GstBitReader should read

Since 0.10.22


gst_bit_reader_new ()

GstBitReader*       gst_bit_reader_new                  (const guint8 *data,
                                                         guint size);

Create a new GstBitReader instance, which will read from data.

data : Data from which the GstBitReader should read
size : Size of data in bytes
Returns : a new GstBitReader instance

Since 0.10.22


gst_bit_reader_new_from_buffer ()

GstBitReader*       gst_bit_reader_new_from_buffer      (const GstBuffer *buffer);

Create a new GstBitReader instance, which will read from the GstBuffer buffer.

buffer : Buffer from which the GstBitReader should read
Returns : a new GstBitReader instance

Since 0.10.22


gst_bit_reader_free ()

void                gst_bit_reader_free                 (GstBitReader *reader);

Frees a GstBitReader instance, which was previously allocated by gst_bit_reader_new() or gst_bit_reader_new_from_buffer().

reader : a GstBitReader instance

Since 0.10.22


gst_bit_reader_init ()

void                gst_bit_reader_init                 (GstBitReader *reader,
                                                         const guint8 *data,
                                                         guint size);

Initializes a GstBitReader instance to read from data. This function can be called on already initialized instances.

reader : a GstBitReader instance
data : Data from which the GstBitReader should read
size : Size of data in bytes

Since 0.10.22


gst_bit_reader_init_from_buffer ()

void                gst_bit_reader_init_from_buffer     (GstBitReader *reader,
                                                         const GstBuffer *buffer);

Initializes a GstBitReader instance to read from buffer. This function can be called on already initialized instances.

reader : a GstBitReader instance
buffer : Buffer from which the GstBitReader should read

Since 0.10.22


gst_bit_reader_get_pos ()

guint               gst_bit_reader_get_pos              (const GstBitReader *reader);

Returns the current position of a GstBitReader instance in bits.

reader : a GstBitReader instance
Returns : The current position of reader in bits.

Since 0.10.22


gst_bit_reader_get_remaining ()

guint               gst_bit_reader_get_remaining        (const GstBitReader *reader);

Returns the remaining number of bits of a GstBitReader instance.

reader : a GstBitReader instance
Returns : The remaining number of bits of reader instance.

Since 0.10.22


gst_bit_reader_set_pos ()

gboolean            gst_bit_reader_set_pos              (GstBitReader *reader,
                                                         guint pos);

Sets the new position of a GstBitReader instance to pos in bits.

reader : a GstBitReader instance
pos : The new position in bits
Returns : TRUE if the position could be set successfully, FALSE otherwise.

Since 0.10.22


gst_bit_reader_skip ()

gboolean            gst_bit_reader_skip                 (GstBitReader *reader,
                                                         guint nbits);

Skips nbits bits of the GstBitReader instance.

reader : a GstBitReader instance
nbits : the number of bits to skip
Returns : TRUE if nbits bits could be skipped, FALSE otherwise.

Since 0.10.22


gst_bit_reader_skip_to_byte ()

gboolean            gst_bit_reader_skip_to_byte         (GstBitReader *reader);

Skips until the next byte.

reader : a GstBitReader instance
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_get_bits_uint16 ()

gboolean            gst_bit_reader_get_bits_uint16      (GstBitReader *reader,
                                                         guint16 *val,
                                                         guint nbits);

Read nbits bits into val and update the current position.

reader : a GstBitReader instance
val : Pointer to a guint16 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_get_bits_uint32 ()

gboolean            gst_bit_reader_get_bits_uint32      (GstBitReader *reader,
                                                         guint32 *val,
                                                         guint nbits);

Read nbits bits into val and update the current position.

reader : a GstBitReader instance
val : Pointer to a guint32 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_get_bits_uint64 ()

gboolean            gst_bit_reader_get_bits_uint64      (GstBitReader *reader,
                                                         guint64 *val,
                                                         guint nbits);

Read nbits bits into val and update the current position.

reader : a GstBitReader instance
val : Pointer to a guint64 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_get_bits_uint8 ()

gboolean            gst_bit_reader_get_bits_uint8       (GstBitReader *reader,
                                                         guint8 *val,
                                                         guint nbits);

Read nbits bits into val and update the current position.

reader : a GstBitReader instance
val : Pointer to a guint8 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_peek_bits_uint16 ()

gboolean            gst_bit_reader_peek_bits_uint16     (const GstBitReader *reader,
                                                         guint16 *val,
                                                         guint nbits);

Read nbits bits into val but keep the current position.

reader : a GstBitReader instance
val : Pointer to a guint16 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_peek_bits_uint32 ()

gboolean            gst_bit_reader_peek_bits_uint32     (const GstBitReader *reader,
                                                         guint32 *val,
                                                         guint nbits);

Read nbits bits into val but keep the current position.

reader : a GstBitReader instance
val : Pointer to a guint32 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_peek_bits_uint64 ()

gboolean            gst_bit_reader_peek_bits_uint64     (const GstBitReader *reader,
                                                         guint64 *val,
                                                         guint nbits);

Read nbits bits into val but keep the current position.

reader : a GstBitReader instance
val : Pointer to a guint64 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22


gst_bit_reader_peek_bits_uint8 ()

gboolean            gst_bit_reader_peek_bits_uint8      (const GstBitReader *reader,
                                                         guint8 *val,
                                                         guint nbits);

Read nbits bits into val but keep the current position.

reader : a GstBitReader instance
val : Pointer to a guint8 to store the result
nbits : number of bits to read
Returns : TRUE if successful, FALSE otherwise.

Since 0.10.22