---
 libavcodec/ac3enc.c |   23 ++++++++++++++---------
 1 files changed, 14 insertions(+), 9 deletions(-)

diff --git libavcodec/ac3enc.c libavcodec/ac3enc.c
index 994c316..238a553 100644
--- libavcodec/ac3enc.c
+++ libavcodec/ac3enc.c
@@ -242,31 +242,36 @@ static void fft(IComplex *z, int ln)
 static void mdct512(int32_t *out, int16_t *in)
 {
     int i, re, im, re1, im1;
+    int n, n2, n4;
     int16_t rot[MDCT_SAMPLES];
     IComplex x[MDCT_SAMPLES/4];
 
+    n  = MDCT_SAMPLES;
+    n2 = n >> 1;
+    n4 = n >> 2;
+
     /* shift to simplify computations */
-    for (i = 0; i < MDCT_SAMPLES/4; i++)
-        rot[i] = -in[i + 3*MDCT_SAMPLES/4];
-    for (; i < MDCT_SAMPLES; i++)
-        rot[i] =  in[i -   MDCT_SAMPLES/4];
+    for (i = 0; i < n4; i++)
+        rot[i] = -in[i+3*n4];
+    for (; i < n; i++)
+        rot[i] =  in[i-n4];
 
     /* pre rotation */
-    for (i = 0; i < MDCT_SAMPLES/4; i++) {
-        re = ((int)rot[2*i] - (int)rot[MDCT_SAMPLES-1-2*i]) >> 1;
-        im = -((int)rot[MDCT_SAMPLES/2+2*i] - (int)rot[MDCT_SAMPLES/2-1-2*i]) >> 1;
+    for (i = 0; i < n4; i++) {
+        re =  ((int)rot[   2*i] - (int)rot[ n-1-2*i]) >> 1;
+        im = -((int)rot[n2+2*i] - (int)rot[n2-1-2*i]) >> 1;
         CMUL(x[i].re, x[i].im, re, im, -xcos1[i], xsin1[i]);
     }
 
     fft(x, MDCT_NBITS - 2);
 
     /* post rotation */
-    for (i = 0; i < MDCT_SAMPLES/4; i++) {
+    for (i = 0; i < n4; i++) {
         re = x[i].re;
         im = x[i].im;
         CMUL(re1, im1, re, im, xsin1[i], xcos1[i]);
         out[2*i] = im1;
-        out[MDCT_SAMPLES/2-1-2*i] = re1;
+        out[n2-1-2*i] = re1;
     }
 }
 
_______________________________________________
FFmpeg-soc mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc

Reply via email to