]> git.sesse.net Git - ffmpeg/commitdiff
Flush final frames in libfaac encoder.
authorJustin Ruggles <justin.ruggles@gmail.com>
Sat, 29 Jan 2011 18:45:32 +0000 (18:45 +0000)
committerMans Rullgard <mans@mansr.com>
Sat, 29 Jan 2011 18:58:27 +0000 (18:58 +0000)
Gives decoded output identical in length to faac commandline encoder.
Fixes Issue 670.

Signed-off-by: Mans Rullgard <mans@mansr.com>
libavcodec/libfaac.c

index 79ab729c13ebda88d542a7bb5978e8283e6f5603..af8558727200b0cf2e83fe2a8b833b66a233ae30 100644 (file)
@@ -124,10 +124,11 @@ static int Faac_encode_frame(AVCodecContext *avctx,
 {
     FaacAudioContext *s = avctx->priv_data;
     int bytes_written;
+    int num_samples = data ? avctx->frame_size : 0;
 
     bytes_written = faacEncEncode(s->faac_handle,
                                   data,
-                                  avctx->frame_size * avctx->channels,
+                                  num_samples * avctx->channels,
                                   frame,
                                   buf_size);
 
@@ -161,6 +162,7 @@ AVCodec ff_libfaac_encoder = {
     Faac_encode_init,
     Faac_encode_frame,
     Faac_encode_close,
+    .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY,
     .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
     .long_name = NULL_IF_CONFIG_SMALL("libfaac AAC (Advanced Audio Codec)"),
     .profiles = NULL_IF_CONFIG_SMALL(profiles),