atrac1: decode mono audio directly to output buffer

For stereo we need to use intermediate planar buffers, but mono does not need
to be deinterleaved so the output buffer can be used directly.
This commit is contained in:
Justin Ruggles 2011-10-14 00:22:01 -04:00
parent 33684b9c12
commit 9a35ff3841

View File

@ -310,15 +310,11 @@ static int atrac1_decode_frame(AVCodecContext *avctx, void *data,
ret = at1_imdct_block(su, q); ret = at1_imdct_block(su, q);
if (ret < 0) if (ret < 0)
return ret; return ret;
at1_subband_synthesis(q, su, q->out_samples[ch]); at1_subband_synthesis(q, su, q->channels == 1 ? samples : q->out_samples[ch]);
} }
/* interleave; FIXME, should create/use a DSP function */ /* interleave; FIXME, should create/use a DSP function */
if (q->channels == 1) { if (q->channels == 2) {
/* mono */
memcpy(samples, q->out_samples[0], AT1_SU_SAMPLES * 4);
} else {
/* stereo */
for (i = 0; i < AT1_SU_SAMPLES; i++) { for (i = 0; i < AT1_SU_SAMPLES; i++) {
samples[i * 2] = q->out_samples[0][i]; samples[i * 2] = q->out_samples[0][i];
samples[i * 2 + 1] = q->out_samples[1][i]; samples[i * 2 + 1] = q->out_samples[1][i];