From 2baccbd9fbf9ad06915a3dce358bafc3611be49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Wed, 15 Sep 2010 16:32:44 +0000 Subject: [PATCH] Fix retrieving the frame rate for real. Apparently it can be any of these values, hope the priority is right. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38659 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp b/src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp index 37c87490df..08bdbed490 100644 --- a/src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp +++ b/src/add-ons/media/plugins/ffmpeg/AVFormatReader.cpp @@ -740,7 +740,15 @@ AVFormatReader::StreamCookie::FrameRate() const frameRate = (double)fStream->codec->sample_rate; break; case CODEC_TYPE_VIDEO: - frameRate = av_q2d(fStream->avg_frame_rate); + if (fStream->avg_frame_rate.den && fStream->avg_frame_rate.num) + frameRate = av_q2d(fStream->avg_frame_rate); + else if (fStream->r_frame_rate.den && fStream->r_frame_rate.num) + frameRate = av_q2d(fStream->r_frame_rate); + else if (fStream->time_base.den && fStream->time_base.num) + frameRate = 1 / av_q2d(fStream->time_base); + else if (fStream->codec->time_base.den && fStream->codec->time_base.num) + frameRate = 1 / av_q2d(fStream->codec->time_base); + // TODO: Fix up interlaced video for real if (frameRate == 50.0f) frameRate = 25.0f;