diff options
author | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-01-17 20:44:33 +0100 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@ag.or.at> | 2013-01-17 20:44:33 +0100 |
commit | a1a707f7280a08d6686732e1ab911dd44663889c (patch) | |
tree | ddcfa0aba483313a242199756ade82fd4d803737 /libavformat | |
parent | 8fdd24455e9793d8b72c63fe06059e20ec267c9f (diff) | |
download | ffmpeg-a1a707f7280a08d6686732e1ab911dd44663889c.tar.gz |
Add a new function av_codec_get_tag2().
av_codec_get_tag() may return 0 both in case a codec_tag was
found and if no codec_tag was found.
The new function does not have this ambiguity.
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/avformat.h | 12 | ||||
-rw-r--r-- | libavformat/utils.c | 19 | ||||
-rw-r--r-- | libavformat/version.h | 4 |
3 files changed, 31 insertions, 4 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h index c907d4e961..8330c6b61b 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1930,6 +1930,18 @@ enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned i */ unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); +/** + * Get the codec tag for the given codec id. + * + * @param tags list of supported codec_id - codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + * @param id codec id that should be searched for in the list + * @param tag A pointer to the found tag + * @return 0 if id was not found in tags, > 0 if it was found + */ +int av_codec_get_tag2(const struct AVCodecTag * const *tags, enum AVCodecID id, + unsigned int *tag); + int av_find_default_stream_index(AVFormatContext *s); /** diff --git a/libavformat/utils.c b/libavformat/utils.c index d43e1c0adc..576713adfd 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2584,10 +2584,25 @@ enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags) unsigned int av_codec_get_tag(const AVCodecTag * const *tags, enum AVCodecID id) { + unsigned int tag; + if (!av_codec_get_tag2(tags, id, &tag)) + return 0; + return tag; +} + +int av_codec_get_tag2(const AVCodecTag * const *tags, enum AVCodecID id, + unsigned int *tag) +{ int i; for(i=0; tags && tags[i]; i++){ - int tag= ff_codec_get_tag(tags[i], id); - if(tag) return tag; + const AVCodecTag *codec_tags = tags[i]; + while (codec_tags->id != AV_CODEC_ID_NONE) { + if (codec_tags->id == id) { + *tag = codec_tags->tag; + return 1; + } + codec_tags++; + } } return 0; } diff --git a/libavformat/version.h b/libavformat/version.h index cffc4bf6a5..52629486e6 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -30,8 +30,8 @@ #include "libavutil/avutil.h" #define LIBAVFORMAT_VERSION_MAJOR 54 -#define LIBAVFORMAT_VERSION_MINOR 60 -#define LIBAVFORMAT_VERSION_MICRO 101 +#define LIBAVFORMAT_VERSION_MINOR 61 +#define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \ |