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@gmx.at>
This commit is contained in:
parent
91f4a44ff4
commit
e41cd3cdeb
1 changed files with 2 additions and 2 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue