alac: simplify 1st order prediction and reading of warm-up samples
authorJustin Ruggles <justin.ruggles@gmail.com>
Mon, 9 Jul 2012 15:12:25 +0000 (11:12 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Thu, 19 Jul 2012 17:26:46 +0000 (13:26 -0400)
libavcodec/alac.c

index 9a3ca51..b19973d 100644 (file)
@@ -186,25 +186,17 @@ static void predictor_decompress_fir_adapt(int32_t *error_buffer,
         /* simple 1st-order prediction */
         if (output_size <= 1)
             return;
-        for (i = 0; i < output_size - 1; i++) {
-            int32_t prev_value;
-            int32_t error_value;
-
-            prev_value = buffer_out[i];
-            error_value = error_buffer[i+1];
-            buffer_out[i+1] =
-                sign_extend((prev_value + error_value), readsamplesize);
+        for (i = 1; i < output_size; i++) {
+            buffer_out[i] = sign_extend(buffer_out[i - 1] + error_buffer[i],
+                                        readsamplesize);
         }
         return;
     }
 
     /* read warm-up samples */
     for (i = 0; i < predictor_coef_num; i++) {
-        int32_t val;
-
-        val = buffer_out[i] + error_buffer[i+1];
-        val = sign_extend(val, readsamplesize);
-        buffer_out[i+1] = val;
+        buffer_out[i + 1] = sign_extend(buffer_out[i] + error_buffer[i + 1],
+                                        readsamplesize);
     }
 
     /* NOTE: 4 and 8 are very common cases that could be optimized. */