[FFmpeg-devel] [PATCH] aacenc: quit when the audio queue reaches 0 rather than keeping track of empty frames

Rostislav Pehlivanov atomnuker at gmail.com
Tue Nov 8 02:56:35 EET 2016


On 7 November 2016 at 02:14, Rostislav Pehlivanov <atomnuker at gmail.com>
wrote:

> The libopus encoder does the same thing and its better than
> keeping track of when the empty flush frames appear.
>
> Signed-off-by: Rostislav Pehlivanov <atomnuker at gmail.com>
> ---
>  libavcodec/aacenc.c | 9 +++------
>  libavcodec/aacenc.h | 1 -
>  2 files changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
> index 363ed05..956e974 100644
> --- a/libavcodec/aacenc.c
> +++ b/libavcodec/aacenc.c
> @@ -520,13 +520,13 @@ static int aac_encode_frame(AVCodecContext *avctx,
> AVPacket *avpkt,
>      int chan_el_counter[4];
>      FFPsyWindowInfo windows[AAC_MAX_CHANNELS];
>
> -    if (s->last_frame == 2)
> -        return 0;
> -
>      /* add current frame to queue */
>      if (frame) {
>          if ((ret = ff_af_queue_add(&s->afq, frame)) < 0)
>              return ret;
> +    } else {
> +        if (!s->afq.remaining_samples || (!s->afq.frame_alloc &&
> !s->afq.frame_count))
> +            return 0;
>      }
>
>      copy_input_samples(s, frame);
> @@ -841,9 +841,6 @@ static int aac_encode_frame(AVCodecContext *avctx,
> AVPacket *avpkt,
>      s->lambda_sum += s->lambda;
>      s->lambda_count++;
>
> -    if (!frame)
> -        s->last_frame++;
> -
>      ff_af_queue_remove(&s->afq, avctx->frame_size, &avpkt->pts,
>                         &avpkt->duration);
>
> diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h
> index 38a9734..9d244fd 100644
> --- a/libavcodec/aacenc.h
> +++ b/libavcodec/aacenc.h
> @@ -112,7 +112,6 @@ typedef struct AACEncContext {
>      struct FFPsyPreprocessContext* psypp;
>      AACCoefficientsEncoder *coder;
>      int cur_channel;                             ///< current channel for
> coder context
> -    int last_frame;
>      int random_state;
>      float lambda;
>      int last_frame_pb_count;                     ///< number of bits for
> the previous frame
> --
> 2.10.2
>
>
Pused


More information about the ffmpeg-devel mailing list