---
libavcodec/smacker_audio.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/libavcodec/smacker_audio.c b/libavcodec/smacker_audio.c
index 6ed74cf..6fe29db 100644
--- a/libavcodec/smacker_audio.c
+++ b/libavcodec/smacker_audio.c
@@ -30,6 +30,7 @@
#define ALT_BITSTREAM_READER_LE
#include "get_bits.h"
#include "libavutil/audioconvert.h"
+#include "mathops.h"
#include "smacker.h"
static av_cold int smka_decode_init(AVCodecContext *avctx)
@@ -130,7 +131,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)
@@ -143,7 +144,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];
}
}
@@ -158,14 +159,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];
}
}
--
1.7.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel