Skip to content

Compression API

Advanced compression algorithms beyond basic codecs.

Huffman Coding

#include <pfc/huffman.hpp>

// Build frequency table
FrequencyTable freq_table;
for (uint8_t byte : data) {
    freq_table.add(byte);
}

// Create Huffman tree
auto huffman_tree = build_huffman_tree(freq_table);

// Compress
std::vector<uint8_t> compressed = huffman_encode(data, huffman_tree);

// Decompress
std::vector<uint8_t> decompressed = huffman_decode(compressed, huffman_tree);

LZ77

#include <pfc/lz77.hpp>

// Compress with LZ77
LZ77Encoder encoder;
auto compressed = encoder.compress(data);

// Decompress
LZ77Decoder decoder;
auto decompressed = decoder.decompress(compressed);

Arithmetic Coding

#include <pfc/arithmetic_coding.hpp>

// Create probability model
ProbabilityModel model;
// ... configure model ...

// Encode
ArithmeticEncoder encoder(model);
auto compressed = encoder.encode(data);

// Decode
ArithmeticDecoder decoder(model);
auto decompressed = decoder.decode(compressed);

See Compression Examples for detailed usage.