This class, together with sibling HuffmanEncoder implements the well known Huffman compression . The class uses type BitReader to read the bit stream from an underlying BitBuffer.
The use of this class is quite straight forward:
Note, that the length of the stream (the number of bytes to be decompressed) have to be known by the using software. This class is not responsible for storing this piece of information.
Definition at line 127 of file huffman.hpp.
#include <huffman.hpp>
Inner Type Index: | |
struct | Node |
Internal struct representing nodes of the huffman code tree. More... | |
Public Method Index: | |
HuffmanDecoder (BitReader &bitReader) | |
uint8_t | Read () |
ALIB_API void | ReadTree () |
Protected Static Field Index: | |
static constexpr int | MAX_NODES = 511 |
The maximum number of nodes in the tree. | |
Protected Field Index: | |
BitReader & | br |
The bit reader given in the constructor. | |
Node | nodePool [MAX_NODES] |
Pre-allocated node objects. | |
int | npNext = 0 |
The next node in nodePool to use. | |
Node | tree |
The root node of the symbol tree. | |
|
protected |
The bit reader given in the constructor.
Definition at line 147 of file huffman.hpp.
|
staticconstexprprotected |
The maximum number of nodes in the tree.
Definition at line 145 of file huffman.hpp.
Pre-allocated node objects.
Definition at line 149 of file huffman.hpp.
|
protected |
The next node in nodePool to use.
Definition at line 150 of file huffman.hpp.
|
protected |
The root node of the symbol tree.
Definition at line 148 of file huffman.hpp.
|
inline |
Constructor.
bitReader | The bit reader to read the huffman encoding table and then the encoded symbols from. (Stored in field br.) |
Definition at line 156 of file huffman.hpp.
|
inline |
Reads a symbol from the bit stream. This method has to be invoked for every symbol stored, after once reading the encoding information with method ReadTree.
Definition at line 169 of file huffman.hpp.
void ReadTree | ( | ) |
Reads the information to decode the data from the beginning of the bit stream. This method has to be invoked once before reading the symbols with method Read.
Definition at line 213 of file huffman.cpp.