diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-09-04 14:02:30 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2012-09-04 15:30:58 +0300 |
commit | aa264da5bf6a3d82a47abba4cfcfa629dd1f3daa (patch) | |
tree | 5dcb4dbbede4e1a77f7cf72fc894c9dc50a0c009 | |
parent | f82c4fb27fa7f8afbe8411c9d37e85facbbc87ae (diff) | |
download | ffmpeg-aa264da5bf6a3d82a47abba4cfcfa629dd1f3daa.tar.gz |
adpcmenc: Calculate the IMA_QT predictor without overflow
Previously, the value given to put_bits was 10 bits long for positive
predictors, even though 9 bits were to be written. The extra bit could
in some cases overwrite existing bits in the bitstream writer cache.
This fixes a failed assert in put_bits.h, when running a version
built with -DDEBUG.
The fate test result gets slightly improved, thanks to getting rid
of the overwritten bits in the bitstream writer cache.
Signed-off-by: Martin Storsjö <martin@martin.st>
-rw-r--r-- | libavcodec/adpcmenc.c | 2 | ||||
-rw-r--r-- | tests/ref/fate/acodec-adpcm-ima_qt | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/libavcodec/adpcmenc.c b/libavcodec/adpcmenc.c index 843b32fae5..f8ecd589dc 100644 --- a/libavcodec/adpcmenc.c +++ b/libavcodec/adpcmenc.c @@ -570,7 +570,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, init_put_bits(&pb, dst, pkt_size * 8); for (ch = 0; ch < avctx->channels; ch++) { - put_bits(&pb, 9, (c->status[ch].prev_sample + 0x10000) >> 7); + put_bits(&pb, 9, (c->status[ch].prev_sample & 0xFFFF) >> 7); put_bits(&pb, 7, c->status[ch].step_index); if (avctx->trellis > 0) { uint8_t buf[64]; diff --git a/tests/ref/fate/acodec-adpcm-ima_qt b/tests/ref/fate/acodec-adpcm-ima_qt index 79b8c60ccc..80015275fc 100644 --- a/tests/ref/fate/acodec-adpcm-ima_qt +++ b/tests/ref/fate/acodec-adpcm-ima_qt @@ -1,4 +1,4 @@ -057d27978b35888776512e4e9669a63b *tests/data/fate/acodec-adpcm-ima_qt.aiff +23cbae1182e150ebf28e0abfb9cba127 *tests/data/fate/acodec-adpcm-ima_qt.aiff 281252 tests/data/fate/acodec-adpcm-ima_qt.aiff -169c40435c68d50112c9c61fc67e446d *tests/data/fate/acodec-adpcm-ima_qt.out.wav -stddev: 918.61 PSNR: 37.07 MAXDIFF:34029 bytes: 1058400/ 1058560 +b0fafd002c38fb70acaddfda1a31ed61 *tests/data/fate/acodec-adpcm-ima_qt.out.wav +stddev: 904.76 PSNR: 37.20 MAXDIFF:34029 bytes: 1058400/ 1058560 |