Originally committed as revision 20729 to svn://svn.ffmpeg.org/ffmpeg/trunk
Loren Merritt authored on 2009/12/05 00:12:09... | ... |
@@ -678,14 +678,9 @@ static inline void do_apply_filter(APEContext * ctx, int version, APEFilter *f, |
678 | 678 |
/* Version 3.98 and later files */ |
679 | 679 |
|
680 | 680 |
/* Update the adaption coefficients */ |
681 |
- absres = (res < 0 ? -res : res); |
|
682 |
- |
|
683 |
- if (absres > (f->avg * 3)) |
|
684 |
- *f->adaptcoeffs = ((res >> 25) & 64) - 32; |
|
685 |
- else if (absres > (f->avg * 4) / 3) |
|
686 |
- *f->adaptcoeffs = ((res >> 26) & 32) - 16; |
|
687 |
- else if (absres > 0) |
|
688 |
- *f->adaptcoeffs = ((res >> 27) & 16) - 8; |
|
681 |
+ absres = FFABS(res); |
|
682 |
+ if (absres) |
|
683 |
+ *f->adaptcoeffs = ((res & (1<<31)) - (1<<30)) >> (25 + (absres <= f->avg*3) + (absres <= f->avg*4/3)); |
|
689 | 684 |
else |
690 | 685 |
*f->adaptcoeffs = 0; |
691 | 686 |
|