PR #21617 opened by Niklas Haas (haasn) URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21617 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21617.patch
This mirrors the design used to disambiguate log entries for AVFilterContext, by having `fftools/ffmpeg_demux.c` forward the demuxer instance name to the AVFormatContext. This includes the input format name (once known), mirroring the default log name; but with the extra input ID prefix. >From ca456ed13765cab4a4f083f8416875678f138e8d Mon Sep 17 00:00:00 2001 From: Niklas Haas <[email protected]> Date: Sat, 31 Jan 2026 11:50:34 +0100 Subject: [PATCH 1/2] avformat: add AVFormatContext.name Analog to AVFilterContext. May be used to set a custom logging name to disambiguate multiple AVFormatContext instances in the logs. --- doc/APIchanges | 3 +++ libavformat/avformat.c | 1 + libavformat/avformat.h | 5 +++++ libavformat/options.c | 3 ++- libavformat/version.h | 4 ++-- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index ee3167bb14..59655434a7 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2025-03-28 API changes, most recent first: +2026-02-xx - xxxxxxxxxx - lavf 62.9.100 - avformat.h + Add AVFormatContext.name. + 2026-01-xx - xxxxxxxxxx - lavu 60.24.100 - hwcontext_d3d11va.h Add BindFlags and MiscFlags to AVD3D11VADeviceContext diff --git a/libavformat/avformat.c b/libavformat/avformat.c index ee3f7ee1b2..806f8dcab2 100644 --- a/libavformat/avformat.c +++ b/libavformat/avformat.c @@ -190,6 +190,7 @@ void avformat_free_context(AVFormatContext *s) if (s->iformat) ff_flush_packet_queue(s); av_freep(&s->url); + av_freep(&s->name); av_free(s); } diff --git a/libavformat/avformat.h b/libavformat/avformat.h index bd34132e00..479f1f51c1 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1884,6 +1884,11 @@ typedef struct AVFormatContext { * @see skip_estimate_duration_from_pts */ int64_t duration_probesize; + + /** + * Name of this format context, only used for logging purposes. + */ + char *name; } AVFormatContext; /** diff --git a/libavformat/options.c b/libavformat/options.c index 28aa2da942..d08013bfd4 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -45,7 +45,8 @@ FF_ENABLE_DEPRECATION_WARNINGS static const char* format_to_name(void* ptr) { AVFormatContext* fc = (AVFormatContext*) ptr; - if(fc->iformat) return fc->iformat->name; + if (fc->name) return fc->name; + else if(fc->iformat) return fc->iformat->name; else if(fc->oformat) return fc->oformat->name; else return fc->av_class->class_name; } diff --git a/libavformat/version.h b/libavformat/version.h index 1d3a53875a..1b079ebce8 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -31,8 +31,8 @@ #include "version_major.h" -#define LIBAVFORMAT_VERSION_MINOR 8 -#define LIBAVFORMAT_VERSION_MICRO 102 +#define LIBAVFORMAT_VERSION_MINOR 9 +#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ -- 2.52.0 >From 565ebade18c4b132e117e86d85f51f6881432c83 Mon Sep 17 00:00:00 2001 From: Niklas Haas <[email protected]> Date: Sat, 31 Jan 2026 12:00:36 +0100 Subject: [PATCH 2/2] fftools/ffmpeg_demux: mirror DemuxStream name to AVFormatContext Results in basically the same name, except less ambiguous because it includes the input index. --- fftools/ffmpeg_demux.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 701f9ddc34..c8d8a7e044 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -1879,6 +1879,7 @@ int ifile_open(const OptionsContext *o, const char *filename, Scheduler *sch) ic = avformat_alloc_context(); if (!ic) return AVERROR(ENOMEM); + ic->name = av_strdup(d->log_name); if (o->audio_sample_rate.nb_opt) { av_dict_set_int(&o->g->format_opts, "sample_rate", o->audio_sample_rate.opt[o->audio_sample_rate.nb_opt - 1].u.i, 0); } @@ -1967,6 +1968,8 @@ int ifile_open(const OptionsContext *o, const char *filename, Scheduler *sch) av_strlcat(d->log_name, "/", sizeof(d->log_name)); av_strlcat(d->log_name, ic->iformat->name, sizeof(d->log_name)); + av_freep(&ic->name); + ic->name = av_strdup(d->log_name); if (scan_all_pmts_set) av_dict_set(&o->g->format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE); -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
