diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2017-01-07 15:18:32 +0300 |
---|---|---|
committer | Rostislav Pehlivanov <atomnuker@gmail.com> | 2017-01-15 21:17:12 +0300 |
commit | c2500d62c68a1e4c929cd5096f6617b56268d4e8 (patch) | |
tree | 85e45e6a869a9a263791388d5cab4e3aff320a6f /libavcodec/dcahuff.c | |
parent | a6191d098a03f94685ae4c072bfdf10afcd86223 (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.c | 22 |
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]); + } +} |