summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/mpc8.c114
-rw-r--r--libavcodec/mpc8huff.h166
2 files changed, 104 insertions, 176 deletions
diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c
index 5321266c49..c599d34326 100644
--- a/libavcodec/mpc8.c
+++ b/libavcodec/mpc8.c
@@ -90,6 +90,21 @@ static const uint16_t vlc_offsets[13] = {
0, 640, 1184, 1748, 2298, 2426, 2554, 3066, 3578, 4106, 4618, 5196, 5708
};
+static av_cold void build_vlc(VLC *vlc, int nb_bits,
+ const uint8_t codes_counts[16],
+ const uint8_t syms[], int offset)
+{
+ uint8_t len[MPC8_MAX_VLC_SIZE];
+ unsigned num = 0;
+
+ for (int i = 16; i > 0; i--)
+ for (unsigned tmp = num + codes_counts[i - 1]; num < tmp; num++)
+ len[num] = i;
+
+ ff_init_vlc_from_lengths(vlc, nb_bits, num, len, 1,
+ syms, 1, 1, offset, INIT_VLC_USE_NEW_STATIC, NULL);
+}
+
static av_cold int mpc8_decode_init(AVCodecContext * avctx)
{
int i;
@@ -97,7 +112,6 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx)
GetBitContext gb;
static int vlc_initialized = 0;
int channels;
-
static VLC_TYPE codes_table[5708][2];
if(avctx->extradata_size < 2){
@@ -131,77 +145,65 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx)
if(vlc_initialized) return 0;
av_log(avctx, AV_LOG_DEBUG, "Initing VLC\n");
- INIT_VLC_STATIC_FROM_LENGTHS(&band_vlc, MPC8_BANDS_BITS, MPC8_BANDS_SIZE,
- mpc8_bands_bits, 1,
- mpc8_bands_syms, 1, 1, 0, 0, 542);
-
- INIT_VLC_STATIC_FROM_LENGTHS(&q1_vlc, MPC8_Q1_BITS, MPC8_Q1_SIZE,
- mpc8_q1_bits, 1,
- mpc8_q1_syms, 1, 1, 0, 0, 520);
- INIT_VLC_STATIC_FROM_LENGTHS(&q9up_vlc, MPC8_Q9UP_BITS, MPC8_Q9UP_SIZE,
- mpc8_q9up_bits, 1,
- mpc8_q9up_syms, 1, 1, 0, 0, 524);
-
- INIT_VLC_STATIC_FROM_LENGTHS(&scfi_vlc[0], MPC8_SCFI0_BITS, MPC8_SCFI0_SIZE,
- mpc8_scfi0_bits, 1,
- mpc8_scfi0_syms, 1, 1, 0, 0, 1 << MPC8_SCFI0_BITS);
- INIT_VLC_STATIC_FROM_LENGTHS(&scfi_vlc[1], MPC8_SCFI1_BITS, MPC8_SCFI1_SIZE,
- mpc8_scfi1_bits, 1,
- mpc8_scfi1_syms, 1, 1, 0, 0, 1 << MPC8_SCFI1_BITS);
-
- INIT_VLC_STATIC_FROM_LENGTHS(&dscf_vlc[0], MPC8_DSCF0_BITS, MPC8_DSCF0_SIZE,
- mpc8_dscf0_bits, 1,
- mpc8_dscf0_syms, 1, 1, 0, 0, 560);
- INIT_VLC_STATIC_FROM_LENGTHS(&dscf_vlc[1], MPC8_DSCF1_BITS, MPC8_DSCF1_SIZE,
- mpc8_dscf1_bits, 1,
- mpc8_dscf1_syms, 1, 1, 0, 0, 598);
-
- INIT_VLC_STATIC_FROM_LENGTHS(&q3_vlc[0], MPC8_Q3_BITS, MPC8_Q3_SIZE,
- mpc8_q3_bits, 1,
- mpc8_q3_syms, 1, 1, MPC8_Q3_OFFSET, 0, 512);
- INIT_VLC_STATIC_FROM_LENGTHS(&q3_vlc[1], MPC8_Q4_BITS, MPC8_Q4_SIZE,
- mpc8_q4_bits, 1,
- mpc8_q4_syms, 1, 1, MPC8_Q4_OFFSET, 0, 516);
+#define INIT_VLC(vlc, bits, len_counts, symbols, offset, static_size) \
+ do { \
+ static VLC_TYPE table[static_size][2]; \
+ (vlc)->table = table; \
+ (vlc)->table_allocated = static_size; \
+ build_vlc(vlc, bits, len_counts, symbols, offset); \
+ } while (0)
+
+
+ INIT_VLC(&band_vlc, MPC8_BANDS_BITS,
+ mpc8_bands_len_counts, mpc8_bands_syms, 0, 542);
+
+ INIT_VLC(&q1_vlc, MPC8_Q1_BITS,
+ mpc8_q1_len_counts, mpc8_q1_syms, 0, 520);
+ INIT_VLC(&q9up_vlc, MPC8_Q9UP_BITS,
+ mpc8_q9up_len_counts, mpc8_q9up_syms, 0, 524);
+
+ INIT_VLC(&scfi_vlc[0], MPC8_SCFI0_BITS,
+ mpc8_scfi_len_counts[0], mpc8_scfi0_syms, 0, 1 << MPC8_SCFI0_BITS);
+ INIT_VLC(&scfi_vlc[1], MPC8_SCFI1_BITS,
+ mpc8_scfi_len_counts[1], mpc8_scfi1_syms, 0, 1 << MPC8_SCFI1_BITS);
+
+ INIT_VLC(&dscf_vlc[0], MPC8_DSCF0_BITS,
+ mpc8_dscf_len_counts[0], mpc8_dscf0_syms, 0, 560);
+ INIT_VLC(&dscf_vlc[1], MPC8_DSCF1_BITS,
+ mpc8_dscf_len_counts[1], mpc8_dscf1_syms, 0, 598);
+
+ INIT_VLC(&q3_vlc[0], MPC8_Q3_BITS,
+ mpc8_q3_len_counts, mpc8_q3_syms, MPC8_Q3_OFFSET, 512);
+ INIT_VLC(&q3_vlc[1], MPC8_Q4_BITS,
+ mpc8_q4_len_counts, mpc8_q4_syms, MPC8_Q4_OFFSET, 516);
for(i = 0; i < 2; i++){
res_vlc[i].table = &codes_table[vlc_offsets[0+i]];
res_vlc[i].table_allocated = vlc_offsets[1+i] - vlc_offsets[0+i];
- ff_init_vlc_from_lengths(&res_vlc[i], MPC8_RES_BITS, MPC8_RES_SIZE,
- mpc8_res_bits[i], 1,
- mpc8_res_syms[i], 1, 1,
- 0, INIT_VLC_USE_NEW_STATIC, NULL);
+ build_vlc(&res_vlc[i], MPC8_RES_BITS,
+ mpc8_res_len_counts[i], mpc8_res_syms[i], 0);
q2_vlc[i].table = &codes_table[vlc_offsets[2+i]];
q2_vlc[i].table_allocated = vlc_offsets[3+i] - vlc_offsets[2+i];
- ff_init_vlc_from_lengths(&q2_vlc[i], MPC8_Q2_BITS, MPC8_Q2_SIZE,
- mpc8_q2_bits[i], 1,
- mpc8_q2_syms[i], 1, 1,
- 0, INIT_VLC_USE_NEW_STATIC, NULL);
+ build_vlc(&q2_vlc[i], MPC8_Q2_BITS,
+ mpc8_q2_len_counts[i], mpc8_q2_syms[i], 0);
quant_vlc[0][i].table = &codes_table[vlc_offsets[4+i]];
quant_vlc[0][i].table_allocated = vlc_offsets[5+i] - vlc_offsets[4+i];
- ff_init_vlc_from_lengths(&quant_vlc[0][i], MPC8_Q5_BITS, MPC8_Q5_SIZE,
- mpc8_q5_bits[i], 1,
- mpc8_q5_syms[i], 1, 1,
- MPC8_Q5_OFFSET, INIT_VLC_USE_NEW_STATIC, NULL);
+ build_vlc(&quant_vlc[0][i], MPC8_Q5_BITS,
+ mpc8_q5_len_counts[i], mpc8_q5_syms[i], MPC8_Q5_OFFSET);
quant_vlc[1][i].table = &codes_table[vlc_offsets[6+i]];
quant_vlc[1][i].table_allocated = vlc_offsets[7+i] - vlc_offsets[6+i];
- ff_init_vlc_from_lengths(&quant_vlc[1][i], MPC8_Q6_BITS, MPC8_Q6_SIZE,
- mpc8_q6_bits[i], 1,
- mpc8_q6_syms[i], 1, 1,
- MPC8_Q6_OFFSET, INIT_VLC_USE_NEW_STATIC, NULL);
+ build_vlc(&quant_vlc[1][i], MPC8_Q6_BITS,
+ mpc8_q6_len_counts[i], mpc8_q6_syms[i], MPC8_Q6_OFFSET);
quant_vlc[2][i].table = &codes_table[vlc_offsets[8+i]];
quant_vlc[2][i].table_allocated = vlc_offsets[9+i] - vlc_offsets[8+i];
- ff_init_vlc_from_lengths(&quant_vlc[2][i], MPC8_Q7_BITS, MPC8_Q7_SIZE,
- mpc8_q7_bits[i], 1,
- mpc8_q7_syms[i], 1, 1,
- MPC8_Q7_OFFSET, INIT_VLC_USE_NEW_STATIC, NULL);
+ build_vlc(&quant_vlc[2][i], MPC8_Q7_BITS,
+ mpc8_q7_len_counts[i], mpc8_q7_syms[i], MPC8_Q7_OFFSET);
quant_vlc[3][i].table = &codes_table[vlc_offsets[10+i]];
quant_vlc[3][i].table_allocated = vlc_offsets[11+i] - vlc_offsets[10+i];
- ff_init_vlc_from_lengths(&quant_vlc[3][i], MPC8_Q8_BITS, MPC8_Q8_SIZE,
- mpc8_q8_bits[i], 1,
- mpc8_q8_syms[i], 1, 1,
- MPC8_Q8_OFFSET, INIT_VLC_USE_NEW_STATIC, NULL);
+ build_vlc(&quant_vlc[3][i], MPC8_Q8_BITS,
+ mpc8_q8_len_counts[i], mpc8_q8_syms[i], MPC8_Q8_OFFSET);
}
vlc_initialized = 1;
ff_mpa_synth_init_fixed();
diff --git a/libavcodec/mpc8huff.h b/libavcodec/mpc8huff.h
index 687c9f7e98..8838751fd6 100644
--- a/libavcodec/mpc8huff.h
+++ b/libavcodec/mpc8huff.h
@@ -24,6 +24,8 @@
#include <stdint.h>
+#define MPC8_MAX_VLC_SIZE 256
+
#define MPC8_BANDS_SIZE 33
#define MPC8_BANDS_BITS 9
@@ -31,9 +33,8 @@ static const uint8_t mpc8_bands_syms[MPC8_BANDS_SIZE] = {
13, 19, 10, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 9, 23, 24, 25, 8, 26,
27, 7, 28, 5, 6, 29, 4, 3, 30, 2, 31, 1, 32, 0
};
-static const uint8_t mpc8_bands_bits[MPC8_BANDS_SIZE] = {
- 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 10, 10,
- 10, 9, 9, 8, 8, 8, 7, 6, 6, 5, 5, 3, 2, 1
+static const uint8_t mpc8_bands_len_counts[16] = {
+ 1, 1, 1, 0, 2, 2, 1, 3, 2, 3, 4, 11, 2, 0, 0, 0
};
#define MPC8_SCFI0_SIZE 4
@@ -42,9 +43,6 @@ static const uint8_t mpc8_bands_bits[MPC8_BANDS_SIZE] = {
static const uint8_t mpc8_scfi0_syms[MPC8_SCFI0_SIZE] = {
0, 1, 3, 2
};
-static const uint8_t mpc8_scfi0_bits[MPC8_SCFI0_SIZE] = {
- 3, 3, 2, 1
-};
#define MPC8_SCFI1_SIZE 16
#define MPC8_SCFI1_BITS 7
@@ -52,8 +50,10 @@ static const uint8_t mpc8_scfi0_bits[MPC8_SCFI0_SIZE] = {
static const uint8_t mpc8_scfi1_syms[MPC8_SCFI1_SIZE] = {
1, 4, 0, 2, 3, 8, 12, 5, 6, 7, 9, 13, 11, 14, 10, 15
};
-static const uint8_t mpc8_scfi1_bits[MPC8_SCFI1_SIZE] = {
- 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 3, 3, 2, 2
+
+static const uint8_t mpc8_scfi_len_counts[2][16] = {
+ { 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 2, 2, 0, 5, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
};
#define MPC8_DSCF0_SIZE 64
@@ -65,12 +65,6 @@ static const uint8_t mpc8_dscf0_syms[MPC8_DSCF0_SIZE] = {
17, 18, 41, 42, 43, 19, 20, 21, 22, 40, 23, 24, 38, 39, 25, 28, 37, 26, 27,
29, 30, 32, 36, 33, 34, 35,
};
-static const uint8_t mpc8_dscf0_bits[MPC8_DSCF0_SIZE] = {
- 14, 14, 14, 14, 14, 14, 13, 13, 13, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11,
- 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 8, 8,
- 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 4, 4,
- 4, 4, 4, 4, 3, 3, 3
-};
#define MPC8_DSCF1_SIZE 65
#define MPC8_DSCF1_BITS 9
@@ -81,11 +75,10 @@ static const uint8_t mpc8_dscf1_syms[MPC8_DSCF1_SIZE] = {
44, 45, 18, 19, 20, 41, 42, 21, 22, 39, 40, 23, 24, 38, 25, 37, 26, 35, 36,
27, 28, 34, 29, 30, 31, 32, 33,
};
-static const uint8_t mpc8_dscf1_bits[MPC8_DSCF1_SIZE] = {
- 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, 13, 12, 12,
- 12, 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10,
- 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5,
- 4, 4, 4, 3, 3, 3, 3, 3
+
+static const uint8_t mpc8_dscf_len_counts[2][16] = {
+ { 0, 0, 3, 6, 3, 4, 5, 7, 7, 9, 6, 5, 3, 6, 0, 0 },
+ { 0, 0, 5, 3, 3, 2, 3, 4, 5, 7, 7, 9, 6, 5, 6, 0 },
};
#define MPC8_RES_SIZE 17
@@ -99,13 +92,10 @@ static const uint8_t mpc8_res_syms[2][MPC8_RES_SIZE] = {
8, 9, 10, 11, 7, 12, 6, 13, 5, 4, 14, 3, 15, 2, 0, 1, 16,
}
};
-static const uint8_t mpc8_res_bits[2][MPC8_RES_SIZE] = {
- {
- 16, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
- },
- {
- 14, 14, 14, 14, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 2
- }
+
+static const uint8_t mpc8_res_len_counts[2][16] = {
+ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 },
+ { 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 0, 0 },
};
#define MPC8_Q1_SIZE 19
@@ -114,8 +104,9 @@ static const uint8_t mpc8_res_bits[2][MPC8_RES_SIZE] = {
static const uint8_t mpc8_q1_syms[MPC8_Q1_SIZE] = {
17, 18, 16, 15, 14, 13, 12, 0, 11, 1, 2, 8, 9, 10, 3, 4, 5, 6, 7,
};
-static const uint8_t mpc8_q1_bits[MPC8_Q1_SIZE] = {
- 12, 12, 11, 10, 9, 8, 7, 6, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3
+
+static const uint8_t mpc8_q1_len_counts[16] = {
+ 0, 0, 5, 5, 1, 1, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0
};
#define MPC8_Q9UP_SIZE 256
@@ -141,21 +132,9 @@ static const uint8_t mpc8_q9up_syms[MPC8_Q9UP_SIZE] = {
134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 148, 127,
128,
};
-static const uint8_t mpc8_q9up_bits[MPC8_Q9UP_SIZE] = {
- 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 6, 6
+
+static const uint8_t mpc8_q9up_len_counts[16] = {
+ 0, 0, 0, 0, 0, 2, 38, 134, 71, 9, 2, 0, 0, 0, 0, 0
};
#define MPC8_Q2_SIZE 125
@@ -185,35 +164,18 @@ static const uint8_t mpc8_q2_syms[2][MPC8_Q2_SIZE] = {
82, 86, 87, 92, 62,
}
};
-static const uint8_t mpc8_q2_bits[2][MPC8_Q2_SIZE] = {
-{
- 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 4, 4, 4, 4, 4, 4, 3
-},
-{
- 12, 12, 12, 12, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7,
- 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4
-}
+
+static const uint8_t mpc8_q2_len_counts[2][16] = {
+ { 0, 0, 1, 6, 0, 17, 9, 24, 24, 9, 27, 4, 4, 0, 0, 0 },
+ { 0, 0, 0, 1, 16, 10, 6, 48, 9, 27, 4, 4, 0, 0, 0, 0 },
};
#define MPC8_Q3_SIZE 49
#define MPC8_Q3_BITS 9
#define MPC8_Q3_OFFSET -48
-static const uint8_t mpc8_q3_bits[MPC8_Q3_SIZE] = {
- 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5,
- 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3,
+static const uint8_t mpc8_q3_len_counts[16] = {
+ 0, 0, 1, 6, 6, 11, 13, 8, 4, 0, 0, 0, 0, 0, 0, 0
};
static const uint8_t mpc8_q3_syms[MPC8_Q3_SIZE] = {
13, 3, 109, 99, 14, 2, 29, 19, 93, 83, 110, 98, 15, 0, 1,
@@ -226,12 +188,8 @@ static const uint8_t mpc8_q3_syms[MPC8_Q3_SIZE] = {
#define MPC8_Q4_BITS 9
#define MPC8_Q4_OFFSET -64
-static const uint8_t mpc8_q4_bits[MPC8_Q4_SIZE] = {
- 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 4,
+static const uint8_t mpc8_q4_len_counts[16] = {
+ 0, 0, 0, 1, 12, 23, 14, 19, 8, 4, 0, 0, 0, 0, 0, 0
};
static const uint8_t mpc8_q4_syms[MPC8_Q4_SIZE] = {
12, 4, 140, 132, 13, 3, 28, 20, 124, 116, 141, 131, 14, 1, 2,
@@ -254,13 +212,10 @@ static const uint8_t mpc8_q5_syms[2][MPC8_Q5_SIZE] = {
0, 1, 13, 14, 2, 12, 3, 4, 10, 11, 5, 6, 7, 8, 9,
}
};
-static const uint8_t mpc8_q5_bits[2][MPC8_Q5_SIZE] = {
-{
- 7, 7, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 3, 3, 2
-},
-{
- 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 3, 3, 3, 3, 3
-}
+
+static const uint8_t mpc8_q5_len_counts[2][16] = {
+ { 0, 1, 4, 2, 2, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 5, 4, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
};
#define MPC8_Q6_SIZE 31
@@ -277,15 +232,10 @@ static const uint8_t mpc8_q6_syms[2][MPC8_Q6_SIZE] = {
23, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
}
};
-static const uint8_t mpc8_q6_bits[2][MPC8_Q6_SIZE] = {
-{
- 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 7, 7, 6, 6, 6, 6, 6,
- 6, 6, 5, 5, 5, 4, 4, 4, 4, 3, 3, 2
-},
-{
- 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 5, 5, 5, 5, 5,
- 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
-}
+
+static const uint8_t mpc8_q6_len_counts[2][16] = {
+ { 0, 1, 2, 4, 3, 7, 2, 4, 8, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 11, 6, 4, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0 },
};
#define MPC8_Q7_SIZE 63
@@ -306,19 +256,10 @@ static const uint8_t mpc8_q7_syms[2][MPC8_Q7_SIZE] = {
36, 37, 38, 39, 40, 41,
}
};
-static const uint8_t mpc8_q7_bits[2][MPC8_Q7_SIZE] = {
-{
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 5, 5,
- 5, 4, 4, 3, 3, 2
-},
-{
- 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5
-}
+
+static const uint8_t mpc8_q7_len_counts[2][MPC8_Q7_SIZE] = {
+ { 0, 1, 2, 2, 4, 6, 10, 10, 12, 16, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 20, 15, 10, 14, 4, 0, 0, 0, 0, 0, 0, 0 },
};
#define MPC8_Q8_SIZE 127
@@ -349,25 +290,10 @@ static const uint8_t mpc8_q8_syms[2][MPC8_Q8_SIZE] = {
69, 70, 71, 72, 73, 74, 76,
}
};
-static const uint8_t mpc8_q8_bits[2][MPC8_Q8_SIZE] = {
-{
- 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6,
- 6, 6, 6, 6, 6, 6, 5, 5, 5, 4, 3, 3, 2
-},
-{
- 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
- 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
-}
+
+static const uint8_t mpc8_q8_len_counts[2][16] = {
+ { 0, 1, 2, 1, 3, 8, 8, 15, 24, 42, 17, 6, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 26, 55, 38, 8, 0, 0, 0, 0, 0, 0, 0 },
};
#endif /* AVCODEC_MPC8HUFF_H */