diff options
-rw-r--r-- | doc/APIchanges | 3 | ||||
-rw-r--r-- | libavdevice/v4l2.c | 4 | ||||
-rw-r--r-- | libavfilter/libmpcodecs/vf_palette.c | 20 | ||||
-rw-r--r-- | libavformat/avidec.c | 4 | ||||
-rw-r--r-- | libavformat/http.c | 17 | ||||
-rw-r--r-- | libavformat/img2.c | 7 | ||||
-rw-r--r-- | libavformat/matroskaenc.c | 4 | ||||
-rw-r--r-- | libavformat/metadata.c | 6 | ||||
-rw-r--r-- | libavformat/mp3enc.c | 3 | ||||
-rw-r--r-- | libavformat/nutdec.c | 5 | ||||
-rw-r--r-- | libavformat/rtpdec.c | 4 | ||||
-rw-r--r-- | libavformat/rtpdec_mpeg4.c | 3 | ||||
-rw-r--r-- | libavformat/rtsp.c | 11 | ||||
-rw-r--r-- | libavformat/utils.c | 7 | ||||
-rw-r--r-- | libavutil/avstring.c | 27 | ||||
-rw-r--r-- | libavutil/avstring.h | 12 | ||||
-rw-r--r-- | libavutil/internal.h | 4 | ||||
-rw-r--r-- | libavutil/parseutils.c | 7 |
18 files changed, 93 insertions, 55 deletions
diff --git a/doc/APIchanges b/doc/APIchanges index ede1c60699..afe6b91820 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2011-04-18 API changes, most recent first: +2011-11-03 - xxxxxxx - lavu 51.23.0 + Add av_strcasecmp() and av_strncasecmp() to avstring.h. + 2011-10-20 - b35e9e1 - lavu 51.22.0 Add av_strtok() to avstring.h. diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c index 9e26b2d48d..e327cb0667 100644 --- a/libavdevice/v4l2.c +++ b/libavdevice/v4l2.c @@ -44,13 +44,13 @@ #include <linux/videodev2.h> #endif #include <time.h> -#include <strings.h> #include "libavutil/imgutils.h" #include "libavutil/log.h" #include "libavutil/opt.h" #include "avdevice.h" #include "libavutil/parseutils.h" #include "libavutil/pixdesc.h" +#include "libavutil/avstring.h" static const int desired_video_buffers = 256; @@ -470,7 +470,7 @@ static int v4l2_set_parameters(AVFormatContext *s1, AVFormatParameters *ap) for (i = 0;; i++) { standard.index = i; ret = ioctl(s->fd, VIDIOC_ENUMSTD, &standard); - if (ret < 0 || !strcasecmp(standard.name, s->standard)) + if (ret < 0 || !av_strcasecmp(standard.name, s->standard)) break; } if (ret < 0) { diff --git a/libavfilter/libmpcodecs/vf_palette.c b/libavfilter/libmpcodecs/vf_palette.c index 3a7f0869bf..543b6c72d9 100644 --- a/libavfilter/libmpcodecs/vf_palette.c +++ b/libavfilter/libmpcodecs/vf_palette.c @@ -16,10 +16,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _BSD_SOURCE //strcasecmp #include <stdio.h> #include <stdlib.h> -#include <string.h> #include <inttypes.h> #include "config.h" @@ -33,6 +31,8 @@ #include "libswscale/swscale.h" +#include "libavutil/avstring.h" + //===========================================================================// // commented out 16 and 15 bit output support, because the conversion @@ -208,14 +208,14 @@ static int vf_open(vf_instance_t *vf, char *args){ for(i=0;i<256;i++) gray_pal[i]=0x01010101*i; if (args) { - if (!strcasecmp(args,"rgb15")) vf->priv->fmt=IMGFMT_RGB15; else - if (!strcasecmp(args,"rgb16")) vf->priv->fmt=IMGFMT_RGB16; else - if (!strcasecmp(args,"rgb24")) vf->priv->fmt=IMGFMT_RGB24; else - if (!strcasecmp(args,"rgb32")) vf->priv->fmt=IMGFMT_RGB32; else - if (!strcasecmp(args,"bgr15")) vf->priv->fmt=IMGFMT_BGR15; else - if (!strcasecmp(args,"bgr16")) vf->priv->fmt=IMGFMT_BGR16; else - if (!strcasecmp(args,"bgr24")) vf->priv->fmt=IMGFMT_BGR24; else - if (!strcasecmp(args,"bgr32")) vf->priv->fmt=IMGFMT_BGR32; else + if (!av_strcasecmp(args,"rgb15")) vf->priv->fmt=IMGFMT_RGB15; else + if (!av_strcasecmp(args,"rgb16")) vf->priv->fmt=IMGFMT_RGB16; else + if (!av_strcasecmp(args,"rgb24")) vf->priv->fmt=IMGFMT_RGB24; else + if (!av_strcasecmp(args,"rgb32")) vf->priv->fmt=IMGFMT_RGB32; else + if (!av_strcasecmp(args,"bgr15")) vf->priv->fmt=IMGFMT_BGR15; else + if (!av_strcasecmp(args,"bgr16")) vf->priv->fmt=IMGFMT_BGR16; else + if (!av_strcasecmp(args,"bgr24")) vf->priv->fmt=IMGFMT_BGR24; else + if (!av_strcasecmp(args,"bgr32")) vf->priv->fmt=IMGFMT_BGR32; else { mp_msg(MSGT_VFILTER, MSGL_WARN, MSGTR_MPCODECS_UnknownFormatName, args); return 0; diff --git a/libavformat/avidec.c b/libavformat/avidec.c index d210eb65a7..158c6a6551 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -19,12 +19,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <strings.h> #include "libavutil/intreadwrite.h" #include "libavutil/mathematics.h" #include "libavutil/bswap.h" #include "libavutil/opt.h" #include "libavutil/dict.h" +#include "libavutil/avstring.h" #include "avformat.h" #include "avi.h" #include "dv.h" @@ -307,7 +307,7 @@ static void avi_metadata_creation_time(AVDictionary **metadata, char *date) if (sscanf(date, "%*3s%*[ ]%3s%*[ ]%2d%*[ ]%8s%*[ ]%4d", month, &day, time, &year) == 4) { for (i=0; i<12; i++) - if (!strcasecmp(month, months[i])) { + if (!av_strcasecmp(month, months[i])) { snprintf(buffer, sizeof(buffer), "%.4d-%.2d-%.2d %s", year, i+1, day, time); av_dict_set(metadata, "creation_time", buffer, 0); diff --git a/libavformat/http.c b/libavformat/http.c index 265aff27e0..76e5a0fb07 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -22,7 +22,6 @@ #include "libavutil/avstring.h" #include "avformat.h" #include <unistd.h> -#include <strings.h> #include "internal.h" #include "network.h" #include "http.h" @@ -250,12 +249,12 @@ static int process_line(URLContext *h, char *line, int line_count, p++; while (isspace(*p)) p++; - if (!strcasecmp(tag, "Location")) { + if (!av_strcasecmp(tag, "Location")) { strcpy(s->location, p); *new_location = 1; - } else if (!strcasecmp (tag, "Content-Length") && s->filesize == -1) { + } else if (!av_strcasecmp (tag, "Content-Length") && s->filesize == -1) { s->filesize = atoll(p); - } else if (!strcasecmp (tag, "Content-Range")) { + } else if (!av_strcasecmp (tag, "Content-Range")) { /* "bytes $from-$to/$document_size" */ const char *slash; if (!strncmp (p, "bytes ", 6)) { @@ -265,16 +264,16 @@ static int process_line(URLContext *h, char *line, int line_count, s->filesize = atoll(slash+1); } h->is_streamed = 0; /* we _can_ in fact seek */ - } else if (!strcasecmp(tag, "Accept-Ranges") && !strncmp(p, "bytes", 5)) { + } else if (!av_strcasecmp(tag, "Accept-Ranges") && !strncmp(p, "bytes", 5)) { h->is_streamed = 0; - } else if (!strcasecmp (tag, "Transfer-Encoding") && !strncasecmp(p, "chunked", 7)) { + } else if (!av_strcasecmp (tag, "Transfer-Encoding") && !av_strncasecmp(p, "chunked", 7)) { s->filesize = -1; s->chunksize = 0; - } else if (!strcasecmp (tag, "WWW-Authenticate")) { + } else if (!av_strcasecmp (tag, "WWW-Authenticate")) { ff_http_auth_handle_header(&s->auth_state, tag, p); - } else if (!strcasecmp (tag, "Authentication-Info")) { + } else if (!av_strcasecmp (tag, "Authentication-Info")) { ff_http_auth_handle_header(&s->auth_state, tag, p); - } else if (!strcasecmp (tag, "Connection")) { + } else if (!av_strcasecmp (tag, "Connection")) { if (!strcmp(p, "close")) s->willclose = 1; } diff --git a/libavformat/img2.c b/libavformat/img2.c index 7b89a9c980..444a6dfd7a 100644 --- a/libavformat/img2.c +++ b/libavformat/img2.c @@ -29,7 +29,6 @@ #include "avformat.h" #include "avio_internal.h" #include "internal.h" -#include <strings.h> typedef struct { const AVClass *class; /**< Class for private options. */ @@ -125,7 +124,7 @@ static enum CodecID av_str2id(const IdStrMap *tags, const char *str) str++; while (tags->id) { - if (!strcasecmp(str, tags->str)) + if (!av_strcasecmp(str, tags->str)) return tags->id; tags++; @@ -281,7 +280,7 @@ static int read_header(AVFormatContext *s1, AVFormatParameters *ap) st->codec->codec_id = s1->audio_codec_id; }else{ const char *str= strrchr(s->path, '.'); - s->split_planes = str && !strcasecmp(str + 1, "y"); + s->split_planes = str && !av_strcasecmp(str + 1, "y"); st->codec->codec_type = AVMEDIA_TYPE_VIDEO; st->codec->codec_id = av_str2id(img_tags, s->path); } @@ -377,7 +376,7 @@ static int write_header(AVFormatContext *s) img->is_pipe = 1; str = strrchr(img->path, '.'); - img->split_planes = str && !strcasecmp(str + 1, "y"); + img->split_planes = str && !av_strcasecmp(str + 1, "y"); return 0; } diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 6cf4156cb8..07a4bb380a 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -33,9 +33,9 @@ #include "libavutil/random_seed.h" #include "libavutil/lfg.h" #include "libavutil/dict.h" +#include "libavutil/avstring.h" #include "libavcodec/xiph.h" #include "libavcodec/mpeg4audio.h" -#include <strings.h> typedef struct ebml_master { int64_t pos; ///< absolute offset in the file where the master's elements start @@ -767,7 +767,7 @@ static int mkv_write_tag(AVFormatContext *s, AVDictionary *m, unsigned int eleme end_ebml_master(s->pb, targets); while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) - if (strcasecmp(t->key, "title") && strcasecmp(t->key, "stereo_mode")) + if (av_strcasecmp(t->key, "title") && av_strcasecmp(t->key, "stereo_mode")) mkv_write_simpletag(s->pb, t); end_ebml_master(s->pb, tag); diff --git a/libavformat/metadata.c b/libavformat/metadata.c index e6fbe30da9..30774287b0 100644 --- a/libavformat/metadata.c +++ b/libavformat/metadata.c @@ -18,10 +18,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <strings.h> #include "avformat.h" #include "metadata.h" #include "libavutil/dict.h" +#include "libavutil/avstring.h" #if FF_API_OLD_METADATA2 AVDictionaryEntry * @@ -69,13 +69,13 @@ void ff_metadata_conv(AVDictionary **pm, const AVMetadataConv *d_conv, key = mtag->key; if (s_conv) for (sc=s_conv; sc->native; sc++) - if (!strcasecmp(key, sc->native)) { + if (!av_strcasecmp(key, sc->native)) { key = sc->generic; break; } if (d_conv) for (dc=d_conv; dc->native; dc++) - if (!strcasecmp(key, dc->generic)) { + if (!av_strcasecmp(key, dc->generic)) { key = dc->native; break; } diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index f02872d435..eab483f850 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -19,7 +19,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <strings.h> #include "avformat.h" #include "avio_internal.h" #include "id3v1.h" @@ -69,7 +68,7 @@ static int id3v1_create_tag(AVFormatContext *s, uint8_t *buf) buf[127] = 0xFF; /* default to unknown genre */ if ((tag = av_dict_get(s->metadata, "TCON", NULL, 0))) { //genre for(i = 0; i <= ID3v1_GENRE_MAX; i++) { - if (!strcasecmp(tag->value, ff_id3v1_genre_str[i])) { + if (!av_strcasecmp(tag->value, ff_id3v1_genre_str[i])) { buf[127] = i; count++; break; diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index f0b54f6982..0bfa1d0ca2 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -20,7 +20,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <strings.h> #include "libavutil/avstring.h" #include "libavutil/bswap.h" #include "libavutil/dict.h" @@ -459,8 +458,8 @@ static int decode_info_header(NUTContext *nut){ set_disposition_bits(s, str_value, stream_id_plus1 - 1); continue; } - if(metadata && strcasecmp(name,"Uses") - && strcasecmp(name,"Depends") && strcasecmp(name,"Replaces")) + if(metadata && av_strcasecmp(name,"Uses") + && av_strcasecmp(name,"Depends") && av_strcasecmp(name,"Replaces")) av_dict_set(metadata, name, str_value, 0); } } diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 9023dd6985..01902a7732 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -20,13 +20,13 @@ */ #include "libavutil/mathematics.h" +#include "libavutil/avstring.h" #include "libavcodec/get_bits.h" #include "avformat.h" #include "mpegts.h" #include "url.h" #include <unistd.h> -#include <strings.h> #include "network.h" #include "rtpdec.h" @@ -91,7 +91,7 @@ RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name, RTPDynamicProtocolHandler *handler; for (handler = RTPFirstDynamicPayloadHandler; handler; handler = handler->next) - if (!strcasecmp(name, handler->enc_name) && + if (!av_strcasecmp(name, handler->enc_name) && codec_type == handler->codec_type) return handler; return NULL; diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c index 07f07ae10a..4548bc7981 100644 --- a/libavformat/rtpdec_mpeg4.c +++ b/libavformat/rtpdec_mpeg4.c @@ -31,7 +31,6 @@ #include "internal.h" #include "libavutil/avstring.h" #include "libavcodec/get_bits.h" -#include <strings.h> /** Structure listing useful vars to parse RTP packet payload*/ struct PayloadContext @@ -206,7 +205,7 @@ static int parse_fmtp(AVStream *stream, PayloadContext *data, if (codec->codec_id == CODEC_ID_AAC) { /* Looking for a known attribute */ for (i = 0; attr_names[i].str; ++i) { - if (!strcasecmp(attr, attr_names[i].str)) { + if (!av_strcasecmp(attr, attr_names[i].str)) { if (attr_names[i].type == ATTR_NAME_TYPE_INT) { *(int *)((char *)data+ attr_names[i].offset) = atoi(value); diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index a80a9da7bf..5966e813b7 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -33,7 +33,6 @@ #if HAVE_POLL_H #include <poll.h> #endif -#include <strings.h> #include "internal.h" #include "network.h" #include "os_support.h" @@ -660,7 +659,7 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p) get_word_sep(transport_protocol, sizeof(transport_protocol), "/", &p); - if (!strcasecmp (transport_protocol, "rtp")) { + if (!av_strcasecmp (transport_protocol, "rtp")) { get_word_sep(profile, sizeof(profile), "/;,", &p); lower_transport[0] = '\0'; /* rtp/avp/<protocol> */ @@ -669,14 +668,14 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p) ";,", &p); } th->transport = RTSP_TRANSPORT_RTP; - } else if (!strcasecmp (transport_protocol, "x-pn-tng") || - !strcasecmp (transport_protocol, "x-real-rdt")) { + } else if (!av_strcasecmp (transport_protocol, "x-pn-tng") || + !av_strcasecmp (transport_protocol, "x-real-rdt")) { /* x-pn-tng/<protocol> */ get_word_sep(lower_transport, sizeof(lower_transport), "/;,", &p); profile[0] = '\0'; th->transport = RTSP_TRANSPORT_RDT; } - if (!strcasecmp(lower_transport, "TCP")) + if (!av_strcasecmp(lower_transport, "TCP")) th->lower_transport = RTSP_LOWER_TRANSPORT_TCP; else th->lower_transport = RTSP_LOWER_TRANSPORT_UDP; @@ -1555,7 +1554,7 @@ redirect: if (rt->server_type != RTSP_SERVER_REAL && reply->real_challenge[0]) { rt->server_type = RTSP_SERVER_REAL; continue; - } else if (!strncasecmp(reply->server, "WMServer/", 9)) { + } else if (!av_strncasecmp(reply->server, "WMServer/", 9)) { rt->server_type = RTSP_SERVER_WMS; } else if (rt->server_type == RTSP_SERVER_REAL) strcpy(real_challenge, reply->real_challenge); diff --git a/libavformat/utils.c b/libavformat/utils.c index 333946c172..855992e2aa 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -38,7 +38,6 @@ #include "url.h" #include <sys/time.h> #include <time.h> -#include <strings.h> #include <stdarg.h> #if CONFIG_NETWORK #include "network.h" @@ -170,7 +169,7 @@ int av_match_ext(const char *filename, const char *extensions) while (*p != '\0' && *p != ',' && q-ext1<sizeof(ext1)-1) *q++ = *p++; *q = '\0'; - if (!strcasecmp(ext1, ext)) + if (!av_strcasecmp(ext1, ext)) return 1; if (*p == '\0') break; @@ -191,11 +190,11 @@ static int match_format(const char *name, const char *names) namelen = strlen(name); while ((p = strchr(names, ','))) { len = FFMAX(p - names, namelen); - if (!strncasecmp(name, names, len)) + if (!av_strncasecmp(name, names, len)) return 1; names = p+1; } - return !strcasecmp(name, names); + return !av_strcasecmp(name, names); } AVOutputFormat *av_guess_format(const char *short_name, const char *filename, diff --git a/libavutil/avstring.c b/libavutil/avstring.c index 247cd71745..d167d5245e 100644 --- a/libavutil/avstring.c +++ b/libavutil/avstring.c @@ -189,6 +189,33 @@ char *av_strtok(char *s, const char *delim, char **saveptr) return tok; } +#define TOUPPER(c) do { if (c >= 'a' && c <= 'z') c -= 'a' - 'A'; } while (0) + +int av_strcasecmp(const char *a, const char *b) +{ + uint8_t c1, c2; + do { + c1 = *a++; + c2 = *b++; + TOUPPER(c1); + TOUPPER(c2); + } while (c1 && c1 == c2); + return c1 - c2; +} + +int av_strncasecmp(const char *a, const char *b, size_t n) +{ + const char *end = a + n; + uint8_t c1, c2; + do { + c1 = *a++; + c2 = *b++; + TOUPPER(c1); + TOUPPER(c2); + } while (a < end && c1 && c1 == c2); + return c1 - c2; +} + #ifdef TEST #undef printf diff --git a/libavutil/avstring.h b/libavutil/avstring.h index 0b2205a9be..3fb3fbaf04 100644 --- a/libavutil/avstring.h +++ b/libavutil/avstring.h @@ -165,4 +165,16 @@ char *av_get_token(const char **buf, const char *term); */ char *av_strtok(char *s, const char *delim, char **saveptr); +/** + * Locale independent case-insensitive compare. + * Note: This means only ASCII-range characters are case-insensitive + */ +int av_strcasecmp(const char *a, const char *b); + +/** + * Locale independent case-insensitive compare. + * Note: This means only ASCII-range characters are case-insensitive + */ +int av_strncasecmp(const char *a, const char *b, size_t n); + #endif /* AVUTIL_AVSTRING_H */ diff --git a/libavutil/internal.h b/libavutil/internal.h index eecc1280df..46a05e124c 100644 --- a/libavutil/internal.h +++ b/libavutil/internal.h @@ -156,6 +156,10 @@ struct AVDictionary { #define puts please_use_av_log_instead_of_puts #undef perror #define perror please_use_av_log_instead_of_perror +#undef strcasecmp +#define strcasecmp please_use_av_strcasecmp +#undef strncasecmp +#define strncasecmp please_use_av_strncasecmp #define FF_ALLOC_OR_GOTO(ctx, p, size, label)\ {\ diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c index e2c8ea2719..0c787d6fae 100644 --- a/libavutil/parseutils.c +++ b/libavutil/parseutils.c @@ -21,7 +21,6 @@ * misc parsing utilities */ -#include <strings.h> #include <sys/time.h> #include <time.h> @@ -294,7 +293,7 @@ static ColorEntry color_table[] = { static int color_table_compare(const void *lhs, const void *rhs) { - return strcasecmp(lhs, ((const ColorEntry *)rhs)->name); + return av_strcasecmp(lhs, ((const ColorEntry *)rhs)->name); } #define ALPHA_SEP '@' @@ -320,7 +319,7 @@ int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, len = strlen(color_string2); rgba_color[3] = 255; - if (!strcasecmp(color_string2, "random") || !strcasecmp(color_string2, "bikeshed")) { + if (!av_strcasecmp(color_string2, "random") || !av_strcasecmp(color_string2, "bikeshed")) { int rgba = av_get_random_seed(); rgba_color[0] = rgba >> 24; rgba_color[1] = rgba >> 16; @@ -525,7 +524,7 @@ int av_parse_time(int64_t *timeval, const char *timestr, int duration) p = timestr; q = NULL; if (!duration) { - if (!strncasecmp(timestr, "now", len)) { + if (!av_strncasecmp(timestr, "now", len)) { *timeval = (int64_t) now * 1000000; return 0; } |