On Fri, Oct 28, 2011 at 01:32:30PM -0400, Justin Ruggles wrote:
> 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];

ok

Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to