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() {