Mercurial > libavcodec.hg
comparison aacenc.c @ 12191:335efeae3bb7 libavcodec
aacenc: Adjust array offsets for the current channel before calling ff_psy_suggest_window().
Patch by Nathan Caldwell <saintdev@gmail.com>
author | alexc |
---|---|
date | Mon, 19 Jul 2010 18:22:44 +0000 |
parents | 4be87c8091bf |
children | a3aca8bcbaf4 |
comparison
equal
deleted
inserted
replaced
12190:4be87c8091bf | 12191:335efeae3bb7 |
---|---|
515 for (i = 0; i < chan_map[0]; i++) { | 515 for (i = 0; i < chan_map[0]; i++) { |
516 FFPsyWindowInfo* wi = windows + start_ch; | 516 FFPsyWindowInfo* wi = windows + start_ch; |
517 tag = chan_map[i+1]; | 517 tag = chan_map[i+1]; |
518 chans = tag == TYPE_CPE ? 2 : 1; | 518 chans = tag == TYPE_CPE ? 2 : 1; |
519 cpe = &s->cpe[i]; | 519 cpe = &s->cpe[i]; |
520 samples2 = samples + start_ch; | |
521 la = samples2 + (448+64) * avctx->channels + start_ch; | |
522 if (!data) | |
523 la = NULL; | |
524 for (j = 0; j < chans; j++) { | 520 for (j = 0; j < chans; j++) { |
525 IndividualChannelStream *ics = &cpe->ch[j].ics; | 521 IndividualChannelStream *ics = &cpe->ch[j].ics; |
526 int k; | 522 int k; |
523 int cur_channel = start_ch + j; | |
524 samples2 = samples + cur_channel; | |
525 la = samples2 + (448+64) * avctx->channels; | |
526 if (!data) | |
527 la = NULL; | |
527 if (tag == TYPE_LFE) { | 528 if (tag == TYPE_LFE) { |
528 wi[j].window_type[0] = ONLY_LONG_SEQUENCE; | 529 wi[j].window_type[0] = ONLY_LONG_SEQUENCE; |
529 wi[j].window_shape = 0; | 530 wi[j].window_shape = 0; |
530 wi[j].num_windows = 1; | 531 wi[j].num_windows = 1; |
531 wi[j].grouping[0] = 1; | 532 wi[j].grouping[0] = 1; |
532 } else { | 533 } else { |
533 wi[j] = ff_psy_suggest_window(&s->psy, samples2, la, start_ch + j, | 534 wi[j] = ff_psy_suggest_window(&s->psy, samples2, la, cur_channel, |
534 ics->window_sequence[0]); | 535 ics->window_sequence[0]); |
535 } | 536 } |
536 ics->window_sequence[1] = ics->window_sequence[0]; | 537 ics->window_sequence[1] = ics->window_sequence[0]; |
537 ics->window_sequence[0] = wi[j].window_type[0]; | 538 ics->window_sequence[0] = wi[j].window_type[0]; |
538 ics->use_kb_window[1] = ics->use_kb_window[0]; | 539 ics->use_kb_window[1] = ics->use_kb_window[0]; |
541 ics->swb_sizes = s->psy.bands [ics->num_windows == 8]; | 542 ics->swb_sizes = s->psy.bands [ics->num_windows == 8]; |
542 ics->num_swb = tag == TYPE_LFE ? 12 : s->psy.num_bands[ics->num_windows == 8]; | 543 ics->num_swb = tag == TYPE_LFE ? 12 : s->psy.num_bands[ics->num_windows == 8]; |
543 for (k = 0; k < ics->num_windows; k++) | 544 for (k = 0; k < ics->num_windows; k++) |
544 ics->group_len[k] = wi[j].grouping[k]; | 545 ics->group_len[k] = wi[j].grouping[k]; |
545 | 546 |
546 s->cur_channel = start_ch + j; | 547 s->cur_channel = cur_channel; |
547 apply_window_and_mdct(avctx, s, &cpe->ch[j], samples2 + j); | 548 apply_window_and_mdct(avctx, s, &cpe->ch[j], samples2); |
548 } | 549 } |
549 start_ch += chans; | 550 start_ch += chans; |
550 } | 551 } |
551 do { | 552 do { |
552 int frame_bits; | 553 int frame_bits; |