[FFmpeg-cvslog] aacenc: Fix ticket #1784: erasure of surround channels

Claudio Freire git at videolan.org
Sun May 12 19:14:53 CEST 2013


ffmpeg | branch: master | Claudio Freire <klaussfreire at gmail.com> | Sun May 12 09:38:40 2013 +0200| [e41cd3cdeb495d295d252682091022a3445806c5] | committer: Michael Niedermayer

aacenc: Fix ticket #1784: erasure of surround channels

This was due to a miscomputation of s->cur_channel, which led to
psy-based encoders using the psy coefficients for the wrong channel.
Test sample attached on the bug tracker had the peculiar case of all
other channels being silent, so the error was far more noticeable.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/aacenc.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index 80dd3d8..362f02b 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -593,7 +593,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
                 coeffs[ch] = cpe->ch[ch].coeffs;
             s->psy.model->analyze(&s->psy, start_ch, coeffs, wi);
             for (ch = 0; ch < chans; ch++) {
-                s->cur_channel = start_ch * 2 + ch;
+                s->cur_channel = start_ch + ch;
                 s->coder->search_for_quantizers(avctx, s, &cpe->ch[ch], s->lambda);
             }
             cpe->common_window = 0;
@@ -609,7 +609,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
                     }
                 }
             }
-            s->cur_channel = start_ch * 2;
+            s->cur_channel = start_ch;
             if (s->options.stereo_mode && cpe->common_window) {
                 if (s->options.stereo_mode > 0) {
                     IndividualChannelStream *ics = &cpe->ch[0].ics;



More information about the ffmpeg-cvslog mailing list