Mercurial > libavcodec.hg
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 |