summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2014-06-06 12:03:09 +0300
committerMichael Niedermayer <michaelni@gmx.at>2014-06-06 17:08:21 +0200
commitfa8f060b75bf9074792a0f9ff4ed002652ef62b8 (patch)
tree886251304a86ddecc841d56a0bf02022104fee1e
parentfb7646d92cba547b88ce82bfcc093eb57caf1dde (diff)
adpcm: Write the proper predictor in trellis mode in IMA QT
The actual predictor value, set by the trellis code, never was written back into the variable that was written into the block header. This was accidentally removed in b304244b. This significantly improves the audio quality of the trellis case, which was plain broken since b304244b. Encoding IMA QT with trellis still actually gives a slightly worse quality than without trellis, since the trellis encoder doesn't use the exact same way of rounding as in adpcm_ima_qt_compress_sample and adpcm_ima_qt_expand_nibble. Fixes part of Ticket3701 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/adpcmenc.c1
-rw-r--r--tests/ref/acodec/adpcm-ima_qt-trellis6
2 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/adpcmenc.c b/libavcodec/adpcmenc.c
index bfcce328ef..da149a3962 100644
--- a/libavcodec/adpcmenc.c
+++ b/libavcodec/adpcmenc.c
@@ -553,6 +553,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
64, 1);
for (i = 0; i < 64; i++)
put_bits(&pb, 4, buf[i ^ 1]);
+ status->prev_sample = status->predictor;
} else {
for (i = 0; i < 64; i += 2) {
int t1, t2;
diff --git a/tests/ref/acodec/adpcm-ima_qt-trellis b/tests/ref/acodec/adpcm-ima_qt-trellis
index 796273ab2f..0a09965e1e 100644
--- a/tests/ref/acodec/adpcm-ima_qt-trellis
+++ b/tests/ref/acodec/adpcm-ima_qt-trellis
@@ -1,4 +1,4 @@
-9adceae86367ee131ca18f3fdf867d87 *tests/data/fate/acodec-adpcm-ima_qt-trellis.aiff
+15f895c2e7119714f94333e3214d8426 *tests/data/fate/acodec-adpcm-ima_qt-trellis.aiff
281252 tests/data/fate/acodec-adpcm-ima_qt-trellis.aiff
-3f53c10d523f26093103b058baada98c *tests/data/fate/acodec-adpcm-ima_qt-trellis.out.wav
-stddev: 862.02 PSNR: 37.62 MAXDIFF:23859 bytes: 1058400/ 1058560
+593d68369c87d4e3b7323b1bea3e9315 *tests/data/fate/acodec-adpcm-ima_qt-trellis.out.wav
+stddev: 716.74 PSNR: 39.22 MAXDIFF:29633 bytes: 1058400/ 1058560