Speculative fix for division by zero in Vp8EncoderImpl.
BUG=chromium:597139
R=sprang@webrtc.org
Review-Url: https://codereview.webrtc.org/2743543004 .
Cr-Commit-Position: refs/heads/master@{#17167}
diff --git a/webrtc/common_types.h b/webrtc/common_types.h
index faa875a..b80635f 100644
--- a/webrtc/common_types.h
+++ b/webrtc/common_types.h
@@ -637,7 +637,7 @@
unsigned int minBitrate; // kilobits/sec.
unsigned int targetBitrate; // kilobits/sec.
- unsigned char maxFramerate;
+ uint32_t maxFramerate;
unsigned int qpMax;
unsigned char numberOfSimulcastStreams;
diff --git a/webrtc/modules/video_coding/media_optimization.cc b/webrtc/modules/video_coding/media_optimization.cc
index a30ac95..fec5c4c 100644
--- a/webrtc/modules/video_coding/media_optimization.cc
+++ b/webrtc/modules/video_coding/media_optimization.cc
@@ -10,6 +10,8 @@
#include "webrtc/modules/video_coding/media_optimization.h"
+#include <limits>
+
#include "webrtc/base/logging.h"
#include "webrtc/modules/video_coding/utility/frame_dropper.h"
#include "webrtc/system_wrappers/include/clock.h"
@@ -129,7 +131,9 @@
uint32_t MediaOptimization::InputFrameRateInternal() {
ProcessIncomingFrameRate(clock_->TimeInMilliseconds());
- return uint32_t(incoming_frame_rate_ + 0.5f);
+ uint32_t framerate = static_cast<uint32_t>(std::min<float>(
+ std::numeric_limits<uint32_t>::max(), incoming_frame_rate_ + 0.5f));
+ return framerate;
}
uint32_t MediaOptimization::SentFrameRate() {