Browse code

ffmpeg: Favor filter graph based duration over ost->frame_rate in fps code

The fate change adds a last frame with a subtitle not displayed in the previous

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2015/01/17 04:43:57
Showing 2 changed files
... ...
@@ -900,15 +900,12 @@ static void do_video_out(AVFormatContext *s,
900 900
     if (ost->source_index >= 0)
901 901
         ist = input_streams[ost->source_index];
902 902
 
903
-    if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
904
-        duration = 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base));
905
-
906
-    // We take the conservative approuch here and take the minimum even though
907
-    // this should be correct on its own but a value too small is harmless, one
908
-    // too big can lead to errors
909 903
     if (filter->inputs[0]->frame_rate.num > 0 &&
910 904
         filter->inputs[0]->frame_rate.den > 0)
911
-        duration = FFMIN(duration, 1/(av_q2d(filter->inputs[0]->frame_rate) * av_q2d(enc->time_base)));
905
+        duration = 1/(av_q2d(filter->inputs[0]->frame_rate) * av_q2d(enc->time_base));
906
+
907
+    if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
908
+        duration = FFMIN(duration, 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base)));
912 909
 
913 910
     if (!ost->filters_script &&
914 911
         !ost->filters &&
... ...
@@ -52,6 +52,7 @@
52 52
 0,         47,         47,        1,   518400, 0xde69683f
53 53
 0,         48,         48,        1,   518400, 0x7df08fba
54 54
 0,         49,         49,        1,   518400, 0xbab197ea
55
+0,         50,         50,        1,   518400, 0x902285d9
55 56
 1,      15355,      15355,     4733,     2094, 0x3c171425, F=0x0
56 57
 1,      48797,      48797,     2560,     2480, 0x7c0edf21, F=0x0
57 58
 1,      51433,      51433,     2366,     3059, 0xc95b8a05, F=0x0