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.
---
libavcodec/atrac1.c | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/libavcodec/atrac1.c b/libavcodec/atrac1.c
index 371f21a..4647e0c 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];
--
1.7.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel