aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/utils.c
diff options
context:
space:
mode:
authorAurelien Jacobs <aurel@gnuage.org>2007-07-11 12:45:14 +0000
committerAurelien Jacobs <aurel@gnuage.org>2007-07-11 12:45:14 +0000
commit45da8124a09d0ac5f9d8174884584c5f80309d0c (patch)
tree29af3da0493fd10868964ace9f039064ce105832 /libavformat/utils.c
parenta9fb241c3f36899f07cff1f7e2481e8ac67628dd (diff)
downloadffmpeg-45da8124a09d0ac5f9d8174884584c5f80309d0c.tar.gz
Move public API functions av_codec_get_tag() and av_codec_get_id()
into a file which is compiled un-conditionally (utils.c). Originally committed as revision 9590 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/utils.c')
-rw-r--r--libavformat/utils.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 63a3b692ba..453ff7f3f1 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -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 @@ static int set_codec_from_probe_data(AVStream *st, AVProbeData *pd, int score)
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