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