From 4b070a7a613f680075ea6ca01303293b94b60523 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 11 May 2010 21:20:33 +0000 Subject: Factorize READ_FLIP_SIGN() optimization out Originally committed as revision 23098 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mpegaudiodec.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'libavcodec/mpegaudiodec.c') diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index a219cdbe0b..2279b8daaa 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -1407,6 +1407,22 @@ static void switch_buffer(MPADecodeContext *s, int *pos, int *end_pos, int *end_ } } +/* Following is a optimized code for + INTFLOAT v = *src + if(get_bits1(&s->gb)) + v = -v; + *dst = v; +*/ +#if CONFIG_FLOAT +#define READ_FLIP_SIGN(dst,src)\ + v = AV_RN32A(src) ^ (get_bits1(&s->gb)<<31);\ + AV_WN32A(dst, v); +#else +#define READ_FLIP_SIGN(dst,src)\ + v= -get_bits1(&s->gb);\ + *(dst) = (*(src) ^ v) - v; +#endif + static int huffman_decode(MPADecodeContext *s, GranuleDef *g, int16_t *exponents, int end_pos2) { @@ -1538,19 +1554,7 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, int v; int pos= s_index+idxtab[code]; code ^= 8>>idxtab[code]; -/* Following is a optimized code for - INTFLOAT v = RENAME(exp_table)[ exponents[pos] ]; - if(get_bits1(&s->gb)) - v = -v; - g->sb_hybrid[pos] = v; -*/ -#if CONFIG_FLOAT - v = AV_RN32A(RENAME(exp_table)+exponents[pos]) ^ (get_bits1(&s->gb)<<31); - AV_WN32A(g->sb_hybrid+pos, v); -#else - v= -get_bits1(&s->gb); - g->sb_hybrid[pos] = (RENAME(exp_table)[ exponents[pos] ] ^ v) - v; -#endif + READ_FLIP_SIGN(g->sb_hybrid+pos, RENAME(exp_table)+exponents[pos]) } s_index+=4; } -- cgit v1.2.3