dcaenc: Implementation of Huffman codes for DCA encoder

Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
This commit is contained in:
Daniil Cherednik
2017-01-07 15:18:32 +03:00
committed by Rostislav Pehlivanov
parent a6191d098a
commit c2500d62c6
9 changed files with 217 additions and 103 deletions

View File

@@ -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]);
}
}