From: Nathan Caldwell Date: Sat, 28 Jan 2012 05:23:40 +0000 (-0700) Subject: aacenc: Fix a bug where deinterleaved samples were stored in the wrong place. X-Git-Tag: android-x86-4.4-r1~8529^2~3505 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=dc7e7d4dd96eebd430e7bfa847b751add0e126ab;p=android-x86%2Fexternal-ffmpeg.git aacenc: Fix a bug where deinterleaved samples were stored in the wrong place. 10l: Forgot to adjust deinterleave for new location of incoming samples in 7946a5a. This produced incorrect, but surprisingly listenable results. Thanks to Justin Ruggles for the report. Signed-off-by: Anton Khirnov --- diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index d7a6d5a63c..765f9a7e3e 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -487,10 +487,10 @@ static void deinterleave_input_samples(AACEncContext *s, const float *sptr = samples + channel_map[ch]; /* copy last 1024 samples of previous frame to the start of the current frame */ - memcpy(&s->planar_samples[ch][0], &s->planar_samples[ch][1024], 1024 * sizeof(s->planar_samples[0][0])); + memcpy(&s->planar_samples[ch][1024], &s->planar_samples[ch][2048], 1024 * sizeof(s->planar_samples[0][0])); /* deinterleave */ - for (i = 1024; i < 1024 * 2; i++) { + for (i = 2048; i < 3072; i++) { s->planar_samples[ch][i] = *sptr; sptr += sinc; }