This avoids duplicating the table in the gsm template file. Also adjust the table type to uint8_t to save space.tags/n3.2
| @@ -26,6 +26,13 @@ const uint16_t ff_gsm_long_term_gain_tab[4] = { | |||||
| 3277, 11469, 21299, 32767 | 3277, 11469, 21299, 32767 | ||||
| }; | }; | ||||
| const uint8_t ff_gsm_requant_tab[4][8] = { | |||||
| { 0 }, | |||||
| { 0, 7 }, | |||||
| { 0, 2, 5, 7 }, | |||||
| { 0, 1, 2, 3, 4, 5, 6, 7 } | |||||
| }; | |||||
| const int16_t ff_gsm_dequant_tab[64][8] = { | const int16_t ff_gsm_dequant_tab[64][8] = { | ||||
| { -28, -20, -12, -4, 4, 12, 20, 28}, | { -28, -20, -12, -4, 4, 12, 20, 28}, | ||||
| { -56, -40, -24, -8, 8, 24, 40, 56}, | { -56, -40, -24, -8, 8, 24, 40, 56}, | ||||
| @@ -38,6 +38,7 @@ typedef struct GSMContext { | |||||
| } GSMContext; | } GSMContext; | ||||
| extern const uint16_t ff_gsm_long_term_gain_tab[4]; | extern const uint16_t ff_gsm_long_term_gain_tab[4]; | ||||
| extern const uint8_t ff_gsm_requant_tab[4][8]; | |||||
| extern const int16_t ff_gsm_dequant_tab[64][8]; | extern const int16_t ff_gsm_dequant_tab[64][8]; | ||||
| extern const int* const ff_gsm_apcm_bits[][4]; | extern const int* const ff_gsm_apcm_bits[][4]; | ||||
| @@ -28,13 +28,6 @@ | |||||
| #include "gsm.h" | #include "gsm.h" | ||||
| #include "gsmdec_data.h" | #include "gsmdec_data.h" | ||||
| static const int requant_tab[4][8] = { | |||||
| { 0 }, | |||||
| { 0, 7 }, | |||||
| { 0, 2, 5, 7 }, | |||||
| { 0, 1, 2, 3, 4, 5, 6, 7 } | |||||
| }; | |||||
| static void apcm_dequant_add(GetBitContext *gb, int16_t *dst, const int *frame_bits) | static void apcm_dequant_add(GetBitContext *gb, int16_t *dst, const int *frame_bits) | ||||
| { | { | ||||
| int i, val; | int i, val; | ||||
| @@ -42,7 +35,7 @@ static void apcm_dequant_add(GetBitContext *gb, int16_t *dst, const int *frame_b | |||||
| const int16_t *tab = ff_gsm_dequant_tab[maxidx]; | const int16_t *tab = ff_gsm_dequant_tab[maxidx]; | ||||
| for (i = 0; i < 13; i++) { | for (i = 0; i < 13; i++) { | ||||
| val = get_bits(gb, frame_bits[i]); | val = get_bits(gb, frame_bits[i]); | ||||
| dst[3*i] += tab[requant_tab[frame_bits[i]][val]]; | |||||
| dst[3 * i] += tab[ff_gsm_requant_tab[frame_bits[i]][val]]; | |||||
| } | } | ||||
| } | } | ||||