mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-25 16:52:31 +00:00
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 inb304244b
. This significantly improves the audio quality of the trellis case, which was plain broken sinceb304244b
. 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>
This commit is contained in:
parent
fb7646d92c
commit
fa8f060b75
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user