From 4a904903dc553403cac22b03faa597519d46cd47 Mon Sep 17 00:00:00 2001 From: Alex Converse Date: Tue, 9 Dec 2008 17:14:42 +0000 Subject: AAC: Use a sign LUT rather than 1-2*get_bits1() Patch by Alex Converse (alex converse gmail com) Originally committed as revision 16041 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/aac.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'libavcodec') diff --git a/libavcodec/aac.c b/libavcodec/aac.c index 5be16165b5..1803d4d7f1 100644 --- a/libavcodec/aac.c +++ b/libavcodec/aac.c @@ -741,6 +741,7 @@ static int decode_spectrum_and_dequant(AACContext * ac, float coef[1024], GetBit const int c = 1024/ics->num_windows; const uint16_t * offsets = ics->swb_offset; float *coef_base = coef; + static const float sign_lookup[] = { 1.0f, -1.0f }; for (g = 0; g < ics->num_windows; g++) memset(coef + g * 128 + offsets[ics->max_sfb], 0, sizeof(float)*(c - offsets[ics->max_sfb])); @@ -784,11 +785,11 @@ static int decode_spectrum_and_dequant(AACContext * ac, float coef[1024], GetBit } vq_ptr = &ff_aac_codebook_vectors[cur_band_type - 1][index * dim]; if (is_cb_unsigned) { - if (vq_ptr[0]) coef[coef_tmp_idx ] = 1 - 2*(int)get_bits1(gb); - if (vq_ptr[1]) coef[coef_tmp_idx + 1] = 1 - 2*(int)get_bits1(gb); + if (vq_ptr[0]) coef[coef_tmp_idx ] = sign_lookup[get_bits1(gb)]; + if (vq_ptr[1]) coef[coef_tmp_idx + 1] = sign_lookup[get_bits1(gb)]; if (dim == 4) { - if (vq_ptr[2]) coef[coef_tmp_idx + 2] = 1 - 2*(int)get_bits1(gb); - if (vq_ptr[3]) coef[coef_tmp_idx + 3] = 1 - 2*(int)get_bits1(gb); + if (vq_ptr[2]) coef[coef_tmp_idx + 2] = sign_lookup[get_bits1(gb)]; + if (vq_ptr[3]) coef[coef_tmp_idx + 3] = sign_lookup[get_bits1(gb)]; } }else { coef[coef_tmp_idx ] = 1.0f; -- cgit v1.2.3