summaryrefslogtreecommitdiff
path: root/libavcodec/smacker.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-11-09 16:19:52 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2011-11-09 16:19:52 -0500
commitc86c3c8017da512591e6a490d447f64dc3d9253f (patch)
tree689e3d35d1846659e28c1a3f498c97099768be22 /libavcodec/smacker.c
parent979c8de549b7a627e6ce26026e39a01672dbd0b1 (diff)
smackaud: use sign_extend() for difference value instead of casting
Diffstat (limited to 'libavcodec/smacker.c')
-rw-r--r--libavcodec/smacker.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c
index d8a3d7733b..7013aa1f05 100644
--- a/libavcodec/smacker.c
+++ b/libavcodec/smacker.c
@@ -33,6 +33,7 @@
#include "avcodec.h"
#include "libavutil/audioconvert.h"
+#include "mathops.h"
#define ALT_BITSTREAM_READER_LE
#include "get_bits.h"
@@ -655,7 +656,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
else
res = 0;
val |= h[3].values[res] << 8;
- pred[1] += (int16_t)val;
+ pred[1] += sign_extend(val, 16);
*samples++ = pred[1];
} else {
if(vlc[0].table)
@@ -668,7 +669,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
else
res = 0;
val |= h[1].values[res] << 8;
- pred[0] += val;
+ pred[0] += sign_extend(val, 16);
*samples++ = pred[0];
}
}
@@ -683,14 +684,14 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3);
else
res = 0;
- pred[1] += (int8_t)h[1].values[res];
+ pred[1] += sign_extend(h[1].values[res], 8);
*samples8++ = pred[1];
} else {
if(vlc[0].table)
res = get_vlc2(&gb, vlc[0].table, SMKTREE_BITS, 3);
else
res = 0;
- pred[0] += (int8_t)h[0].values[res];
+ pred[0] += sign_extend(h[0].values[res], 8);
*samples8++ = pred[0];
}
}