-typedef struct DCAVLC {
- int offset; ///< Code values offset
- int max_depth; ///< Parameter for get_vlc2()
- VLC vlc[7]; ///< Actual codes
-} DCAVLC;
-
-static DCAVLC vlc_bit_allocation;
-static DCAVLC vlc_transition_mode;
-static DCAVLC vlc_scale_factor;
-static DCAVLC vlc_quant_index[DCA_CODE_BOOKS];
-
-static av_cold void dca_init_vlcs(void)
-{
- static VLC_TYPE dca_table[23622][2];
- static int vlcs_initialized = 0;
- int i, j, k;
-
- if (vlcs_initialized)
- return;
-
-#define DCA_INIT_VLC(vlc, a, b, c, d) \
- do { \
- vlc.table = &dca_table[ff_dca_vlc_offs[k]]; \
- vlc.table_allocated = ff_dca_vlc_offs[k + 1] - ff_dca_vlc_offs[k]; \
- init_vlc(&vlc, a, b, c, 1, 1, d, 2, 2, INIT_VLC_USE_NEW_STATIC); \
- } while (0)
-
- vlc_bit_allocation.offset = 1;
- vlc_bit_allocation.max_depth = 2;
- for (i = 0, k = 0; i < 5; i++, k++)
- DCA_INIT_VLC(vlc_bit_allocation.vlc[i], bitalloc_12_vlc_bits[i], 12,
- bitalloc_12_bits[i], bitalloc_12_codes[i]);
-
- vlc_scale_factor.offset = -64;
- vlc_scale_factor.max_depth = 2;
- for (i = 0; i < 5; i++, k++)
- DCA_INIT_VLC(vlc_scale_factor.vlc[i], SCALES_VLC_BITS, 129,
- scales_bits[i], scales_codes[i]);
-
- vlc_transition_mode.offset = 0;
- vlc_transition_mode.max_depth = 1;
- for (i = 0; i < 4; i++, k++)
- DCA_INIT_VLC(vlc_transition_mode.vlc[i], tmode_vlc_bits[i], 4,
- tmode_bits[i], tmode_codes[i]);
-
- for (i = 0; i < DCA_CODE_BOOKS; i++) {
- vlc_quant_index[i].offset = bitalloc_offsets[i];
- vlc_quant_index[i].max_depth = 1 + (i > 4);
- for (j = 0; j < quant_index_group_size[i]; j++, k++)
- DCA_INIT_VLC(vlc_quant_index[i].vlc[j], bitalloc_maxbits[i][j],
- bitalloc_sizes[i], bitalloc_bits[i][j], bitalloc_codes[i][j]);
- }
-
- vlcs_initialized = 1;
-}
-