ffmpeg: fix memleak and corruption of AVSubtitle with multiple outputs
authorAnshul Maheshwari <anshul.ffmpeg@gmail.com>
Sat, 21 Jun 2014 11:03:36 +0000 (13:03 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 21 Jun 2014 11:21:08 +0000 (13:21 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
ffmpeg.c

index 1af3e0e..9d9c4f4 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -805,6 +805,8 @@ static void do_subtitle_out(AVFormatContext *s,
     if (output_files[ost->file_index]->start_time != AV_NOPTS_VALUE)
         pts -= output_files[ost->file_index]->start_time;
     for (i = 0; i < nb; i++) {
+        unsigned save_num_rects = sub->num_rects;
+
         ost->sync_opts = av_rescale_q(pts, AV_TIME_BASE_Q, enc->time_base);
         if (!check_recording_time(ost))
             return;
@@ -821,6 +823,8 @@ static void do_subtitle_out(AVFormatContext *s,
 
         subtitle_out_size = avcodec_encode_subtitle(enc, subtitle_out,
                                                     subtitle_out_max_size, sub);
+        if (i == 1)
+            sub->num_rects = save_num_rects;
         if (subtitle_out_size < 0) {
             av_log(NULL, AV_LOG_FATAL, "Subtitle encoding failed\n");
             exit_program(1);