diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-07-09 10:53:28 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-07-19 13:26:46 -0400 |
commit | 7e6593e9773773b5f6ad19fe4cdb2334d492493c (patch) | |
tree | 96ad049b1852699949ee535de05c45677732228e /libavcodec | |
parent | 6fd8a28b596760b4b0a2f227c54d7315e04c396a (diff) | |
download | ffmpeg-7e6593e9773773b5f6ad19fe4cdb2334d492493c.tar.gz |
alac: eliminate 2 unneeded local variables in bastardized_rice_decompress()
x_modified is just unnecessary, and final_val can be removed by simplifying
the unsigned-to-signed conversion.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/alac.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/libavcodec/alac.c b/libavcodec/alac.c index f27992d056..2aab84cd2e 100644 --- a/libavcodec/alac.c +++ b/libavcodec/alac.c @@ -110,32 +110,23 @@ static void bastardized_rice_decompress(ALACContext *alac, int sign_modifier = 0; for (output_count = 0; output_count < output_size; output_count++) { - int32_t x; - int32_t x_modified; - int32_t final_val; - - /* standard rice encoding */ - int k; /* size of extra bits */ + int x, k; /* read k, that is bits as is */ k = av_log2((history >> 9) + 3); k = FFMIN(k, alac->rice_limit); x = decode_scalar(&alac->gb, k, readsamplesize); - - x_modified = sign_modifier + x; - final_val = (x_modified + 1) / 2; - if (x_modified & 1) final_val *= -1; - - output_buffer[output_count] = final_val; - + x += sign_modifier; sign_modifier = 0; + output_buffer[output_count] = (x >> 1) ^ -(x & 1); + /* now update the history */ - if (x_modified > 0xffff) + if (x > 0xffff) history = 0xffff; else - history += x_modified * rice_history_mult - - ((history * rice_history_mult) >> 9); + history += x * rice_history_mult - + ((history * rice_history_mult) >> 9); /* special case: there may be compressed blocks of 0 */ if ((history < 128) && (output_count+1 < output_size)) { |