summaryrefslogtreecommitdiff
path: root/src/libmusepack/musepack/huffman.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmusepack/musepack/huffman.h')
-rw-r--r--src/libmusepack/musepack/huffman.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/libmusepack/musepack/huffman.h b/src/libmusepack/musepack/huffman.h
new file mode 100644
index 000000000..7f587771f
--- /dev/null
+++ b/src/libmusepack/musepack/huffman.h
@@ -0,0 +1,41 @@
+/// \file huffman.h
+/// Data structures and functions for huffman coding.
+
+#ifndef _musepack_huffman_h_
+#define _musepack_huffman_h_
+
+#include "musepack/config_types.h"
+#include "musepack/decoder.h"
+
+struct mpc_decoder_t; // forward declare to break circular dependencies
+
+/// Huffman table entry.
+typedef struct huffman_type_t {
+ mpc_uint32_t Code;
+ mpc_uint32_t Length;
+ mpc_int32_t Value;
+} HuffmanTyp;
+
+//! \brief Sorts huffman-tables by codeword.
+//!
+//! offset resulting value.
+//! \param elements
+//! \param Table table to sort
+//! \param offset offset of resulting sort
+void
+mpc_decoder_resort_huff_tables(
+ const mpc_uint32_t elements, HuffmanTyp *Table, const mpc_int32_t offset);
+
+/// Initializes sv6 huffman decoding structures.
+void mpc_decoder_init_huffman_sv6(struct mpc_decoder_t *d);
+
+/// Initializes sv6 huffman decoding tables.
+void mpc_decoder_init_huffman_sv6_tables(struct mpc_decoder_t *d);
+
+/// Initializes sv7 huffman decoding structures.
+void mpc_decoder_init_huffman_sv7(struct mpc_decoder_t *d);
+
+/// Initializes sv7 huffman decoding tables.
+void mpc_decoder_init_huffman_sv7_tables(struct mpc_decoder_t *d);
+
+#endif // _musepack_huffman_h_