summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-09-30 19:00:52 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-10-02 18:51:05 +0200
commit0d92b0d5f445d4f26fb9d9d7cbf83c415c8d2279 (patch)
tree7bc1f0d1806583d4f387a366d00964016c0f35de
parent6ea357ea83e3a821c43e05a324f7bcaa3d73076e (diff)
avutil/avstring: Factor av_match_list() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--doc/APIchanges3
-rw-r--r--libavformat/format.c20
-rw-r--r--libavutil/avstring.c21
-rw-r--r--libavutil/avstring.h7
-rw-r--r--libavutil/version.h4
5 files changed, 36 insertions, 19 deletions
diff --git a/doc/APIchanges b/doc/APIchanges
index 7fadab30eb..e3ae4e87e1 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil: 2014-08-09
API changes, most recent first:
+2014-10-02 - xxxxxxx - lavu 54.8.100 - avstring.h
+ Add av_match_list()
+
2014-09-24 - xxxxxxx - libpostproc 53.1.100
Add visualization support
diff --git a/libavformat/format.c b/libavformat/format.c
index 1026c8f7a7..2d56e6d545 100644
--- a/libavformat/format.c
+++ b/libavformat/format.c
@@ -80,28 +80,14 @@ void av_register_output_format(AVOutputFormat *format)
int av_match_ext(const char *filename, const char *extensions)
{
- const char *ext, *p;
- char ext1[32], *q;
+ const char *ext;
if (!filename)
return 0;
ext = strrchr(filename, '.');
- if (ext) {
- ext++;
- p = extensions;
- for (;;) {
- q = ext1;
- while (*p != '\0' && *p != ',' && q - ext1 < sizeof(ext1) - 1)
- *q++ = *p++;
- *q = '\0';
- if (!av_strcasecmp(ext1, ext))
- return 1;
- if (*p == '\0')
- break;
- p++;
- }
- }
+ if (ext)
+ return av_match_list(ext + 1, extensions, ',');
return 0;
}
diff --git a/libavutil/avstring.c b/libavutil/avstring.c
index fd010e407c..ac7f98ae74 100644
--- a/libavutil/avstring.c
+++ b/libavutil/avstring.c
@@ -402,6 +402,27 @@ end:
return ret;
}
+int av_match_list(const char *name, const char *list, char separator)
+{
+ const char *p;
+ char ext1[128], *q;
+ int i;
+
+ p = list;
+ for (i = 1;; i++) {
+ q = ext1;
+ while (*p != '\0' && *p != separator && q - ext1 < sizeof(ext1) - 1)
+ *q++ = *p++;
+ *q = '\0';
+ if (!av_strcasecmp(ext1, name))
+ return i;
+ if (*p == '\0')
+ break;
+ p++;
+ }
+ return 0;
+}
+
#ifdef TEST
int main(void)
diff --git a/libavutil/avstring.h b/libavutil/avstring.h
index 616c0662fc..ea7d1dcb43 100644
--- a/libavutil/avstring.h
+++ b/libavutil/avstring.h
@@ -358,6 +358,13 @@ int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end,
unsigned int flags);
/**
+ * Check if a name is in a list.
+ * @returns 0 if not found, or the 1 based index where it has been found in the
+ * list.
+ */
+int av_match_list(const char *name, const char *list, char separator);
+
+/**
* @}
*/
diff --git a/libavutil/version.h b/libavutil/version.h
index 14242f9b1c..9e138b5fab 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -56,8 +56,8 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 54
-#define LIBAVUTIL_VERSION_MINOR 7
-#define LIBAVUTIL_VERSION_MICRO 101
+#define LIBAVUTIL_VERSION_MINOR 8
+#define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \