Module: libav
Branch: release/0.7
Commit: a60eb6ef12df472554e93916aaeae729b0c8db03

Author:    Anton Khirnov <[email protected]>
Committer: Anton Khirnov <[email protected]>
Date:      Sat Oct  6 09:21:29 2012 +0200

ffmpeg: fix -force_key_frames

Based on commit 19ad567311b29a42e308317b5329218c590afac8 in master.

---

 ffmpeg.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index 76d1cf3..30ff538 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -298,6 +298,7 @@ typedef struct AVOutputStream {
 #endif
 
    int sws_flags;
+   char *forced_key_frames;
 } AVOutputStream;
 
 static AVOutputStream **output_streams_for_file[MAX_FILES] = { NULL };
@@ -2254,6 +2255,9 @@ static int transcode(AVFormatContext **output_files,
                 }
                 codec->time_base = (AVRational){ost->frame_rate.den, 
ost->frame_rate.num};
 
+                if (ost->forced_key_frames)
+                    parse_forced_key_frames(ost->forced_key_frames, ost, 
codec);
+
 #if CONFIG_AVFILTER
                 if (configure_video_filters(ist, ost)) {
                     fprintf(stderr, "Error opening filters!\n");
@@ -2729,6 +2733,7 @@ static int transcode(AVFormatContext **output_files,
                 av_freep(&ost->st->codec->subtitle_header);
                 av_free(ost->pict_tmp.data[0]);
                 av_free(ost->forced_kf_pts);
+                av_free(ost->forced_key_frames);
                 if (ost->video_resample)
                     sws_freeContext(ost->img_resample_ctx);
                 if (ost->resample)
@@ -3550,8 +3555,10 @@ static void new_video_stream(AVFormatContext *oc, int 
file_idx)
             }
         }
 
-        if (forced_key_frames)
-            parse_forced_key_frames(forced_key_frames, ost, video_enc);
+        if (forced_key_frames) {
+            ost->forced_key_frames = forced_key_frames;
+            forced_key_frames = NULL;
+        }
     }
     if (video_language) {
         av_dict_set(&st->metadata, "language", video_language, 0);
@@ -3561,7 +3568,6 @@ static void new_video_stream(AVFormatContext *oc, int 
file_idx)
     /* reset some key parameters */
     video_disable = 0;
     av_freep(&video_codec_name);
-    av_freep(&forced_key_frames);
     video_stream_copy = 0;
     frame_pix_fmt = PIX_FMT_NONE;
 }

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to