3 #include "fly/coders/coder.hpp"
4 #include "fly/coders/huffman/types.hpp"
11 class BitStreamWriter;
14 namespace fly::coders {
33 explicit HuffmanEncoder(
const std::shared_ptr<CoderConfig> &config) noexcept;
103 std::uint32_t read_stream(std::istream &decoded)
const;
110 void create_tree(std::uint32_t chunk_size);
131 void limit_code_lengths();
137 void convert_to_canonical_form();
163 const std::uint32_t m_chunk_size;
164 const length_type m_max_code_length;
166 std::unique_ptr<symbol_type[]> m_chunk_buffer;
169 std::array<HuffmanCode, 1 << 8> m_huffman_codes;
170 std::uint16_t m_huffman_codes_size;
174 std::array<HuffmanNode, 1 << 9> m_huffman_tree;
Definition: bit_stream_writer.hpp:24
Definition: huffman_encoder.hpp:26
bool encode_binary(std::istream &decoded, fly::BitStreamWriter &encoded) override
Definition: huffman_encoder.cpp:32
HuffmanEncoder(const std::shared_ptr< CoderConfig > &config) noexcept
Definition: huffman_encoder.cpp:24