comparison ac3dec.c @ 8271:52af55b08c1d libavcodec

ac3dec: unroll inner loop in exponent decoding. 46% faster decode_exponents().
author jbr
date Sat, 06 Dec 2008 15:46:23 +0000
parents 0fc2b35a1c14
children e2ef97f0ab4b
comparison
equal deleted inserted replaced
8270:0fc2b35a1c14 8271:52af55b08c1d
388 dexp[i++] = ungroup_3_in_7_bits_tab[expacc][2]; 388 dexp[i++] = ungroup_3_in_7_bits_tab[expacc][2];
389 } 389 }
390 390
391 /* convert to absolute exps and expand groups */ 391 /* convert to absolute exps and expand groups */
392 prevexp = absexp; 392 prevexp = absexp;
393 for(i=0; i<ngrps*3; i++) { 393 for(i=0,j=0; i<ngrps*3; i++) {
394 prevexp += dexp[i] - 2; 394 prevexp += dexp[i] - 2;
395 if (prevexp < 0 || prevexp > 24) 395 if (prevexp < 0 || prevexp > 24)
396 return -1; 396 return -1;
397 for(j=0; j<group_size; j++) { 397 switch (group_size) {
398 dexps[(i*group_size)+j] = prevexp; 398 case 4: dexps[j++] = prevexp;
399 dexps[j++] = prevexp;
400 case 2: dexps[j++] = prevexp;
401 case 1: dexps[j++] = prevexp;
399 } 402 }
400 } 403 }
401 return 0; 404 return 0;
402 } 405 }
403 406