]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/metadata.c
cosmetics, rename nb_frames to nb_fields
[ffmpeg] / libavformat / metadata.c
index fec80d98222b5ff5c9d4c2d7c655c8fe1485190a..6744f22db7f9f62389b3394b2f918e74d218761a 100644 (file)
@@ -33,8 +33,8 @@ av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int f
 
     for(; i<m->count; i++){
         const char *s= m->elems[i].key;
-        if(flags & AV_METADATA_IGNORE_CASE) for(j=0; toupper(s[j]) == toupper(key[j]) && key[j]; j++);
-        else                                for(j=0;         s[j]  ==         key[j]  && key[j]; j++);
+        if(flags & AV_METADATA_MATCH_CASE) for(j=0;         s[j]  ==         key[j]  && key[j]; j++);
+        else                               for(j=0; toupper(s[j]) == toupper(key[j]) && key[j]; j++);
         if(key[j])
             continue;
         if(s[j] && !(flags & AV_METADATA_IGNORE_SUFFIX))
@@ -44,10 +44,10 @@ av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int f
     return NULL;
 }
 
-int av_metadata_set(AVMetadata **pm, AVMetadataTag elem)
+int av_metadata_set(AVMetadata **pm, const char *key, const char *value)
 {
     AVMetadata *m= *pm;
-    AVMetadataTag *tag= av_metadata_get(m, elem.key, NULL, 0);
+    AVMetadataTag *tag= av_metadata_get(m, key, NULL, AV_METADATA_MATCH_CASE);
 
     if(!m)
         m=*pm= av_mallocz(sizeof(*m));
@@ -63,13 +63,27 @@ int av_metadata_set(AVMetadata **pm, AVMetadataTag elem)
         }else
             return AVERROR(ENOMEM);
     }
-    if(elem.value){
-        elem.key  = av_strdup(elem.key  );
-        elem.value= av_strdup(elem.value);
-        m->elems[m->count++]= elem;
+    if(value){
+        m->elems[m->count].key  = av_strdup(key  );
+        m->elems[m->count].value= av_strdup(value);
+        m->count++;
     }
     if(!m->count)
         av_freep(pm);
 
     return 0;
 }
+
+void av_metadata_free(AVMetadata **pm)
+{
+    AVMetadata *m= *pm;
+
+    if(m){
+        while(m->count--){
+            av_free(m->elems[m->count].key);
+            av_free(m->elems[m->count].value);
+        }
+        av_free(m->elems);
+    }
+    av_freep(pm);
+}