CCSDS 124.0-B-1 C 1.0.0
CCSDS 124.0-B-1 Lossless Compression
Loading...
Searching...
No Matches
Bit Reader API

Sequential bit reading from compressed data. More...

Data Structures

struct  bitreader_t
 Bit reader structure for sequential reading. More...
 

Functions

void bitreader_init (bitreader_t *reader, const uint8_t *data, size_t num_bits)
 Initialize bit reader.
 
int bitreader_read_bit (bitreader_t *reader)
 Read a single bit.
 
uint32_t bitreader_read_bits (bitreader_t *reader, size_t num_bits)
 Read multiple bits as unsigned value.
 
size_t bitreader_position (const bitreader_t *reader)
 Get current bit position.
 
size_t bitreader_remaining (const bitreader_t *reader)
 Get remaining bits.
 
void bitreader_align_byte (bitreader_t *reader)
 Skip to next byte boundary.
 

Detailed Description

Sequential bit reading from compressed data.

The bit reader provides stateful bit-level access to compressed packet data, reading MSB-first within each byte.

Function Documentation

◆ bitreader_align_byte()

void bitreader_align_byte ( bitreader_t reader)

Skip to next byte boundary.

Advances position to start of next byte (for padding).

Parameters
[in,out]readerBit reader (position advanced)

Definition at line 158 of file decompress.c.

References bitreader_t::bit_pos.

Referenced by ccsds124_decompress().

◆ bitreader_init()

void bitreader_init ( bitreader_t reader,
const uint8_t *  data,
size_t  num_bits 
)

Initialize bit reader.

Parameters
[out]readerReader to initialize
[in]dataSource byte buffer
[in]num_bitsNumber of valid bits in buffer

Definition at line 88 of file decompress.c.

References bitreader_t::bit_pos, bitreader_t::data, and bitreader_t::num_bits.

Referenced by ccsds124_decompress(), ccsds124_decompress_packet_checked(), and ccsds124_discover_packet_length().

◆ bitreader_position()

size_t bitreader_position ( const bitreader_t reader)

Get current bit position.

Parameters
[in]readerBit reader
Returns
Number of bits already read

Definition at line 136 of file decompress.c.

References bitreader_t::bit_pos.

◆ bitreader_read_bit()

int bitreader_read_bit ( bitreader_t reader)

Read a single bit.

Parameters
[in,out]readerBit reader (position advanced)
Returns
Bit value (0 or 1), or -1 if no bits remaining

Definition at line 97 of file decompress.c.

References bitreader_t::bit_pos, bitreader_t::data, and bitreader_t::num_bits.

Referenced by bitreader_read_bits(), ccsds124_bit_insert(), ccsds124_count_decode(), ccsds124_decompress_packet_internal(), and ccsds124_discover_packet_length().

◆ bitreader_read_bits()

uint32_t bitreader_read_bits ( bitreader_t reader,
size_t  num_bits 
)

Read multiple bits as unsigned value.

Reads up to 32 bits MSB-first and returns as uint32_t.

Parameters
[in,out]readerBit reader (position advanced)
[in]num_bitsNumber of bits to read (1-32)
Returns
Unsigned value from bits read

Definition at line 115 of file decompress.c.

References bitreader_read_bit(), and bitreader_remaining().

Referenced by ccsds124_count_decode(), ccsds124_decompress_packet_internal(), and ccsds124_discover_packet_length().

◆ bitreader_remaining()

size_t bitreader_remaining ( const bitreader_t reader)

Get remaining bits.

Parameters
[in]readerBit reader
Returns
Number of bits remaining to read

Definition at line 147 of file decompress.c.

References bitreader_t::bit_pos, and bitreader_t::num_bits.

Referenced by bitreader_read_bits(), ccsds124_bit_insert(), ccsds124_count_decode(), ccsds124_decompress(), ccsds124_decompress_packet_checked(), ccsds124_decompress_packet_internal(), and ccsds124_discover_packet_length().