summaryrefslogtreecommitdiff
path: root/libavcodec/alac.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-07-09 10:53:28 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2012-07-19 13:26:46 -0400
commit7e6593e9773773b5f6ad19fe4cdb2334d492493c (patch)
tree96ad049b1852699949ee535de05c45677732228e /libavcodec/alac.c
parent6fd8a28b596760b4b0a2f227c54d7315e04c396a (diff)
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/alac.c')
-rw-r--r--libavcodec/alac.c23
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)) {