mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-29 10:52:20 +00:00
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:
parent
33684b9c12
commit
9a35ff3841
@ -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];
|
||||||
|
Loading…
Reference in New Issue
Block a user