[FFmpeg-cvslog] avformat/utils: Use codec_info_duration_fields in fps calculation end decission when no timestamps and thus no duration_count is available

Michael Niedermayer git at videolan.org
Sat Apr 18 03:30:06 CEST 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Apr 18 00:58:51 2015 +0200| [80fa48a413a066a87e1a5683d248ce921a444292] | committer: Michael Niedermayer

avformat/utils: Use codec_info_duration_fields in fps calculation end decission when no timestamps and thus no duration_count is available

This avoids waiting for a count to increase which will always be 0 and may
reduce the startup delay for affected streams (rare)

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

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=80fa48a413a066a87e1a5683d248ce921a444292
---

 libavformat/utils.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 6c7ca0a..15aaa70 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3136,9 +3136,13 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
                 fps_analyze_framecount = 0;
             /* variable fps and no guess at the real fps */
             if (!(st->r_frame_rate.num && st->avg_frame_rate.num) &&
-                st->info->duration_count < fps_analyze_framecount &&
-                st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
-                break;
+                st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+                int count = (ic->iformat->flags & AVFMT_NOTIMESTAMPS) ?
+                    st->info->codec_info_duration_fields/2 :
+                    st->info->duration_count;
+                if (count < fps_analyze_framecount)
+                    break;
+            }
             if (st->parser && st->parser->parser->split &&
                 !st->codec->extradata)
                 break;



More information about the ffmpeg-cvslog mailing list