aacenc_utils: Use temporary variable.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sun, 6 Mar 2016 20:25:11 +0000 (21:25 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Tue, 8 Mar 2016 22:56:51 +0000 (23:56 +0100)
This ensures gcc does not create unnecessary
loads or stores and possibly even does not vectorize
the negation.
Speeds up mp3 to aac transcoding with default settings
by 10% when using "gcc (Debian 5.3.1-10) 5.3.1 20160224".

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
libavcodec/aacenc_utils.h

index b9bd6bf..41a6296 100644 (file)
@@ -68,10 +68,11 @@ static inline void quantize_bands(int *out, const float *in, const float *scaled
     int i;
     for (i = 0; i < size; i++) {
         float qc = scaled[i] * Q34;
-        out[i] = (int)FFMIN(qc + rounding, (float)maxval);
+        int tmp = (int)FFMIN(qc + rounding, (float)maxval);
         if (is_signed && in[i] < 0.0f) {
-            out[i] = -out[i];
+            tmp = -tmp;
         }
+        out[i] = tmp;
     }
 }