[FFmpeg-devel] [PATCH 5/8] fftools/ffmpeg_demux: only allocate the decoder when actually decoding
Stefano Sabatini
stefasab at gmail.com
Sat Jan 6 13:34:53 EET 2024
On date Friday 2024-01-05 17:42:48 +0100, Anton Khirnov wrote:
> It is not needed otherwise.
> ---
> fftools/ffmpeg_demux.c | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
> index 892094c512..c51140b1c5 100644
> --- a/fftools/ffmpeg_demux.c
> +++ b/fftools/ffmpeg_demux.c
> @@ -782,6 +782,16 @@ static int ist_use(InputStream *ist, int decoding_needed)
> if (decoding_needed && ds->sch_idx_dec < 0) {
> int is_audio = ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO;
>
> + ist->dec_ctx = avcodec_alloc_context3(ist->dec);
> + if (!ist->dec_ctx)
> + return AVERROR(ENOMEM);
> +
> + ret = avcodec_parameters_to_context(ist->dec_ctx, ist->par);
> + if (ret < 0) {
> + av_log(ist, AV_LOG_ERROR, "Error initializing the decoder context.\n");
unrelated, here and below: might be useful to notify the failing
stream identifier, assuming it is not already shown in the log
> + return ret;
> + }
> +
> ret = sch_add_dec(d->sch, decoder_thread, ist, d->loop && is_audio);
> if (ret < 0)
> return ret;
> @@ -1215,23 +1225,13 @@ static int ist_add(const OptionsContext *o, Demuxer *d, AVStream *st)
> default: av_assert0(0);
> }
>
> - ist->dec_ctx = avcodec_alloc_context3(ist->dec);
> - if (!ist->dec_ctx)
> - return AVERROR(ENOMEM);
> -
> - ret = avcodec_parameters_to_context(ist->dec_ctx, par);
> - if (ret < 0) {
> - av_log(ist, AV_LOG_ERROR, "Error initializing the decoder context.\n");
> - return ret;
> - }
> -
> ist->par = avcodec_parameters_alloc();
> if (!ist->par)
> return AVERROR(ENOMEM);
>
> - ret = avcodec_parameters_from_context(ist->par, ist->dec_ctx);
> + ret = avcodec_parameters_copy(ist->par, par);
> if (ret < 0) {
> - av_log(ist, AV_LOG_ERROR, "Error initializing the decoder context.\n");
> + av_log(ist, AV_LOG_ERROR, "Error exporting stream parameters.\n");
> return ret;
> }
LGTM anyway.
More information about the ffmpeg-devel
mailing list