diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-07-09 11:12:25 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-07-19 13:26:46 -0400 |
commit | 01880d287be6e2269b92eee8d9dc442532d277ea (patch) | |
tree | e94b2c23b2b7b5f065ae4ec1aa18218bf46f0b67 | |
parent | d0c0bf0d3e1bdb58188a2006bb24d83fae01236b (diff) | |
download | ffmpeg-01880d287be6e2269b92eee8d9dc442532d277ea.tar.gz |
alac: simplify 1st order prediction and reading of warm-up samples
-rw-r--r-- | libavcodec/alac.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/libavcodec/alac.c b/libavcodec/alac.c index 9a3ca51054..b19973db50 100644 --- a/libavcodec/alac.c +++ b/libavcodec/alac.c @@ -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. */ |