atrac3: simplify some loop indexing
authorJustin Ruggles <justin.ruggles@gmail.com>
Thu, 18 Oct 2012 21:07:04 +0000 (17:07 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Mon, 22 Oct 2012 14:10:06 +0000 (10:10 -0400)
libavcodec/atrac3.c

index 4223d04..ad707b1 100644 (file)
@@ -551,7 +551,7 @@ static void reverse_matrixing(float *su1, float *su2, int *prev_code,
     for (i = 0, band = 0; band < 4 * 256; band += 256, i++) {
         int s1 = prev_code[i];
         int s2 = curr_code[i];
-        nsample = 0;
+        nsample = band;
 
         if (s1 != s2) {
             /* Selector value changed, interpolation needed. */
@@ -561,41 +561,41 @@ static void reverse_matrixing(float *su1, float *su2, int *prev_code,
             mc2_r = matrix_coeffs[s2 * 2 + 1];
 
             /* Interpolation is done over the first eight samples. */
-            for (; nsample < 8; nsample++) {
-                float c1 = su1[band + nsample];
-                float c2 = su2[band + nsample];
-                c2 = c1 * INTERPOLATE(mc1_l, mc2_l, nsample) +
-                     c2 * INTERPOLATE(mc1_r, mc2_r, nsample);
-                su1[band + nsample] = c2;
-                su2[band + nsample] = c1 * 2.0 - c2;
+            for (; nsample < band + 8; nsample++) {
+                float c1 = su1[nsample];
+                float c2 = su2[nsample];
+                c2 = c1 * INTERPOLATE(mc1_l, mc2_l, nsample - band) +
+                     c2 * INTERPOLATE(mc1_r, mc2_r, nsample - band);
+                su1[nsample] = c2;
+                su2[nsample] = c1 * 2.0 - c2;
             }
         }
 
         /* Apply the matrix without interpolation. */
         switch (s2) {
         case 0:     /* M/S decoding */
-            for (; nsample < 256; nsample++) {
-                float c1 = su1[band + nsample];
-                float c2 = su2[band + nsample];
-                su1[band + nsample] =  c2       * 2.0;
-                su2[band + nsample] = (c1 - c2) * 2.0;
+            for (; nsample < band + 256; nsample++) {
+                float c1 = su1[nsample];
+                float c2 = su2[nsample];
+                su1[nsample] =  c2       * 2.0;
+                su2[nsample] = (c1 - c2) * 2.0;
             }
             break;
         case 1:
-            for (; nsample < 256; nsample++) {
-                float c1 = su1[band + nsample];
-                float c2 = su2[band + nsample];
-                su1[band + nsample] = (c1 + c2) *  2.0;
-                su2[band + nsample] =  c2       * -2.0;
+            for (; nsample < band + 256; nsample++) {
+                float c1 = su1[nsample];
+                float c2 = su2[nsample];
+                su1[nsample] = (c1 + c2) *  2.0;
+                su2[nsample] =  c2       * -2.0;
             }
             break;
         case 2:
         case 3:
-            for (; nsample < 256; nsample++) {
-                float c1 = su1[band + nsample];
-                float c2 = su2[band + nsample];
-                su1[band + nsample] = c1 + c2;
-                su2[band + nsample] = c1 - c2;
+            for (; nsample < band + 256; nsample++) {
+                float c1 = su1[nsample];
+                float c2 = su2[nsample];
+                su1[nsample] = c1 + c2;
+                su2[nsample] = c1 - c2;
             }
             break;
         default:
@@ -627,14 +627,14 @@ static void channel_weighting(float *su1, float *su2, int *p3)
         get_channel_weights(p3[1], p3[0], w[0]);
         get_channel_weights(p3[3], p3[2], w[1]);
 
-        for (band = 1; band < 4; band++) {
-            for (nsample = 0; nsample < 8; nsample++) {
-                su1[band * 256 + nsample] *= INTERPOLATE(w[0][0], w[0][1], nsample);
-                su2[band * 256 + nsample] *= INTERPOLATE(w[1][0], w[1][1], nsample);
+        for (band = 256; band < 4 * 256; band += 256) {
+            for (nsample = band; nsample < band + 8; nsample++) {
+                su1[nsample] *= INTERPOLATE(w[0][0], w[0][1], nsample - band);
+                su2[nsample] *= INTERPOLATE(w[1][0], w[1][1], nsample - band);
             }
-            for(; nsample < 256; nsample++) {
-                su1[band * 256  + nsample] *= w[1][0];
-                su2[band * 256  + nsample] *= w[1][1];
+            for(; nsample < band + 256; nsample++) {
+                su1[nsample] *= w[1][0];
+                su2[nsample] *= w[1][1];
             }
         }
     }