comparison mpegaudiodec.c @ 3621:d4896ea0305b libavcodec

replace l3_unscale(1, exponents[pos]) by LUT
author michael
date Fri, 25 Aug 2006 10:00:30 +0000
parents 5f738d186815
children e88a3910f855
comparison
equal deleted inserted replaced
3620:5f738d186815 3621:d4896ea0305b
171 static uint16_t band_index_long[9][23]; 171 static uint16_t band_index_long[9][23];
172 /* XXX: free when all decoders are closed */ 172 /* XXX: free when all decoders are closed */
173 #define TABLE_4_3_SIZE (8191 + 16)*4 173 #define TABLE_4_3_SIZE (8191 + 16)*4
174 static int8_t *table_4_3_exp; 174 static int8_t *table_4_3_exp;
175 static uint32_t *table_4_3_value; 175 static uint32_t *table_4_3_value;
176 static uint32_t exp_table[512];
176 /* intensity stereo coef table */ 177 /* intensity stereo coef table */
177 static int32_t is_table[2][16]; 178 static int32_t is_table[2][16];
178 static int32_t is_table_lsf[2][2][16]; 179 static int32_t is_table_lsf[2][2][16];
179 static int32_t csa_table[8][4]; 180 static int32_t csa_table[8][4];
180 static float csa_table_float[8][4]; 181 static float csa_table_float[8][4];
425 426
426 /* normalized to FRAC_BITS */ 427 /* normalized to FRAC_BITS */
427 table_4_3_value[i] = m; 428 table_4_3_value[i] = m;
428 // av_log(NULL, AV_LOG_DEBUG, "%d %d %f\n", i, m, pow((double)i, 4.0 / 3.0)); 429 // av_log(NULL, AV_LOG_DEBUG, "%d %d %f\n", i, m, pow((double)i, 4.0 / 3.0));
429 table_4_3_exp[i] = -e; 430 table_4_3_exp[i] = -e;
431 }
432 for(i=0; i<512; i++){
433 int exponent= i-400;
434 double f= pow(1, 4.0 / 3.0) * pow(2, exponent*0.25 + FRAC_BITS + 5);
435 exp_table[i]= lrintf(f);
430 } 436 }
431 437
432 for(i=0;i<7;i++) { 438 for(i=0;i<7;i++) {
433 float f; 439 float f;
434 int v; 440 int v;
1758 g->sb_hybrid[s_index+3]= 0; 1764 g->sb_hybrid[s_index+3]= 0;
1759 while(code){ 1765 while(code){
1760 const static int idxtab[16]={3,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0}; 1766 const static int idxtab[16]={3,3,2,2,1,1,1,1,0,0,0,0,0,0,0,0};
1761 int pos= s_index+idxtab[code]; 1767 int pos= s_index+idxtab[code];
1762 code ^= 8>>idxtab[code]; 1768 code ^= 8>>idxtab[code];
1763 v = l3_unscale(1, exponents[pos]); 1769 v = exp_table[ exponents[pos] + 400];
1764 if(get_bits1(&s->gb)) 1770 if(get_bits1(&s->gb))
1765 v = -v; 1771 v = -v;
1766 g->sb_hybrid[pos] = v; 1772 g->sb_hybrid[pos] = v;
1767 } 1773 }
1768 s_index+=4; 1774 s_index+=4;