Mercurial > libavformat.hg
diff utils.c @ 2243:639597604897 libavformat
Move public API functions av_codec_get_tag() and av_codec_get_id()
into a file which is compiled un-conditionally (utils.c).
author | aurel |
---|---|
date | Wed, 11 Jul 2007 12:45:14 +0000 |
parents | 824d41f03283 |
children | 3677c1667194 |
line wrap: on
line diff
--- a/utils.c Tue Jul 10 21:52:04 2007 +0000 +++ b/utils.c Wed Jul 11 12:45:14 2007 +0000 @@ -22,6 +22,7 @@ #include "allformats.h" #include "opt.h" #include "avstring.h" +#include "riff.h" #undef NDEBUG #include <assert.h> @@ -1656,6 +1657,49 @@ return !!fmt; } +unsigned int codec_get_tag(const AVCodecTag *tags, int id) +{ + while (tags->id != CODEC_ID_NONE) { + if (tags->id == id) + return tags->tag; + tags++; + } + return 0; +} + +enum CodecID codec_get_id(const AVCodecTag *tags, unsigned int tag) +{ + while (tags->id != CODEC_ID_NONE) { + if( toupper((tag >> 0)&0xFF) == toupper((tags->tag >> 0)&0xFF) + && toupper((tag >> 8)&0xFF) == toupper((tags->tag >> 8)&0xFF) + && toupper((tag >>16)&0xFF) == toupper((tags->tag >>16)&0xFF) + && toupper((tag >>24)&0xFF) == toupper((tags->tag >>24)&0xFF)) + return tags->id; + tags++; + } + return CODEC_ID_NONE; +} + +unsigned int av_codec_get_tag(const AVCodecTag *tags[4], enum CodecID id) +{ + int i; + for(i=0; tags && tags[i]; i++){ + int tag= codec_get_tag(tags[i], id); + if(tag) return tag; + } + return 0; +} + +enum CodecID av_codec_get_id(const AVCodecTag *tags[4], unsigned int tag) +{ + int i; + for(i=0; tags && tags[i]; i++){ + enum CodecID id= codec_get_id(tags[i], tag); + if(id!=CODEC_ID_NONE) return id; + } + return CODEC_ID_NONE; +} + /* absolute maximum size we read until we abort */ #define MAX_READ_SIZE 5000000