Browse code

ffmpeg: Support preserving the source key frame timings

Added option "source" to force_key_frames

anatolschwarz authored on 2015/05/05 22:14:35
Showing 1 changed files
... ...
@@ -1104,6 +1104,10 @@ static void do_video_out(AVFormatContext *s,
1104 1104
             }
1105 1105
 
1106 1106
             ost->forced_keyframes_expr_const_values[FKF_N] += 1;
1107
+        } else if (   ost->forced_keyframes
1108
+                   && !strncmp(ost->forced_keyframes, "source", 6)
1109
+                   && in_picture->key_frame==1) {
1110
+            forced_keyframe = 1;
1107 1111
         }
1108 1112
 
1109 1113
         if (forced_keyframe) {
... ...
@@ -2942,7 +2946,10 @@ static int transcode_init(void)
2942 2942
                         ost->forced_keyframes_expr_const_values[FKF_N_FORCED] = 0;
2943 2943
                         ost->forced_keyframes_expr_const_values[FKF_PREV_FORCED_N] = NAN;
2944 2944
                         ost->forced_keyframes_expr_const_values[FKF_PREV_FORCED_T] = NAN;
2945
-                    } else {
2945
+
2946
+                        // Don't parse the 'forced_keyframes' in case of 'keep-source-keyframes',
2947
+                        // parse it only for static kf timings
2948
+                    } else if(strncmp(ost->forced_keyframes, "source", 6)) {
2946 2949
                         parse_forced_key_frames(ost->forced_keyframes, ost, ost->enc_ctx);
2947 2950
                     }
2948 2951
                 }