free all allocated metadata structures
[ffmpeg.git] / libavformat / metadata.c
index 8a25782..70bfa3d 100644 (file)
@@ -74,6 +74,20 @@ int av_metadata_set(AVMetadata **pm, AVMetadataTag elem)
     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);
+}
+
 #if LIBAVFORMAT_VERSION_MAJOR < 53
 #define FILL_METADATA(s, key, value) {                                        \
     if (value && *value &&                                                    \
@@ -84,7 +98,7 @@ int av_metadata_set(AVMetadata **pm, AVMetadataTag elem)
 #define FILL_METADATA_INT(s, key) {                                           \
     char number[10];                                                          \
     snprintf(number, sizeof(number), "%d", s->key);                           \
-    FILL_METADATA(s, key, number) }
+    if(s->key)  FILL_METADATA(s, key, number) }
 
 void ff_metadata_sync_compat(AVFormatContext *ctx)
 {