diff options
author | Paul B Mahol <onemda@gmail.com> | 2011-12-21 19:27:53 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-01-03 22:25:03 +0100 |
commit | 89cf156acea89a12eec91c90f296db8b0434b9c0 (patch) | |
tree | 8020ae0f6ba60e928bfb3fd7c93a8af81a416a27 | |
parent | 4f94de84e88fecf8797abf830e4fdc9f13ac01dd (diff) | |
download | ffmpeg-89cf156acea89a12eec91c90f296db8b0434b9c0.tar.gz |
adpcm: fix IMA SMJPEG decoding
Signed-off-by: Janne Grunau <janne-libav@jannau.net>
(cherry picked from commit 01a01bf8bdafab1c81c3039850aba042b247626f)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/adpcm.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/libavcodec/adpcm.c b/libavcodec/adpcm.c index e7657945dd..688fba430c 100644 --- a/libavcodec/adpcm.c +++ b/libavcodec/adpcm.c @@ -1007,11 +1007,15 @@ static int adpcm_decode_frame(AVCodecContext *avctx, void *data, break; case CODEC_ID_ADPCM_IMA_AMV: case CODEC_ID_ADPCM_IMA_SMJPEG: - c->status[0].predictor = (int16_t)bytestream_get_le16(&src); - c->status[0].step_index = bytestream_get_le16(&src); - - if (avctx->codec->id == CODEC_ID_ADPCM_IMA_AMV) - src+=4; + if (avctx->codec->id == CODEC_ID_ADPCM_IMA_AMV) { + c->status[0].predictor = sign_extend(bytestream_get_le16(&src), 16); + c->status[0].step_index = bytestream_get_le16(&src); + src += 4; + } else { + c->status[0].predictor = sign_extend(bytestream_get_be16(&src), 16); + c->status[0].step_index = bytestream_get_byte(&src); + src += 1; + } for (n = nb_samples >> (1 - st); n > 0; n--, src++) { char hi, lo; |