[libav-commits] aacenc: only use the number of input samples provided by the user.

Justin Ruggles git at libav.org
Mon Jan 30 20:25:45 CET 2012


Module: libav
Branch: master
Commit: f44005b610abc5b1aca5b3191b64a0a0ba65a03f

Author:    Justin Ruggles <justin.ruggles at gmail.com>
Committer: Justin Ruggles <justin.ruggles at gmail.com>
Date:      Sat Jan 28 17:18:18 2012 -0500

aacenc: only use the number of input samples provided by the user.

Fixes handling of CODEC_CAP_SMALL_LAST_FRAME.

---

 libavcodec/aacenc.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index 1957420..5125bd6 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -477,7 +477,7 @@ static void put_bitstream_info(AVCodecContext *avctx, AACEncContext *s,
  * Channels are reordered from Libav's default order to AAC order.
  */
 static void deinterleave_input_samples(AACEncContext *s,
-                                       const float *samples)
+                                       const float *samples, int nb_samples)
 {
     int ch, i;
     const int sinc = s->channels;
@@ -491,10 +491,12 @@ static void deinterleave_input_samples(AACEncContext *s,
         memcpy(&s->planar_samples[ch][1024], &s->planar_samples[ch][2048], 1024 * sizeof(s->planar_samples[0][0]));
 
         /* deinterleave */
-        for (i = 2048; i < 3072; i++) {
+        for (i = 2048; i < 2048 + nb_samples; i++) {
             s->planar_samples[ch][i] = *sptr;
             sptr += sinc;
         }
+        memset(&s->planar_samples[ch][i], 0,
+               (3072 - i) * sizeof(s->planar_samples[0][0]));
     }
 }
 
@@ -512,7 +514,7 @@ static int aac_encode_frame(AVCodecContext *avctx,
         return 0;
 
     if (data) {
-        deinterleave_input_samples(s, data);
+        deinterleave_input_samples(s, data, avctx->frame_size);
         if (s->psypp)
             ff_psy_preprocess(s->psypp, s->planar_samples, s->channels);
     }



More information about the libav-commits mailing list