Andreas Rheinhardt: > encode_send_frame_internal() is always only called if > the buffer packet is empty and except when we are dealing > with an audio codec that does not allow variable frame size > it stays that way until a call to av_frame_ref() at the end > of encode_send_frame_internal(). In case we are dealing > with the small last frame of an audio encoder requiring > constant frame size the frame will be allocated by pad_last_frame() > and this the only case where this is so. So by returning directly > after pad_last_frame(), we can avoid having to recheck > whether the frame is still empty before av_frame_ref(). > > Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com> > --- > libavcodec/encode.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/libavcodec/encode.c b/libavcodec/encode.c > index b68bf1e184..1f39ab1a2f 100644 > --- a/libavcodec/encode.c > +++ b/libavcodec/encode.c > @@ -339,6 +339,7 @@ static int encode_send_frame_internal(AVCodecContext > *avctx, const AVFrame *src) > return ret; > > avctx->internal->last_audio_frame = 1; > + return 0; > } else if (src->nb_samples > avctx->frame_size) { > av_log(avctx, AV_LOG_ERROR, "nb_samples (%d) != frame_size > (%d)\n", src->nb_samples, avctx->frame_size); > return AVERROR(EINVAL); > @@ -346,11 +347,9 @@ static int encode_send_frame_internal(AVCodecContext > *avctx, const AVFrame *src) > } > } > > - if (!dst->data[0]) { > - ret = av_frame_ref(dst, src); > - if (ret < 0) > - return ret; > - } > + ret = av_frame_ref(dst, src); > + if (ret < 0) > + return ret; > > return 0; > }
Will apply tomorrow unless there are objections. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".