[FFmpeg-cvslog] AAC encoder: fix wrong gain sacalefactor being set

Claudio Freire git at videolan.org
Thu Nov 26 07:53:30 CET 2015


ffmpeg | branch: master | Claudio Freire <klaussfreire at gmail.com> | Thu Nov 26 03:37:29 2015 -0300| [3b1cab9351f384f3a8d03dec58262d5b66920e30] | committer: Claudio Freire

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3b1cab9351f384f3a8d03dec58262d5b66920e30
---

 libavcodec/aaccoder_twoloop.h |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/aaccoder_twoloop.h b/libavcodec/aaccoder_twoloop.h
index e53257f..5e64d48 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];
             }



More information about the ffmpeg-cvslog mailing list