From 87ae84e4afb2d137b1e229250b576226b1433a79 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 27 Mar 2023 07:37:29 +0200 Subject: fftools/ffmpeg: move OutputStream.sq_frame to Encoder It is audio/video encoding-only and does not need to be visible outside of ffmpeg_enc.c --- fftools/ffmpeg_enc.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'fftools/ffmpeg_enc.c') diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index bb11cdf42a..5c56ad0325 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -50,6 +50,8 @@ struct Encoder { AVFrame *last_frame; /* number of frames emitted by the video-encoding sync code */ int64_t vsync_frame_number; + + AVFrame *sq_frame; }; static uint64_t dup_warning = 1000; @@ -62,6 +64,7 @@ void enc_free(Encoder **penc) return; av_frame_free(&enc->last_frame); + av_frame_free(&enc->sq_frame); av_freep(penc); } @@ -139,6 +142,7 @@ static void init_encoder_time_base(OutputStream *ost, AVRational default_time_ba int enc_open(OutputStream *ost, AVFrame *frame) { InputStream *ist = ost->ist; + Encoder *e = ost->enc; AVCodecContext *enc_ctx = ost->enc_ctx; AVCodecContext *dec_ctx = NULL; const AVCodec *enc = enc_ctx->codec; @@ -328,6 +332,12 @@ int enc_open(OutputStream *ost, AVFrame *frame) return ret; } + if (ost->sq_idx_encode >= 0) { + e->sq_frame = av_frame_alloc(); + if (!e->sq_frame) + return AVERROR(ENOMEM); + } + if (ost->enc_ctx->frame_size) { av_assert0(ost->sq_idx_encode >= 0); sq_frame_samples(output_files[ost->file_index]->sq_encode, @@ -718,16 +728,17 @@ static int encode_frame(OutputFile *of, OutputStream *ost, AVFrame *frame) static int submit_encode_frame(OutputFile *of, OutputStream *ost, AVFrame *frame) { + Encoder *e = ost->enc; int ret; if (ost->sq_idx_encode < 0) return encode_frame(of, ost, frame); if (frame) { - ret = av_frame_ref(ost->sq_frame, frame); + ret = av_frame_ref(e->sq_frame, frame); if (ret < 0) return ret; - frame = ost->sq_frame; + frame = e->sq_frame; } ret = sq_send(of->sq_encode, ost->sq_idx_encode, @@ -740,7 +751,7 @@ static int submit_encode_frame(OutputFile *of, OutputStream *ost, } while (1) { - AVFrame *enc_frame = ost->sq_frame; + AVFrame *enc_frame = e->sq_frame; ret = sq_receive(of->sq_encode, ost->sq_idx_encode, SQFRAME(enc_frame)); -- cgit v1.2.1