diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2008-08-03 19:24:04 +0000 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2008-08-03 19:24:04 +0000 |
commit | 7417120b6feebe49aac0a8fcd2959b2ea968a8b5 (patch) | |
tree | 923474529e09afdf17cdb34b7b6ae97bc52ac2bc /libavcodec/ac3dec.c | |
parent | 2288834f8766fb268e0f6d72e0b3627ff2dadce3 (diff) | |
download | ffmpeg-7417120b6feebe49aac0a8fcd2959b2ea968a8b5.tar.gz |
use the same table for ungrouping exponents and bap=2 mantissas
Originally committed as revision 14525 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/ac3dec.c')
-rw-r--r-- | libavcodec/ac3dec.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/libavcodec/ac3dec.c b/libavcodec/ac3dec.c index efa3644e02..a0123fc45c 100644 --- a/libavcodec/ac3dec.c +++ b/libavcodec/ac3dec.c @@ -44,8 +44,11 @@ /** Maximum possible frame size when the specification limit is ignored */ #define AC3_MAX_FRAME_SIZE 21695 -/** table for grouping exponents */ -static uint8_t exp_ungroup_tab[128][3]; +/** + * table for ungrouping 3 values in 7 bits. + * used for exponents and bap=2 mantissas + */ +static uint8_t ungroup_3_in_7_bits_tab[128][3]; /** tables for ungrouping mantissas */ @@ -135,6 +138,14 @@ static av_cold void ac3_tables_init(void) { int i; + /* generate table for ungrouping 3 values in 7 bits + reference: Section 7.1.3 Exponent Decoding */ + for(i=0; i<128; i++) { + ungroup_3_in_7_bits_tab[i][0] = i / 25; + ungroup_3_in_7_bits_tab[i][1] = (i % 25) / 5; + ungroup_3_in_7_bits_tab[i][2] = (i % 25) % 5; + } + /* generate grouped mantissa tables reference: Section 7.3.5 Ungrouping of Mantissas */ for(i=0; i<32; i++) { @@ -145,9 +156,9 @@ static av_cold void ac3_tables_init(void) } for(i=0; i<128; i++) { /* bap=2 mantissas */ - b2_mantissas[i][0] = symmetric_dequant( i / 25 , 5); - b2_mantissas[i][1] = symmetric_dequant((i % 25) / 5, 5); - b2_mantissas[i][2] = symmetric_dequant((i % 25) % 5, 5); + b2_mantissas[i][0] = symmetric_dequant(ungroup_3_in_7_bits_tab[i][0], 5); + b2_mantissas[i][1] = symmetric_dequant(ungroup_3_in_7_bits_tab[i][1], 5); + b2_mantissas[i][2] = symmetric_dequant(ungroup_3_in_7_bits_tab[i][2], 5); /* bap=4 mantissas */ b4_mantissas[i][0] = symmetric_dequant(i / 11, 11); @@ -170,14 +181,6 @@ static av_cold void ac3_tables_init(void) int v = (i >> 5) - ((i >> 7) << 3) - 5; dynamic_range_tab[i] = powf(2.0f, v) * ((i & 0x1F) | 0x20); } - - /* generate exponent tables - reference: Section 7.1.3 Exponent Decoding */ - for(i=0; i<128; i++) { - exp_ungroup_tab[i][0] = i / 25; - exp_ungroup_tab[i][1] = (i % 25) / 5; - exp_ungroup_tab[i][2] = (i % 25) % 5; - } } @@ -361,9 +364,9 @@ static void decode_exponents(GetBitContext *gbc, int exp_strategy, int ngrps, group_size = exp_strategy + (exp_strategy == EXP_D45); for(grp=0,i=0; grp<ngrps; grp++) { expacc = get_bits(gbc, 7); - dexp[i++] = exp_ungroup_tab[expacc][0]; - dexp[i++] = exp_ungroup_tab[expacc][1]; - dexp[i++] = exp_ungroup_tab[expacc][2]; + dexp[i++] = ungroup_3_in_7_bits_tab[expacc][0]; + dexp[i++] = ungroup_3_in_7_bits_tab[expacc][1]; + dexp[i++] = ungroup_3_in_7_bits_tab[expacc][2]; } /* convert to absolute exps and expand groups */ |