diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2011-11-09 16:19:52 -0500 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2011-11-09 16:19:52 -0500 |
commit | c86c3c8017da512591e6a490d447f64dc3d9253f (patch) | |
tree | 689e3d35d1846659e28c1a3f498c97099768be22 /libavcodec | |
parent | 979c8de549b7a627e6ce26026e39a01672dbd0b1 (diff) | |
download | ffmpeg-c86c3c8017da512591e6a490d447f64dc3d9253f.tar.gz |
smackaud: use sign_extend() for difference value instead of casting
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/smacker.c | 9 |
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]; } } |