diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-09-30 19:00:52 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-10-02 18:51:05 +0200 |
commit | 0d92b0d5f445d4f26fb9d9d7cbf83c415c8d2279 (patch) | |
tree | 7bc1f0d1806583d4f387a366d00964016c0f35de | |
parent | 6ea357ea83e3a821c43e05a324f7bcaa3d73076e (diff) | |
download | ffmpeg-0d92b0d5f445d4f26fb9d9d7cbf83c415c8d2279.tar.gz |
avutil/avstring: Factor av_match_list() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | doc/APIchanges | 3 | ||||
-rw-r--r-- | libavformat/format.c | 20 | ||||
-rw-r--r-- | libavutil/avstring.c | 21 | ||||
-rw-r--r-- | libavutil/avstring.h | 7 | ||||
-rw-r--r-- | libavutil/version.h | 4 |
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, \ |