[FFmpeg-devel] [PATCH] Flush final frames in libfaac encoder.

Måns Rullgård mans
Sat Jan 29 19:59:05 CET 2011


Justin Ruggles <justin.ruggles at gmail.com> writes:

> Gives decoded output identical in length to faac commandline encoder.
> Fixes Issue 670.
> ---
>  libavcodec/libfaac.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
>
>
> diff --git a/libavcodec/libfaac.c b/libavcodec/libfaac.c
> index 79ab729..af85587 100644
> --- a/libavcodec/libfaac.c
> +++ b/libavcodec/libfaac.c
> @@ -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),

Looks OK.  I trust you tested it.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list