ffmpeg.c: dynamically allocate metadata maps
authorAnton Khirnov <wyskas@gmail.com>
Thu, 28 Oct 2010 20:28:22 +0000 (20:28 +0000)
committerAnton Khirnov <wyskas@gmail.com>
Thu, 28 Oct 2010 20:28:22 +0000 (20:28 +0000)
Originally committed as revision 25599 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffmpeg.c

index 3c92a26..7799868 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -124,7 +124,7 @@ static int nb_output_codecs = 0;
 static AVStreamMap *stream_maps = NULL;
 static int nb_stream_maps;
 
-static AVMetaDataMap meta_data_maps[MAX_FILES];
+static AVMetaDataMap *meta_data_maps = NULL;
 static int nb_meta_data_maps;
 
 /* indexed by output file stream index */
@@ -534,6 +534,7 @@ static int ffmpeg_exit(int ret)
     av_free(input_codecs);
     av_free(output_codecs);
     av_free(stream_maps);
+    av_free(meta_data_maps);
 
     av_free(video_codec_name);
     av_free(audio_codec_name);
@@ -2873,8 +2874,10 @@ static void opt_map_meta_data(const char *arg)
     AVMetaDataMap *m;
     char *p;
 
-    m = &meta_data_maps[nb_meta_data_maps++];
+    meta_data_maps = grow_array(meta_data_maps, sizeof(*meta_data_maps),
+                                &nb_meta_data_maps, nb_meta_data_maps + 1);
 
+    m = &meta_data_maps[nb_meta_data_maps - 1];
     m->out_file = strtol(arg, &p, 0);
     if (*p)
         p++;