[FFmpeg-devel] [PATCH 1/3 v2] avcodec/encode: restructure the core encoding code
Anton Khirnov
anton at khirnov.net
Thu Mar 26 10:43:12 EET 2020
Quoting James Almer (2020-03-16 22:30:00)
> This commit follows the same logic as 061a0c14bb, but for the encode API: The
> new public encoding API will no longer be a wrapper around the old deprecated
> one, and the internal API used by the encoders now consists of a single
> receive_packet() callback that pulls frames as required.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
Generally looks ok, only some minor comments below.
> libavcodec/avcodec.h | 12 +-
> libavcodec/decode.c | 1 -
> libavcodec/encode.c | 285 ++++++++++++++++++++++++++++++++----------
> libavcodec/encode.h | 39 ++++++
> libavcodec/internal.h | 7 +-
> libavcodec/utils.c | 10 +-
> 6 files changed, 277 insertions(+), 77 deletions(-)
> create mode 100644 libavcodec/encode.h
> diff --git a/libavcodec/encode.c b/libavcodec/encode.c
> index 9ed2cf0f59..cdea1c6c1e 100644
> --- a/libavcodec/encode.c
> +++ b/libavcodec/encode.c
> @@ -26,6 +26,7 @@
> #include "libavutil/samplefmt.h"
>
> #include "avcodec.h"
> +#include "encode.h"
> #include "frame_thread_encoder.h"
> #include "internal.h"
>
> @@ -80,12 +81,9 @@ int ff_alloc_packet(AVPacket *avpkt, int size)
> */
> static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src)
> {
> - AVFrame *frame = NULL;
> + AVFrame *frame = *dst;
> int ret;
>
> - if (!(frame = av_frame_alloc()))
> - return AVERROR(ENOMEM);
> -
> frame->format = src->format;
> frame->channel_layout = src->channel_layout;
> frame->channels = src->channels;
> @@ -106,12 +104,10 @@ static int pad_last_frame(AVCodecContext *s, AVFrame **dst, const AVFrame *src)
Doesn't need to be a double pointer anymore.
> +static int encode_send_packet_internal(AVCodecContext *avctx, const AVFrame *src)
Should this be named send_frame?
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list