Message ID | 20161107021402.24755-1-atomnuker@gmail.com |
---|---|
State | Accepted |
Commit | 0cf6853804675c99573889670b3447af4de1a3f3 |
Headers | show |
On 7 November 2016 at 02:14, Rostislav Pehlivanov <atomnuker@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@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
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
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@gmail.com> --- libavcodec/aacenc.c | 9 +++------ libavcodec/aacenc.h | 1 - 2 files changed, 3 insertions(+), 7 deletions(-)