summaryrefslogtreecommitdiff
path: root/libavcodec/dcahuff.c
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2017-01-07 15:18:32 +0300
committerRostislav Pehlivanov <atomnuker@gmail.com>2017-01-15 18:17:12 +0000
commitc2500d62c68a1e4c929cd5096f6617b56268d4e8 (patch)
tree85e45e6a869a9a263791388d5cab4e3aff320a6f /libavcodec/dcahuff.c
parenta6191d098a03f94685ae4c072bfdf10afcd86223 (diff)
dcaenc: Implementation of Huffman codes for DCA encoder
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Diffstat (limited to 'libavcodec/dcahuff.c')
-rw-r--r--libavcodec/dcahuff.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/libavcodec/dcahuff.c b/libavcodec/dcahuff.c
index bea3530214..9fb42a675b 100644
--- a/libavcodec/dcahuff.c
+++ b/libavcodec/dcahuff.c
@@ -1335,3 +1335,25 @@ av_cold void ff_dca_init_vlcs(void)
vlcs_initialized = 1;
}
+
+uint32_t ff_dca_vlc_calc_quant_bits(int *values, uint8_t n, uint8_t sel, uint8_t table)
+{
+ uint8_t i, id;
+ uint32_t sum = 0;
+ for (i = 0; i < n; i++) {
+ id = values[i] - bitalloc_offsets[table];
+ av_assert0(id < bitalloc_sizes[table]);
+ sum += bitalloc_bits[table][sel][id];
+ }
+ return sum;
+}
+
+void ff_dca_vlc_enc_quant(PutBitContext *pb, int *values, uint8_t n, uint8_t sel, uint8_t table)
+{
+ uint8_t i, id;
+ for (i = 0; i < n; i++) {
+ id = values[i] - bitalloc_offsets[table];
+ av_assert0(id < bitalloc_sizes[table]);
+ put_bits(pb, bitalloc_bits[table][sel][id], bitalloc_codes[table][sel][id]);
+ }
+}