|
CCSDS 124.0-B-1 C 1.0.0
CCSDS 124.0-B-1 Lossless Compression
|
CCSDS 124.0-B-1 Compression Library - Public API. More...
#include <stdint.h>#include <stddef.h>Go to the source code of this file.
Data Structures | |
| struct | ccsds124_params_t |
| Compression parameters for a single packet. More... | |
| struct | ccsds124_decompress_result_t |
| Decompression result with accuracy guarantee status. More... | |
| struct | bitvector |
| Fixed-length bit vector structure. More... | |
| struct | bitbuffer |
| Variable-length bit buffer structure. More... | |
| struct | ccsds124_compressor |
| Compressor state structure. More... | |
| struct | bitreader_t |
| Bit reader structure for sequential reading. More... | |
| struct | ccsds124_decompressor |
| Decompressor state structure. More... | |
Macros | |
| #define | CCSDS124_VERSION_MAJOR 1 |
| #define | CCSDS124_VERSION_MINOR 0 |
| #define | CCSDS124_VERSION_PATCH 0 |
| #define | CCSDS124_OK 0 |
| #define | CCSDS124_ERROR_INVALID_ARG -1 |
| #define | CCSDS124_ERROR_OVERFLOW -2 |
| #define | CCSDS124_ERROR_UNDERFLOW -3 |
| #define | CCSDS124_STATUS_UNGUARANTEED 1 |
| #define | CCSDS124_STATUS_TRUNCATED_LENGTH 2 |
| #define | CCSDS124_MAX_PACKET_LENGTH 65535U |
| #define | CCSDS124_MAX_PACKET_BYTES (((CCSDS124_MAX_PACKET_LENGTH) + 7U) / 8U) |
| #define | CCSDS124_MAX_ROBUSTNESS 7U |
| #define | CCSDS124_MAX_HISTORY 16U |
| #define | CCSDS124_MAX_VT_HISTORY 16U |
| #define | CCSDS124_MAX_OUTPUT_BYTES ((CCSDS124_MAX_PACKET_BYTES) * 12U) |
Typedefs | |
| typedef struct bitvector | bitvector_t |
| typedef struct bitbuffer | bitbuffer_t |
| typedef struct ccsds124_compressor | ccsds124_compressor_t |
| typedef struct ccsds124_decompressor | ccsds124_decompressor_t |
Functions | |
| int | bitvector_init (bitvector_t *bv, size_t num_bits) |
| Initialize a bit vector with specified length. | |
| void | bitvector_zero (bitvector_t *bv) |
| Set all bits to zero. | |
| void | bitvector_copy (bitvector_t *dest, const bitvector_t *src) |
| Copy bit vector contents. | |
| static int | bitvector_get_bit (const bitvector_t *bv, size_t pos) |
| Get bit value at position (inline for performance). | |
| static void | bitvector_set_bit (bitvector_t *bv, size_t pos, int value) |
| Set bit value at position (inline for performance). | |
| void | bitvector_xor (bitvector_t *result, const bitvector_t *a, const bitvector_t *b) |
| Bitwise XOR operation. | |
| void | bitvector_or (bitvector_t *result, const bitvector_t *a, const bitvector_t *b) |
| Bitwise OR operation. | |
| void | bitvector_and (bitvector_t *result, const bitvector_t *a, const bitvector_t *b) |
| Bitwise AND operation. | |
| void | bitvector_not (bitvector_t *result, const bitvector_t *a) |
| Bitwise NOT operation. | |
| void | bitvector_left_shift (bitvector_t *result, const bitvector_t *a) |
| Left shift by one bit. | |
| void | bitvector_reverse (bitvector_t *result, const bitvector_t *a) |
| Reverse bit order. | |
| size_t | bitvector_hamming_weight (const bitvector_t *bv) |
| Count number of set bits (Hamming weight). | |
| int | bitvector_equals (const bitvector_t *a, const bitvector_t *b) |
| Compare two bit vectors for equality. | |
| int | bitvector_from_bytes (bitvector_t *bv, const uint8_t *data, size_t num_bytes) |
| Load bit vector from byte array. | |
| int | bitvector_to_bytes (const bitvector_t *bv, uint8_t *data, size_t num_bytes) |
| Store bit vector to byte array. | |
| void | bitbuffer_init (bitbuffer_t *bb) |
| Initialize bit buffer to empty state. | |
| void | bitbuffer_clear (bitbuffer_t *bb) |
| Clear bit buffer contents. | |
| int | bitbuffer_append_bit (bitbuffer_t *bb, int bit) |
| Append a single bit to buffer. | |
| int | bitbuffer_append_bits (bitbuffer_t *bb, const uint8_t *data, size_t num_bits) |
| Append multiple bits from byte array. | |
| int | bitbuffer_append_value (bitbuffer_t *bb, uint32_t value, size_t num_bits) |
| Append multiple bits from a value directly to accumulator. | |
| int | bitbuffer_append_bitvector (bitbuffer_t *bb, const bitvector_t *bv) |
| Append all bits from a bit vector. | |
| size_t | bitbuffer_size (const bitbuffer_t *bb) |
| Get number of bits in buffer. | |
| size_t | bitbuffer_to_bytes (const bitbuffer_t *bb, uint8_t *data, size_t max_bytes) |
| Convert bit buffer to byte array. | |
| void | ccsds124_update_build (bitvector_t *build, const bitvector_t *input, const bitvector_t *prev_input, int new_mask_flag, size_t t) |
| Update build vector (CCSDS Equation 6). | |
| void | ccsds124_update_mask (bitvector_t *mask, const bitvector_t *input, const bitvector_t *prev_input, const bitvector_t *build_prev, int new_mask_flag) |
| Update mask vector (CCSDS Equation 7). | |
| void | ccsds124_compute_change (bitvector_t *change, const bitvector_t *mask, const bitvector_t *prev_mask, size_t t) |
| Compute change vector (CCSDS Equation 8). | |
| int | ccsds124_count_encode (bitbuffer_t *output, uint32_t A) |
| Counter encoding (CCSDS Section 5.2.2, Equation 9). | |
| int | ccsds124_rle_encode (bitbuffer_t *output, const bitvector_t *input) |
| Run-length encoding (CCSDS Section 5.2.3, Equation 10). | |
| int | ccsds124_bit_extract (bitbuffer_t *output, const bitvector_t *data, const bitvector_t *mask) |
| Bit extraction (CCSDS Section 5.2.4, Equation 11). | |
| int | ccsds124_bit_extract_forward (bitbuffer_t *output, const bitvector_t *data, const bitvector_t *mask) |
| Bit extraction in forward order (LSB to MSB). | |
| int | ccsds124_compressor_init (ccsds124_compressor_t *comp, size_t F, const bitvector_t *initial_mask, uint8_t robustness, int pt_limit, int ft_limit, int rt_limit) |
| Initialize compressor state. | |
| void | ccsds124_compressor_reset (ccsds124_compressor_t *comp) |
| Reset compressor to initial state. | |
| int | ccsds124_compress_packet (ccsds124_compressor_t *comp, const bitvector_t *input, bitbuffer_t *output, const ccsds124_params_t *params) |
| Compress a single input packet. | |
| int | ccsds124_compress (ccsds124_compressor_t *comp, const uint8_t *input_data, size_t input_size, uint8_t *output_buffer, size_t output_buffer_size, size_t *output_size) |
| Compress entire input data stream. | |
| void | ccsds124_compute_robustness_window (bitvector_t *Xt, const ccsds124_compressor_t *comp, const bitvector_t *current_change) |
| Compute robustness window Xₜ. | |
| uint8_t | ccsds124_compute_effective_robustness (const ccsds124_compressor_t *comp, const bitvector_t *current_change) |
| Compute effective robustness Vₜ. | |
| int | ccsds124_has_positive_updates (const bitvector_t *Xt, const bitvector_t *mask) |
| Check for positive mask updates (eₜ flag). | |
| int | ccsds124_compute_ct_flag (const ccsds124_compressor_t *comp, uint8_t Vt, int current_new_mask_flag) |
| Compute cₜ flag for multiple mask updates. | |
| 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. | |
| int | ccsds124_count_decode (bitreader_t *reader, uint32_t *value) |
| Counter decoding (inverse of ccsds124_count_encode). | |
| int | ccsds124_rle_decode (bitreader_t *reader, bitvector_t *result, size_t length) |
| Run-length decoding (inverse of ccsds124_rle_encode). | |
| int | ccsds124_bit_insert (bitreader_t *reader, bitvector_t *data, const bitvector_t *mask) |
| Bit insertion (inverse of ccsds124_bit_extract). | |
| int | ccsds124_decompressor_init (ccsds124_decompressor_t *decomp, size_t F, const bitvector_t *initial_mask, uint8_t robustness) |
| Initialize decompressor state. | |
| void | ccsds124_decompressor_reset (ccsds124_decompressor_t *decomp) |
| Reset decompressor to initial state. | |
| int | ccsds124_decompressor_notify_packet_loss (ccsds124_decompressor_t *decomp, uint32_t lost_count) |
| Notify decompressor of packet loss. | |
| int | ccsds124_decompress_packet (ccsds124_decompressor_t *decomp, bitreader_t *reader, bitvector_t *output) |
| Decompress a single compressed packet. | |
| int | ccsds124_decompress_packet_checked (ccsds124_decompressor_t *decomp, const uint8_t *data, size_t num_bits, bitvector_t *output, ccsds124_decompress_result_t *result) |
| Decompress a single packet with accuracy guarantee checking. | |
| int | ccsds124_discover_packet_length (const uint8_t *data, size_t num_bits, uint32_t *packet_length) |
| Discover packet length (F) from a compressed packet. | |
| int | ccsds124_decompress (ccsds124_decompressor_t *decomp, const uint8_t *input_data, size_t input_size, uint8_t *output_buffer, size_t output_buffer_size, size_t *output_size) |
| Decompress entire compressed data stream. | |
| const char * | ccsds124_version_string (void) |
| Get version string. | |
| const char * | ccsds124_error_string (int error_code) |
| Get error message for error code. | |
CCSDS 124.0-B-1 Compression Library - Public API.
Definition in file ccsds124.h.