diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2011-10-14 00:22:01 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2011-10-29 15:06:31 -0400 |
commit | 9a35ff384124a08209a8ee5355fdec93440d0e37 (patch) | |
tree | 585edbabf924ada88076cf8a9cb4744d168b7a87 /libavcodec | |
parent | 33684b9c12b74c0140fb91e8150263db4a48d55e (diff) | |
download | ffmpeg-9a35ff384124a08209a8ee5355fdec93440d0e37.tar.gz |
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.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/atrac1.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/libavcodec/atrac1.c b/libavcodec/atrac1.c index 371f21ae3d..4647e0c351 100644 --- a/libavcodec/atrac1.c +++ b/libavcodec/atrac1.c @@ -310,15 +310,11 @@ static int atrac1_decode_frame(AVCodecContext *avctx, void *data, ret = at1_imdct_block(su, q); if (ret < 0) 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 */ - if (q->channels == 1) { - /* mono */ - memcpy(samples, q->out_samples[0], AT1_SU_SAMPLES * 4); - } else { - /* stereo */ + if (q->channels == 2) { for (i = 0; i < AT1_SU_SAMPLES; i++) { samples[i * 2] = q->out_samples[0][i]; samples[i * 2 + 1] = q->out_samples[1][i]; |