| Index: webrtc/modules/video_coding/timing.cc
 | 
| diff --git a/webrtc/modules/video_coding/timing.cc b/webrtc/modules/video_coding/timing.cc
 | 
| index f1a127a85d894aa3ac9c3de940b7d5ac201523a1..680860a191d5bf7b1dafcad53d275c63bbb4dfe2 100644
 | 
| --- a/webrtc/modules/video_coding/timing.cc
 | 
| +++ b/webrtc/modules/video_coding/timing.cc
 | 
| @@ -10,17 +10,17 @@
 | 
|  
 | 
|  #include "webrtc/modules/video_coding/timing.h"
 | 
|  
 | 
| +#include <algorithm>
 | 
| +
 | 
|  #include "webrtc/modules/video_coding/internal_defines.h"
 | 
|  #include "webrtc/modules/video_coding/jitter_buffer_common.h"
 | 
|  #include "webrtc/system_wrappers/include/clock.h"
 | 
|  #include "webrtc/system_wrappers/include/metrics.h"
 | 
|  #include "webrtc/system_wrappers/include/timestamp_extrapolator.h"
 | 
|  
 | 
| -
 | 
|  namespace webrtc {
 | 
|  
 | 
| -VCMTiming::VCMTiming(Clock* clock,
 | 
| -                     VCMTiming* master_timing)
 | 
| +VCMTiming::VCMTiming(Clock* clock, VCMTiming* master_timing)
 | 
|      : crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
 | 
|        clock_(clock),
 | 
|        master_(false),
 | 
| @@ -62,14 +62,16 @@ void VCMTiming::UpdateHistograms() const {
 | 
|    if (elapsed_sec < metrics::kMinRunTimeInSeconds) {
 | 
|      return;
 | 
|    }
 | 
| -  RTC_HISTOGRAM_COUNTS_100("WebRTC.Video.DecodedFramesPerSecond",
 | 
| +  RTC_HISTOGRAM_COUNTS_100(
 | 
| +      "WebRTC.Video.DecodedFramesPerSecond",
 | 
|        static_cast<int>((num_decoded_frames_ / elapsed_sec) + 0.5f));
 | 
| -  RTC_HISTOGRAM_PERCENTAGE("WebRTC.Video.DelayedFramesToRenderer",
 | 
| +  RTC_HISTOGRAM_PERCENTAGE(
 | 
| +      "WebRTC.Video.DelayedFramesToRenderer",
 | 
|        num_delayed_decoded_frames_ * 100 / num_decoded_frames_);
 | 
|    if (num_delayed_decoded_frames_ > 0) {
 | 
|      RTC_HISTOGRAM_COUNTS_1000(
 | 
|          "WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs",
 | 
| -            sum_missed_render_deadline_ms_ / num_delayed_decoded_frames_);
 | 
| +        sum_missed_render_deadline_ms_ / num_delayed_decoded_frames_);
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -118,8 +120,8 @@ void VCMTiming::UpdateCurrentDelay(uint32_t frame_timestamp) {
 | 
|      // Not initialized, set current delay to target.
 | 
|      current_delay_ms_ = target_delay_ms;
 | 
|    } else if (target_delay_ms != current_delay_ms_) {
 | 
| -    int64_t delay_diff_ms = static_cast<int64_t>(target_delay_ms) -
 | 
| -        current_delay_ms_;
 | 
| +    int64_t delay_diff_ms =
 | 
| +        static_cast<int64_t>(target_delay_ms) - current_delay_ms_;
 | 
|      // Never change the delay with more than 100 ms every second. If we're
 | 
|      // changing the delay in too large steps we will get noticeable freezes. By
 | 
|      // limiting the change we can increase the delay in smaller steps, which
 | 
| @@ -128,11 +130,13 @@ void VCMTiming::UpdateCurrentDelay(uint32_t frame_timestamp) {
 | 
|      int64_t max_change_ms = 0;
 | 
|      if (frame_timestamp < 0x0000ffff && prev_frame_timestamp_ > 0xffff0000) {
 | 
|        // wrap
 | 
| -      max_change_ms = kDelayMaxChangeMsPerS * (frame_timestamp +
 | 
| -          (static_cast<int64_t>(1) << 32) - prev_frame_timestamp_) / 90000;
 | 
| +      max_change_ms = kDelayMaxChangeMsPerS *
 | 
| +                      (frame_timestamp + (static_cast<int64_t>(1) << 32) -
 | 
| +                       prev_frame_timestamp_) /
 | 
| +                      90000;
 | 
|      } else {
 | 
|        max_change_ms = kDelayMaxChangeMsPerS *
 | 
| -          (frame_timestamp - prev_frame_timestamp_) / 90000;
 | 
| +                      (frame_timestamp - prev_frame_timestamp_) / 90000;
 | 
|      }
 | 
|      if (max_change_ms <= 0) {
 | 
|        // Any changes less than 1 ms are truncated and
 | 
| @@ -153,7 +157,7 @@ void VCMTiming::UpdateCurrentDelay(int64_t render_time_ms,
 | 
|    CriticalSectionScoped cs(crit_sect_);
 | 
|    uint32_t target_delay_ms = TargetDelayInternal();
 | 
|    int64_t delayed_ms = actual_decode_time_ms -
 | 
| -      (render_time_ms - MaxDecodeTimeMs() - render_delay_ms_);
 | 
| +                       (render_time_ms - MaxDecodeTimeMs() - render_delay_ms_);
 | 
|    if (delayed_ms < 0) {
 | 
|      return;
 | 
|    }
 | 
| @@ -191,8 +195,8 @@ void VCMTiming::IncomingTimestamp(uint32_t time_stamp, int64_t now_ms) {
 | 
|    ts_extrapolator_->Update(now_ms, time_stamp);
 | 
|  }
 | 
|  
 | 
| -int64_t VCMTiming::RenderTimeMs(uint32_t frame_timestamp, int64_t now_ms)
 | 
| -    const {
 | 
| +int64_t VCMTiming::RenderTimeMs(uint32_t frame_timestamp,
 | 
| +                                int64_t now_ms) const {
 | 
|    CriticalSectionScoped cs(crit_sect_);
 | 
|    const int64_t render_time_ms = RenderTimeMsInternal(frame_timestamp, now_ms);
 | 
|    return render_time_ms;
 | 
| @@ -201,7 +205,7 @@ int64_t VCMTiming::RenderTimeMs(uint32_t frame_timestamp, int64_t now_ms)
 | 
|  int64_t VCMTiming::RenderTimeMsInternal(uint32_t frame_timestamp,
 | 
|                                          int64_t now_ms) const {
 | 
|    int64_t estimated_complete_time_ms =
 | 
| -    ts_extrapolator_->ExtrapolateLocalTime(frame_timestamp);
 | 
| +      ts_extrapolator_->ExtrapolateLocalTime(frame_timestamp);
 | 
|    if (estimated_complete_time_ms == -1) {
 | 
|      estimated_complete_time_ms = now_ms;
 | 
|    }
 | 
| @@ -212,19 +216,19 @@ int64_t VCMTiming::RenderTimeMsInternal(uint32_t frame_timestamp,
 | 
|  }
 | 
|  
 | 
|  // Must be called from inside a critical section.
 | 
| -int32_t VCMTiming::MaxDecodeTimeMs(FrameType frame_type /*= kVideoFrameDelta*/)
 | 
| -    const {
 | 
| +int32_t VCMTiming::MaxDecodeTimeMs(
 | 
| +    FrameType frame_type /*= kVideoFrameDelta*/) const {
 | 
|    const int32_t decode_time_ms = codec_timer_.RequiredDecodeTimeMs(frame_type);
 | 
|    assert(decode_time_ms >= 0);
 | 
|    return decode_time_ms;
 | 
|  }
 | 
|  
 | 
| -uint32_t VCMTiming::MaxWaitingTime(int64_t render_time_ms, int64_t now_ms)
 | 
| -    const {
 | 
| +uint32_t VCMTiming::MaxWaitingTime(int64_t render_time_ms,
 | 
| +                                   int64_t now_ms) const {
 | 
|    CriticalSectionScoped cs(crit_sect_);
 | 
|  
 | 
| -  const int64_t max_wait_time_ms = render_time_ms - now_ms -
 | 
| -      MaxDecodeTimeMs() - render_delay_ms_;
 | 
| +  const int64_t max_wait_time_ms =
 | 
| +      render_time_ms - now_ms - MaxDecodeTimeMs() - render_delay_ms_;
 | 
|  
 | 
|    if (max_wait_time_ms < 0) {
 | 
|      return 0;
 | 
| @@ -232,8 +236,8 @@ uint32_t VCMTiming::MaxWaitingTime(int64_t render_time_ms, int64_t now_ms)
 | 
|    return static_cast<uint32_t>(max_wait_time_ms);
 | 
|  }
 | 
|  
 | 
| -bool VCMTiming::EnoughTimeToDecode(uint32_t available_processing_time_ms)
 | 
| -    const {
 | 
| +bool VCMTiming::EnoughTimeToDecode(
 | 
| +    uint32_t available_processing_time_ms) const {
 | 
|    CriticalSectionScoped cs(crit_sect_);
 | 
|    int32_t max_decode_time_ms = MaxDecodeTimeMs();
 | 
|    if (max_decode_time_ms < 0) {
 | 
| @@ -246,7 +250,8 @@ bool VCMTiming::EnoughTimeToDecode(uint32_t available_processing_time_ms)
 | 
|      max_decode_time_ms = 1;
 | 
|    }
 | 
|    return static_cast<int32_t>(available_processing_time_ms) -
 | 
| -      max_decode_time_ms > 0;
 | 
| +             max_decode_time_ms >
 | 
| +         0;
 | 
|  }
 | 
|  
 | 
|  uint32_t VCMTiming::TargetVideoDelay() const {
 | 
| @@ -256,7 +261,7 @@ uint32_t VCMTiming::TargetVideoDelay() const {
 | 
|  
 | 
|  uint32_t VCMTiming::TargetDelayInternal() const {
 | 
|    return std::max(min_playout_delay_ms_,
 | 
| -      jitter_delay_ms_ + MaxDecodeTimeMs() + render_delay_ms_);
 | 
| +                  jitter_delay_ms_ + MaxDecodeTimeMs() + render_delay_ms_);
 | 
|  }
 | 
|  
 | 
|  void VCMTiming::GetTimings(int* decode_ms,
 | 
| 
 |