Browse code

1-13% faster apply_filter, 1-3% faster ape decoding on core2

Originally committed as revision 20729 to svn://svn.ffmpeg.org/ffmpeg/trunk

Loren Merritt authored on 2009/12/05 00:12:09
Showing 1 changed files
... ...
@@ -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