[FFmpeg-devel] [PATCH 1/5] avformat/format: add av_find_input_format2

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Tue Jan 28 16:38:00 EET 2020


Gyan Doshi:
> Identifies demuxer by extension if search by short name fails.
> ---
>  libavformat/avformat.h |  7 +++++++
>  libavformat/format.c   | 14 +++++++++++++-
>  libavformat/version.h  |  2 +-
>  3 files changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 9b9b634ec3..c81c4f18fd 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -2246,6 +2246,13 @@ ff_const59 AVInputFormat *av_find_input_format(const char *short_name);
>   */
>  ff_const59 AVInputFormat *av_probe_input_format(ff_const59 AVProbeData *pd, int is_opened);
>  
> +/**
> + * Find AVInputFormat based on the short name of the input format.
> + * If that fails and as_extension is set, find demuxer which has registered the
> + * name as an extension.
> + */
> +ff_const59 AVInputFormat *av_find_input_format2(const char *short_name, int as_extension);
> +
There is no reason not to make this function const-correct from the
beginning, i.e. replace ff_const59 by const.
>  /**
>   * Guess the file format.
>   *
> diff --git a/libavformat/format.c b/libavformat/format.c
> index c47490c8eb..d2382d1cd0 100644
> --- a/libavformat/format.c
> +++ b/libavformat/format.c
> @@ -115,16 +115,28 @@ enum AVCodecID av_guess_codec(ff_const59 AVOutputFormat *fmt, const char *short_
>          return AV_CODEC_ID_NONE;
>  }
>  
> -ff_const59 AVInputFormat *av_find_input_format(const char *short_name)
> +ff_const59 AVInputFormat *av_find_input_format2(const char *short_name, int as_extension)
>  {
>      const AVInputFormat *fmt = NULL;
>      void *i = 0;
>      while ((fmt = av_demuxer_iterate(&i)))
>          if (av_match_name(short_name, fmt->name))
>              return (AVInputFormat*)fmt;

Then you don't need to cast the const away here

> +
> +    if (as_extension) {
> +        i = 0;
> +        while ((fmt = av_demuxer_iterate(&i)))
> +            if (fmt->extensions && av_match_name(short_name, fmt->extensions))
> +                return (AVInputFormat*)fmt;

and here.

> +    }
>      return NULL;
>  }
>  
> +ff_const59 AVInputFormat *av_find_input_format(const char *short_name)
> +{
> +    return av_find_input_format2(short_name, 0);

But you will have to cast the const away here.

Not commenting on whether this function should be added at all.

- Andreas


More information about the ffmpeg-devel mailing list