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

Gyan Doshi ffmpeg at gyani.pro
Tue Jan 28 09:44:42 EET 2020


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);
+
 /**
  * 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;
+
+    if (as_extension) {
+        i = 0;
+        while ((fmt = av_demuxer_iterate(&i)))
+            if (fmt->extensions && av_match_name(short_name, fmt->extensions))
+                return (AVInputFormat*)fmt;
+    }
     return NULL;
 }
 
+ff_const59 AVInputFormat *av_find_input_format(const char *short_name)
+{
+    return av_find_input_format2(short_name, 0);
+}
+
 ff_const59 AVInputFormat *av_probe_input_format3(ff_const59 AVProbeData *pd, int is_opened,
                                       int *score_ret)
 {
diff --git a/libavformat/version.h b/libavformat/version.h
index f72fb9478a..15fdb73e3e 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -32,7 +32,7 @@
 // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
 // Also please add any ticket numbers that you believe might be affected here
 #define LIBAVFORMAT_VERSION_MAJOR  58
-#define LIBAVFORMAT_VERSION_MINOR  36
+#define LIBAVFORMAT_VERSION_MINOR  37
 #define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
-- 
2.24.1



More information about the ffmpeg-devel mailing list