libgpac
Documentation of the core library of GPAC
Loading...
Searching...
No Matches
bitstream.c File Reference
#include <gpac/bitstream.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

Data Structures

struct  GF_BitStream
 

Macros

#define BS_MEM_BLOCK_ALLOC_SIZE   512
 
#define NO_OPTS
 

Enumerations

enum  { GF_BITSTREAM_FILE_READ = GF_BITSTREAM_WRITE_DYN + 1 , GF_BITSTREAM_FILE_WRITE }
 

Functions

GF_Err gf_bs_reassign_buffer (GF_BitStream *bs, const u8 *buffer, u64 BufferSize)
 bitstream reassignment
 
GF_EXPORT GF_BitStream * gf_bs_new (const u8 *buffer, u64 BufferSize, u32 mode)
 bitstream constructor
 
GF_EXPORT GF_BitStream * gf_bs_from_file (FILE *f, u32 mode)
 bitstream constructor from file handle
 
GF_EXPORT GF_BitStream * gf_bs_from_fd (int fd, u32 mode)
 
GF_BitStream * gf_bs_new_cbk_buffer (GF_Err(*on_block_out)(void *cbk, u8 *data, u32 block_size), void *usr_data, u8 *buffer, u32 buffer_size)
 bitstream constructor from callback output and preallocated buffer
 
GF_BitStream * gf_bs_new_cbk (GF_Err(*on_block_out)(void *cbk, u8 *data, u32 block_size), void *usr_data, u32 block_size)
 bitstream constructor from callback output
 
void gf_bs_prevent_dispatch (GF_BitStream *bs, Bool prevent_dispatch)
 prevents block dispatch Prevents byte dispatching in callback mode. This is used when seek operations are used.
 
static Bool bs_flush_write_cache (GF_BitStream *bs)
 
GF_EXPORT void gf_bs_del (GF_BitStream *bs)
 bitstream destructor from file handle
 
GF_EXPORT void gf_bs_enable_emulation_byte_removal (GF_BitStream *bs, Bool do_remove)
 NALU-based Annex B mode, only used for read mode.
 
GF_EXPORT u32 gf_bs_get_emulation_byte_removed (GF_BitStream *bs)
 NALU-based Annex B mode, only used for read mode.
 
Bool gf_bs_is_align (GF_BitStream *bs)
 bitstream alignment checking
 
static GFINLINE u8 gf_bs_load_byte (GF_BitStream *bs, Bool *is_eos)
 
static u8 BS_ReadByte (GF_BitStream *bs)
 
GF_EXPORT u8 gf_bs_read_bit (GF_BitStream *bs)
 
GF_EXPORT u32 gf_bs_read_int (GF_BitStream *bs, u32 nBits)
 integer reading
 
GF_EXPORT u32 gf_bs_read_u8 (GF_BitStream *bs)
 align char reading
 
GF_EXPORT u32 gf_bs_read_u16 (GF_BitStream *bs)
 align short reading
 
GF_EXPORT u32 gf_bs_read_u24 (GF_BitStream *bs)
 align 24-bit integer reading
 
GF_EXPORT u32 gf_bs_read_u32 (GF_BitStream *bs)
 align integer reading
 
GF_EXPORT u64 gf_bs_read_u64 (GF_BitStream *bs)
 align large integer reading
 
GF_EXPORT u64 gf_bs_read_long_int (GF_BitStream *bs, u32 nBits)
 large integer reading
 
GF_EXPORT Float gf_bs_read_float (GF_BitStream *bs)
 float reading
 
GF_EXPORT Double gf_bs_read_double (GF_BitStream *bs)
 double reading
 
GF_EXPORT u32 gf_bs_read_data (GF_BitStream *bs, u8 *data, u32 nbBytes)
 data reading
 
static void BS_WriteByte (GF_BitStream *bs, u8 val)
 
static void BS_WriteBit (GF_BitStream *bs, u32 bit)
 
static s32 bs_handle_nbits_overflow (GF_BitStream *bs, s32 nBits, s32 max_shift)
 
GF_EXPORT void gf_bs_write_int (GF_BitStream *bs, s32 _value, s32 nBits)
 integer writing
 
GF_EXPORT void gf_bs_write_long_int (GF_BitStream *bs, s64 _value, s32 nBits)
 large integer writing
 
GF_EXPORT void gf_bs_write_u8 (GF_BitStream *bs, u32 value)
 align char writing
 
GF_EXPORT void gf_bs_write_u16 (GF_BitStream *bs, u32 value)
 align short writing
 
GF_EXPORT void gf_bs_write_u24 (GF_BitStream *bs, u32 value)
 align 24-bits integer writing
 
GF_EXPORT void gf_bs_write_u32 (GF_BitStream *bs, u32 value)
 align integer writing
 
GF_EXPORT void gf_bs_write_u64 (GF_BitStream *bs, u64 value)
 align large integer writing
 
GF_EXPORT u32 gf_bs_write_byte (GF_BitStream *bs, u8 byte, u32 repeat_count)
 write byte multiple times
 
GF_EXPORT void gf_bs_write_float (GF_BitStream *bs, Float value)
 float writing
 
GF_EXPORT void gf_bs_write_double (GF_BitStream *bs, Double value)
 double writing
 
GF_EXPORT u32 gf_bs_write_data (GF_BitStream *bs, const u8 *data, u32 nbBytes)
 data writing
 
GF_EXPORT u8 gf_bs_align (GF_BitStream *bs)
 bitstream alignment
 
GF_EXPORT u64 gf_bs_available (GF_BitStream *bs)
 capacity query
 
static s32 BS_CutBuffer (GF_BitStream *bs)
 
GF_EXPORT void gf_bs_get_content_no_truncate (GF_BitStream *bs, u8 **output, u32 *outSize, u32 *alloc_size)
 buffer fetching
 
GF_EXPORT void gf_bs_get_content (GF_BitStream *bs, u8 **output, u32 *outSize)
 buffer fetching
 
GF_Err gf_bs_grow (GF_BitStream *bs, u32 addSize)
 
GF_EXPORT void gf_bs_skip_bytes (GF_BitStream *bs, u64 nbBytes)
 byte skipping
 
static GF_Err BS_SeekIntern (GF_BitStream *bs, u64 offset)
 
GF_EXPORT GF_Err gf_bs_seek (GF_BitStream *bs, u64 offset)
 bitstream seeking
 
GF_EXPORT u32 gf_bs_peek_bits (GF_BitStream *bs, u32 numBits, u64 byte_offset)
 bit peeking
 
GF_EXPORT u64 gf_bs_get_refreshed_size (GF_BitStream *bs)
 file-based size query
 
GF_EXPORT u64 gf_bs_get_size (GF_BitStream *bs)
 size query
 
GF_EXPORT u64 gf_bs_get_position (GF_BitStream *bs)
 position query
 
GF_EXPORT u8 gf_bs_bits_available (GF_BitStream *bs)
 bit reservoir query
 
GF_EXPORT void gf_bs_set_eos_callback (GF_BitStream *bs, void(*EndOfStream)(void *par), void *par)
 end of bitstream management
 
GF_EXPORT u64 gf_bs_read_u64_le (GF_BitStream *bs)
 little endian integer reading
 
GF_EXPORT u32 gf_bs_read_u32_le (GF_BitStream *bs)
 little endian integer reading
 
GF_EXPORT u16 gf_bs_read_u16_le (GF_BitStream *bs)
 little endian integer reading
 
GF_EXPORT void gf_bs_write_u64_le (GF_BitStream *bs, u64 val)
 little endian large integer writing
 
GF_EXPORT void gf_bs_write_u32_le (GF_BitStream *bs, u32 val)
 little endian integer writing
 
GF_EXPORT void gf_bs_write_u16_le (GF_BitStream *bs, u32 val)
 little endian short writing
 
GF_EXPORT u32 gf_bs_get_bit_offset (GF_BitStream *bs)
 bit position
 
GF_EXPORT u32 gf_bs_get_bit_position (GF_BitStream *bs)
 current bit position
 
GF_EXPORT u32 gf_bs_read_vluimsbf5 (GF_BitStream *bs)
 variable length integer reading
 
GF_EXPORT void gf_bs_truncate (GF_BitStream *bs)
 bitstream truncation
 
void gf_bs_untruncate (GF_BitStream *bs)
 
GF_EXPORT GF_Err gf_bs_transfer (GF_BitStream *dst, GF_BitStream *src, Bool keep_src)
 transfer content from source bitstream to destination bitstream
 
GF_EXPORT void gf_bs_flush (GF_BitStream *bs)
 Flushes bitstream content to disk.
 
u64 gf_bs_set_cookie (GF_BitStream *bs, u64 cookie)
 Sets cookie.
 
u64 gf_bs_get_cookie (GF_BitStream *bs)
 Gets cookie.
 
GF_EXPORT GF_Err gf_bs_insert_data (GF_BitStream *bs, u8 *data, u32 size, u64 offset)
 Inserts a data block, moving bytes to the end.
 
GF_Err gf_bs_set_logger (GF_BitStream *bs, void(*on_bs_log)(void *udta, const char *field_name, u32 nb_bits, u64 field_val, s32 idx1, s32 idx2, s32 idx3), void *udta)
 
void gf_bs_log_idx (GF_BitStream *bs, u32 nBits, const char *fname, s64 val, s32 idx1, s32 idx2, s32 idx3)
 
void gf_bs_mark_overflow (GF_BitStream *bs, Bool reset)
 Marks overflow access.
 
u32 gf_bs_is_overflow (GF_BitStream *bs)
 Gets overflow state.
 
GF_EXPORT char * gf_bs_read_utf8 (GF_BitStream *bs)
 Reads string.
 
GF_EXPORT GF_Err gf_bs_write_utf8 (GF_BitStream *bs, const char *str)
 Writes string.
 

Macro Definition Documentation

◆ BS_MEM_BLOCK_ALLOC_SIZE

#define BS_MEM_BLOCK_ALLOC_SIZE   512

◆ NO_OPTS

#define NO_OPTS

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
GF_BITSTREAM_FILE_READ 
GF_BITSTREAM_FILE_WRITE 

Function Documentation

◆ gf_bs_from_fd()

GF_EXPORT GF_BitStream * gf_bs_from_fd ( int  fd,
u32  mode 
)

◆ bs_flush_write_cache()

static Bool bs_flush_write_cache ( GF_BitStream *  bs)
static

◆ gf_bs_load_byte()

static GFINLINE u8 gf_bs_load_byte ( GF_BitStream *  bs,
Bool is_eos 
)
static

◆ BS_ReadByte()

static u8 BS_ReadByte ( GF_BitStream *  bs)
static

◆ gf_bs_read_bit()

GF_EXPORT u8 gf_bs_read_bit ( GF_BitStream *  bs)

◆ BS_WriteByte()

static void BS_WriteByte ( GF_BitStream *  bs,
u8  val 
)
static

◆ BS_WriteBit()

static void BS_WriteBit ( GF_BitStream *  bs,
u32  bit 
)
static

◆ bs_handle_nbits_overflow()

static s32 bs_handle_nbits_overflow ( GF_BitStream *  bs,
s32  nBits,
s32  max_shift 
)
static

◆ BS_CutBuffer()

static s32 BS_CutBuffer ( GF_BitStream *  bs)
static

◆ gf_bs_grow()

GF_Err gf_bs_grow ( GF_BitStream *  bs,
u32  addSize 
)

◆ BS_SeekIntern()

static GF_Err BS_SeekIntern ( GF_BitStream *  bs,
u64  offset 
)
static

◆ gf_bs_untruncate()

void gf_bs_untruncate ( GF_BitStream *  bs)

◆ gf_bs_set_logger()

GF_Err gf_bs_set_logger ( GF_BitStream *  bs,
void(*)(void *udta, const char *field_name, u32 nb_bits, u64 field_val, s32 idx1, s32 idx2, s32 idx3)  on_bs_log,
void *  udta 
)

◆ gf_bs_log_idx()

void gf_bs_log_idx ( GF_BitStream *  bs,
u32  nBits,
const char *  fname,
s64  val,
s32  idx1,
s32  idx2,
s32  idx3 
)