[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