[FFmpeg-devel] [PATCH] avformat/format: make experimental flag works for muxer

Zhao Zhili quinkblack at foxmail.com
Fri Jun 6 14:27:56 EEST 2025



> On Jun 6, 2025, at 18:00, Kieran Kunhya via ffmpeg-devel <ffmpeg-devel at ffmpeg.org> wrote:
> 
> On Fri, 6 Jun 2025, 10:51 Michael Niedermayer, <michael at niedermayer.cc>
> wrote:
> 
>> On Fri, Jun 06, 2025 at 12:06:34AM +0800, Zhao Zhili wrote:
>>> From: Zhao Zhili <zhilizhao at tencent.com>
>>> 
>>> ---
>>> libavformat/avformat.h | 3 +--
>>> libavformat/format.c   | 2 ++
>>> 2 files changed, 3 insertions(+), 2 deletions(-)
>>> 
>>> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>>> index 2034d2aecc..6edcf11022 100644
>>> --- a/libavformat/avformat.h
>>> +++ b/libavformat/avformat.h
>>> @@ -470,8 +470,7 @@ typedef struct AVProbeData {
>>> /**
>>>  * The muxer/demuxer is experimental and should be used with caution.
>>>  *
>>> - * - demuxers: will not be selected automatically by probing, must be
>> specified
>>> - *             explicitly.
>>> + * Will not be selected automatically, must be specified explicitly.
>>>  */
>>> #define AVFMT_EXPERIMENTAL  0x0004
>>> #define AVFMT_SHOW_IDS      0x0008 /**< Show format stream IDs numbers.
>> */
>>> diff --git a/libavformat/format.c b/libavformat/format.c
>>> index 71018ea6ab..516925e7e4 100644
>>> --- a/libavformat/format.c
>>> +++ b/libavformat/format.c
>>> @@ -95,6 +95,8 @@ const AVOutputFormat *av_guess_format(const char
>> *short_name, const char *filena
>>>     /* Find the proper file type. */
>>>     score_max = 0;
>>>     while ((fmt = av_muxer_iterate(&i))) {
>>> +        if (fmt->flags & AVFMT_EXPERIMENTAL && !short_name)
>>> +            continue;
>> 
>> what does AVFMT_EXPERIMENTAL mean for a muxer ?
>> 
>> * a muxer could generate invalid, non compliant data
>> * a muxer could be insecure and exploitable
>> * a muxer could lack some feature (iam sure most muxers in most projects
>> lack some feature)
>> 
>> I think the first 2 are reasons to use this flag
>> 
> 
> In the case of WebRTC it's 3. The user would expect it to work over the
> internet (*Web*RTC after all) but it lacks NACK support so cannot recover
> from any packet loss.
> 
> Without the experimental flag FFmpeg will get support tickets raised and
> claims it is inferior to other implementations. Users will not be aware of
> the lack of missing feature otherwise.
> 
> So it may be compliant on paper but it's not usable in the real world.

I have sent v2 to fix doc as suggested by James. Any comments on the
patch itself?

https://ffmpeg.org/pipermail/ffmpeg-devel/2025-June/344737.html

> 
> Kieran
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".



More information about the ffmpeg-devel mailing list