comparison mpegaudiodec.c @ 11709:6f9b4c452130 libavcodec

Optimize decoding high freqs. this is 10-20cpu cycles faster on duron (whole is about 50-60 cpu cylses) I wonder why gcc isnt doing this on its own ...
author michael
date Tue, 11 May 2010 21:10:55 +0000
parents 8d2e66ba12cf
children 8e3a3bc4fb24
comparison
equal deleted inserted replaced
11708:8d2e66ba12cf 11709:6f9b4c452130
1533 g->sb_hybrid[s_index+1]= 1533 g->sb_hybrid[s_index+1]=
1534 g->sb_hybrid[s_index+2]= 1534 g->sb_hybrid[s_index+2]=
1535 g->sb_hybrid[s_index+3]= 0; 1535 g->sb_hybrid[s_index+3]= 0;
1536 while(code){ 1536 while(code){
1537 static const int idxtab[16]={3,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0}; 1537 static const int idxtab[16]={3,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0};
1538 INTFLOAT v; 1538 int v;
1539 int pos= s_index+idxtab[code]; 1539 int pos= s_index+idxtab[code];
1540 code ^= 8>>idxtab[code]; 1540 code ^= 8>>idxtab[code];
1541 v = RENAME(exp_table)[ exponents[pos] ]; 1541 /* Following is a optimized code for
1542 // v = RENAME(exp_table)[ (exponents[pos]&3) ] >> FFMIN(0 - (exponents[pos]>>2), 31); 1542 INTFLOAT v = RENAME(exp_table)[ exponents[pos] ];
1543 if(get_bits1(&s->gb)) //FIXME try to flip the sign bit in int32_t, same above 1543 if(get_bits1(&s->gb))
1544 v = -v; 1544 v = -v;
1545 g->sb_hybrid[pos] = v; 1545 g->sb_hybrid[pos] = v;
1546 */
1547 #if CONFIG_FLOAT
1548 v = AV_RN32A(RENAME(exp_table)+exponents[pos]) ^ (get_bits1(&s->gb)<<31);
1549 AV_WN32A(g->sb_hybrid+pos, v);
1550 #else
1551 v= -get_bits1(&s->gb);
1552 g->sb_hybrid[pos] = (RENAME(exp_table)[ exponents[pos] ] ^ v) - v;
1553 #endif
1546 } 1554 }
1547 s_index+=4; 1555 s_index+=4;
1548 } 1556 }
1549 /* skip extension bits */ 1557 /* skip extension bits */
1550 bits_left = end_pos2 - get_bits_count(&s->gb); 1558 bits_left = end_pos2 - get_bits_count(&s->gb);