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

Zhao Zhili quinkblack at foxmail.com
Thu Jun 5 19:21:32 EEST 2025



> On Jun 6, 2025, at 00:09, James Almer <jamrial at gmail.com> wrote:
> 
> On 6/5/2025 1:06 PM, 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.
> 
> "It will not be selected automatically, and must be specified explicitly."

OK.

I have another question. The AVFMT_EXPERIMENTAL flag is different from
AV_CODEC_CAP_EXPERIMENTAL, that AVFMT_EXPERIMENTALl flag
doesn’t check against strict_std_compliance. It’s kind of overlap for these
two flags.

There are practical reasons, like the AVFMT_EXPERIMENTAL need to check
early. And when user specify the demuxer/muxer explicitly, it make sense to
skip the check.

So, when WHIP add AVFMT_EXPERIMENTAL flag, it has no real effect since
WHIP is always specified explicitly, except user can check and see the flag.

> 
>>   */
>>  #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;
>>          score = 0;
>>          if (fmt->name && short_name && av_match_name(short_name, fmt->name))
>>              score += 100;
> 
> _______________________________________________
> 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