[SCM] libav/master: adpcm: Write the proper predictor in trellis mode in IMA QT

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sat Jun 28 15:04:37 UTC 2014


The following commit has been merged in the master branch:
commit 564c023eba807b162527b17af40424de275fc795
Author: Martin Storsjö <martin at martin.st>
Date:   Thu Jun 5 14:49:14 2014 +0300

    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.
    
    CC: libav-stable at libav.org
    Signed-off-by: Martin Storsjö <martin at martin.st>
    (cherry picked from commit 0776e0ef6ba4160281ef3fabea43e670f3792b4a)
    Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

diff --git a/libavcodec/adpcmenc.c b/libavcodec/adpcmenc.c
index 2cf8d6f..341dda4 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;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list