Commit 9bffa9e7 authored by Michael Niedermayer's avatar Michael Niedermayer

avoid branch

Originally committed as revision 6088 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 14168ddb
...@@ -373,8 +373,8 @@ static int decode_init(AVCodecContext * avctx) ...@@ -373,8 +373,8 @@ static int decode_init(AVCodecContext * avctx)
const HuffTable *h = &mpa_huff_tables[i]; const HuffTable *h = &mpa_huff_tables[i];
int xsize, x, y; int xsize, x, y;
unsigned int n; unsigned int n;
uint8_t tmp_bits [256]; uint8_t tmp_bits [512];
uint16_t tmp_codes[256]; uint16_t tmp_codes[512];
memset(tmp_bits , 0, sizeof(tmp_bits )); memset(tmp_bits , 0, sizeof(tmp_bits ));
memset(tmp_codes, 0, sizeof(tmp_codes)); memset(tmp_codes, 0, sizeof(tmp_codes));
...@@ -385,13 +385,13 @@ static int decode_init(AVCodecContext * avctx) ...@@ -385,13 +385,13 @@ static int decode_init(AVCodecContext * avctx)
j = 0; j = 0;
for(x=0;x<xsize;x++) { for(x=0;x<xsize;x++) {
for(y=0;y<xsize;y++){ for(y=0;y<xsize;y++){
tmp_bits [(x << 4) | y]= h->bits [j ]; tmp_bits [(x << 5) | y | ((x&&y)<<4)]= h->bits [j ];
tmp_codes[(x << 4) | y]= h->codes[j++]; tmp_codes[(x << 5) | y | ((x&&y)<<4)]= h->codes[j++];
} }
} }
/* XXX: fail test */ /* XXX: fail test */
init_vlc(&huff_vlc[i], 7, 256, init_vlc(&huff_vlc[i], 7, 512,
tmp_bits, 1, 1, tmp_codes, 2, 2, 1); tmp_bits, 1, 1, tmp_codes, 2, 2, 1);
} }
for(i=0;i<2;i++) { for(i=0;i<2;i++) {
...@@ -1717,18 +1717,13 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, ...@@ -1717,18 +1717,13 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g,
continue; continue;
} }
x = y >> 4;
y = y & 0x0f;
exponent= exponents[s_index]; exponent= exponents[s_index];
dprintf("region=%d n=%d x=%d y=%d exp=%d\n", dprintf("region=%d n=%d x=%d y=%d exp=%d\n",
i, g->region_size[i] - j, x, y, exponent); i, g->region_size[i] - j, x, y, exponent);
if (x) { if(y&16){
#if 0 x = y >> 5;
if (x == 15) y = y & 0x0f;
x += get_bitsz(&s->gb, linbits);
v = l3_unscale(x, exponent);
#else
if (x < 15){ if (x < 15){
v = expval_table[ exponent ][ x ]; v = expval_table[ exponent ][ x ];
// v = expval_table[ (exponent&3) ][ x ] >> FFMIN(0 - (exponent>>2), 31); // v = expval_table[ (exponent&3) ][ x ] >> FFMIN(0 - (exponent>>2), 31);
...@@ -1736,32 +1731,33 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g, ...@@ -1736,32 +1731,33 @@ static int huffman_decode(MPADecodeContext *s, GranuleDef *g,
x += get_bitsz(&s->gb, linbits); x += get_bitsz(&s->gb, linbits);
v = l3_unscale(x, exponent); v = l3_unscale(x, exponent);
} }
#endif
if (get_bits1(&s->gb)) if (get_bits1(&s->gb))
v = -v; v = -v;
} else { g->sb_hybrid[s_index] = v;
v = 0;
}
g->sb_hybrid[s_index++] = v;
if (y) {
#if 0
if (y == 15)
y += get_bitsz(&s->gb, linbits);
v = l3_unscale(y, exponent);
#else
if (y < 15){ if (y < 15){
v = expval_table[ exponent ][ y ]; v = expval_table[ exponent ][ y ];
}else{ }else{
y += get_bitsz(&s->gb, linbits); y += get_bitsz(&s->gb, linbits);
v = l3_unscale(y, exponent); v = l3_unscale(y, exponent);
} }
#endif
if (get_bits1(&s->gb)) if (get_bits1(&s->gb))
v = -v; v = -v;
} else { g->sb_hybrid[s_index+1] = v;
v = 0; }else{
x = y >> 5;
y = y & 0x0f;
x += y;
if (x < 15){
v = expval_table[ exponent ][ x ];
}else{
x += get_bitsz(&s->gb, linbits);
v = l3_unscale(x, exponent);
}
if (get_bits1(&s->gb))
v = -v;
g->sb_hybrid[s_index+!!y] = v;
} }
g->sb_hybrid[s_index++] = v; s_index+=2;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment