From 3b1cab9351f384f3a8d03dec58262d5b66920e30 Mon Sep 17 00:00:00 2001 From: Claudio Freire Date: Thu, 26 Nov 2015 03:37:29 -0300 Subject: [PATCH] AAC encoder: fix wrong gain sacalefactor being set In some conditions, where the first band was being zeroed mainly, the wrong global gain scalefactor would be written to the stream since it's always taken from the first band regardless of whether it's been marked as zero or not. So, always make sure it contians something useful. --- libavcodec/aaccoder_twoloop.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavcodec/aaccoder_twoloop.h b/libavcodec/aaccoder_twoloop.h index e53257fbaa..5e64d48024 100644 --- a/libavcodec/aaccoder_twoloop.h +++ b/libavcodec/aaccoder_twoloop.h @@ -693,6 +693,9 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx, if (prev != -1) { int sfdiff = sce->sf_idx[w*16+g] - prev + SCALE_DIFF_ZERO; av_assert1(sfdiff >= 0 && sfdiff <= 2*SCALE_MAX_DIFF); + } else if (sce->zeroes[0]) { + /** Set global gain to something useful */ + sce->sf_idx[0] = sce->sf_idx[w*16+g]; } prev = sce->sf_idx[w*16+g]; }