Mercurial > libavcodec.hg
changeset 12190:4be87c8091bf libavcodec
aacenc: Refactor apply_window_and_mdct() so it no longer takes an offset channel.
Patch by Nathan Caldwell <saintdev@gmail.com>
author | alexc |
---|---|
date | Mon, 19 Jul 2010 18:19:53 +0000 |
parents | 0f0035942790 |
children | 335efeae3bb7 |
files | aacenc.c |
diffstat | 1 files changed, 16 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/aacenc.c Mon Jul 19 11:50:07 2010 +0000 +++ b/aacenc.c Mon Jul 19 18:19:53 2010 +0000 @@ -213,9 +213,10 @@ } static void apply_window_and_mdct(AVCodecContext *avctx, AACEncContext *s, - SingleChannelElement *sce, short *audio, int channel) + SingleChannelElement *sce, short *audio) { - int i, j, k; + int i, k; + const int chans = avctx->channels; const float * lwindow = sce->ics.use_kb_window[0] ? ff_aac_kbd_long_1024 : ff_sine_1024; const float * swindow = sce->ics.use_kb_window[0] ? ff_aac_kbd_short_128 : ff_sine_128; const float * pwindow = sce->ics.use_kb_window[1] ? ff_aac_kbd_short_128 : ff_sine_128; @@ -230,18 +231,18 @@ s->output[i] = sce->saved[i]; } if (sce->ics.window_sequence[0] != LONG_START_SEQUENCE) { - for (i = 0, j = channel; i < 1024; i++, j += avctx->channels) { - s->output[i+1024] = audio[j] * lwindow[1024 - i - 1]; - sce->saved[i] = audio[j] * lwindow[i]; + for (i = 0; i < 1024; i++) { + s->output[i+1024] = audio[i * chans] * lwindow[1024 - i - 1]; + sce->saved[i] = audio[i * chans] * lwindow[i]; } } else { - for (i = 0, j = channel; i < 448; i++, j += avctx->channels) - s->output[i+1024] = audio[j]; - for (; i < 576; i++, j += avctx->channels) - s->output[i+1024] = audio[j] * swindow[576 - i - 1]; + for (i = 0; i < 448; i++) + s->output[i+1024] = audio[i * chans]; + for (; i < 576; i++) + s->output[i+1024] = audio[i * chans] * swindow[576 - i - 1]; memset(s->output+1024+576, 0, sizeof(s->output[0]) * 448); - for (i = 0, j = channel; i < 1024; i++, j += avctx->channels) - sce->saved[i] = audio[j]; + for (i = 0; i < 1024; i++) + sce->saved[i] = audio[i * chans]; } ff_mdct_calc(&s->mdct1024, sce->coeffs, s->output); } else { @@ -249,13 +250,13 @@ for (i = 448 + k; i < 448 + k + 256; i++) s->output[i - 448 - k] = (i < 1024) ? sce->saved[i] - : audio[channel + (i-1024)*avctx->channels]; + : audio[(i-1024)*chans]; s->dsp.vector_fmul (s->output, k ? swindow : pwindow, 128); s->dsp.vector_fmul_reverse(s->output+128, s->output+128, swindow, 128); ff_mdct_calc(&s->mdct128, sce->coeffs + k, s->output); } - for (i = 0, j = channel; i < 1024; i++, j += avctx->channels) - sce->saved[i] = audio[j]; + for (i = 0; i < 1024; i++) + sce->saved[i] = audio[i * chans]; } } @@ -543,7 +544,7 @@ ics->group_len[k] = wi[j].grouping[k]; s->cur_channel = start_ch + j; - apply_window_and_mdct(avctx, s, &cpe->ch[j], samples2, j); + apply_window_and_mdct(avctx, s, &cpe->ch[j], samples2 + j); } start_ch += chans; }