qdm2: check and reset dithering index per channel
authorLuca Barbato <lu_zero@gentoo.org>
Thu, 27 Jun 2013 00:50:52 +0000 (02:50 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Sun, 7 Jul 2013 20:06:35 +0000 (22:06 +0200)
Checking per subband would have the index exceed the
dithering noise table size.

Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
libavcodec/qdm2.c

index fd1e7bb..6343ce3 100644 (file)
@@ -822,8 +822,6 @@ static void synthfilt_build_sb_samples(QDM2Context *q, GetBitContext *gb,
     }
 
     for (sb = sb_min; sb < sb_max; sb++) {
-        FIX_NOISE_IDX(q->noise_idx);
-
         channels = q->nb_channels;
 
         if (q->nb_channels <= 1 || sb < 12)
@@ -847,6 +845,7 @@ static void synthfilt_build_sb_samples(QDM2Context *q, GetBitContext *gb,
         }
 
         for (ch = 0; ch < channels; ch++) {
+            FIX_NOISE_IDX(q->noise_idx);
             zero_encoding = (get_bits_left(gb) >= 1) ? get_bits1(gb) : 0;
             type34_predictor = 0.0;
             type34_first = 1;