| Index: webrtc/modules/video_coding/receiver_unittest.cc
 | 
| diff --git a/webrtc/modules/video_coding/receiver_unittest.cc b/webrtc/modules/video_coding/receiver_unittest.cc
 | 
| index d51b004a9bb3c8a4d2de0d1a66fb9bce05531d2a..1f3a144badd02ab5a943fe5c27e82fa6b2e7f4b2 100644
 | 
| --- a/webrtc/modules/video_coding/receiver_unittest.cc
 | 
| +++ b/webrtc/modules/video_coding/receiver_unittest.cc
 | 
| @@ -11,6 +11,7 @@
 | 
|  
 | 
|  #include <list>
 | 
|  #include <queue>
 | 
| +#include <vector>
 | 
|  
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  #include "webrtc/base/checks.h"
 | 
| @@ -34,14 +35,11 @@ class TestVCMReceiver : public ::testing::Test {
 | 
|        : clock_(new SimulatedClock(0)),
 | 
|          timing_(clock_.get()),
 | 
|          receiver_(&timing_, clock_.get(), &event_factory_) {
 | 
| -
 | 
| -    stream_generator_.reset(new
 | 
| -        StreamGenerator(0, clock_->TimeInMilliseconds()));
 | 
| +    stream_generator_.reset(
 | 
| +        new StreamGenerator(0, clock_->TimeInMilliseconds()));
 | 
|    }
 | 
|  
 | 
| -  virtual void SetUp() {
 | 
| -    receiver_.Reset();
 | 
| -  }
 | 
| +  virtual void SetUp() { receiver_.Reset(); }
 | 
|  
 | 
|    int32_t InsertPacket(int index) {
 | 
|      VCMPacket packet;
 | 
| @@ -79,7 +77,7 @@ class TestVCMReceiver : public ::testing::Test {
 | 
|    bool DecodeNextFrame() {
 | 
|      int64_t render_time_ms = 0;
 | 
|      VCMEncodedFrame* frame =
 | 
| -        receiver_.FrameForDecoding(0, render_time_ms, false);
 | 
| +        receiver_.FrameForDecoding(0, &render_time_ms, false);
 | 
|      if (!frame)
 | 
|        return false;
 | 
|      receiver_.ReleaseFrame(frame);
 | 
| @@ -116,7 +114,7 @@ TEST_F(TestVCMReceiver, RenderBufferSize_SkipToKeyFrame) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
|    }
 | 
|    EXPECT_EQ((kNumOfFrames - 1) * kDefaultFramePeriodMs,
 | 
| -      receiver_.RenderBufferSizeMs());
 | 
| +            receiver_.RenderBufferSizeMs());
 | 
|  }
 | 
|  
 | 
|  TEST_F(TestVCMReceiver, RenderBufferSize_NotAllComplete) {
 | 
| @@ -132,7 +130,7 @@ TEST_F(TestVCMReceiver, RenderBufferSize_NotAllComplete) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
|    }
 | 
|    EXPECT_EQ((num_of_frames - 1) * kDefaultFramePeriodMs,
 | 
| -      receiver_.RenderBufferSizeMs());
 | 
| +            receiver_.RenderBufferSizeMs());
 | 
|  }
 | 
|  
 | 
|  TEST_F(TestVCMReceiver, RenderBufferSize_NoKeyFrame) {
 | 
| @@ -143,7 +141,7 @@ TEST_F(TestVCMReceiver, RenderBufferSize_NoKeyFrame) {
 | 
|    }
 | 
|    int64_t next_render_time_ms = 0;
 | 
|    VCMEncodedFrame* frame =
 | 
| -      receiver_.FrameForDecoding(10, next_render_time_ms, false);
 | 
| +      receiver_.FrameForDecoding(10, &next_render_time_ms, false);
 | 
|    EXPECT_TRUE(frame == NULL);
 | 
|    receiver_.ReleaseFrame(frame);
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameDelta, false), kNoError);
 | 
| @@ -161,7 +159,7 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_Empty) {
 | 
|    const int kMaxNonDecodableDuration = 500;
 | 
|    const int kMinDelayMs = 500;
 | 
|    receiver_.SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack,
 | 
| -      kMaxNonDecodableDuration);
 | 
| +                            kMaxNonDecodableDuration);
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameKey, true), kNoError);
 | 
|    // Advance time until it's time to decode the key frame.
 | 
|    clock_->AdvanceTimeMilliseconds(kMinDelayMs);
 | 
| @@ -178,7 +176,7 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_NoKeyFrame) {
 | 
|    const int kMaxPacketAgeToNack = 1000;
 | 
|    const int kMaxNonDecodableDuration = 500;
 | 
|    receiver_.SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack,
 | 
| -      kMaxNonDecodableDuration);
 | 
| +                            kMaxNonDecodableDuration);
 | 
|    const int kNumFrames = kDefaultFrameRate * kMaxNonDecodableDuration / 1000;
 | 
|    for (int i = 0; i < kNumFrames; ++i) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
| @@ -194,24 +192,23 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_OneIncomplete) {
 | 
|    const size_t kMaxNackListSize = 1000;
 | 
|    const int kMaxPacketAgeToNack = 1000;
 | 
|    const int kMaxNonDecodableDuration = 500;
 | 
| -  const int kMaxNonDecodableDurationFrames = (kDefaultFrameRate *
 | 
| -      kMaxNonDecodableDuration + 500) / 1000;
 | 
| +  const int kMaxNonDecodableDurationFrames =
 | 
| +      (kDefaultFrameRate * kMaxNonDecodableDuration + 500) / 1000;
 | 
|    const int kMinDelayMs = 500;
 | 
|    receiver_.SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack,
 | 
| -      kMaxNonDecodableDuration);
 | 
| +                            kMaxNonDecodableDuration);
 | 
|    receiver_.SetMinReceiverDelay(kMinDelayMs);
 | 
|    int64_t key_frame_inserted = clock_->TimeInMilliseconds();
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameKey, true), kNoError);
 | 
|    // Insert an incomplete frame.
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameDelta, false), kNoError);
 | 
|    // Insert enough frames to have too long non-decodable sequence.
 | 
| -  for (int i = 0; i < kMaxNonDecodableDurationFrames;
 | 
| -       ++i) {
 | 
| +  for (int i = 0; i < kMaxNonDecodableDurationFrames; ++i) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
|    }
 | 
|    // Advance time until it's time to decode the key frame.
 | 
|    clock_->AdvanceTimeMilliseconds(kMinDelayMs - clock_->TimeInMilliseconds() -
 | 
| -      key_frame_inserted);
 | 
| +                                  key_frame_inserted);
 | 
|    EXPECT_TRUE(DecodeNextFrame());
 | 
|    // Make sure we get a key frame request.
 | 
|    bool request_key_frame = false;
 | 
| @@ -225,11 +222,11 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_NoTrigger) {
 | 
|    const size_t kMaxNackListSize = 1000;
 | 
|    const int kMaxPacketAgeToNack = 1000;
 | 
|    const int kMaxNonDecodableDuration = 500;
 | 
| -  const int kMaxNonDecodableDurationFrames = (kDefaultFrameRate *
 | 
| -      kMaxNonDecodableDuration + 500) / 1000;
 | 
| +  const int kMaxNonDecodableDurationFrames =
 | 
| +      (kDefaultFrameRate * kMaxNonDecodableDuration + 500) / 1000;
 | 
|    const int kMinDelayMs = 500;
 | 
|    receiver_.SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack,
 | 
| -      kMaxNonDecodableDuration);
 | 
| +                            kMaxNonDecodableDuration);
 | 
|    receiver_.SetMinReceiverDelay(kMinDelayMs);
 | 
|    int64_t key_frame_inserted = clock_->TimeInMilliseconds();
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameKey, true), kNoError);
 | 
| @@ -237,13 +234,12 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_NoTrigger) {
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameDelta, false), kNoError);
 | 
|    // Insert all but one frame to not trigger a key frame request due to
 | 
|    // too long duration of non-decodable frames.
 | 
| -  for (int i = 0; i < kMaxNonDecodableDurationFrames - 1;
 | 
| -       ++i) {
 | 
| +  for (int i = 0; i < kMaxNonDecodableDurationFrames - 1; ++i) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
|    }
 | 
|    // Advance time until it's time to decode the key frame.
 | 
|    clock_->AdvanceTimeMilliseconds(kMinDelayMs - clock_->TimeInMilliseconds() -
 | 
| -      key_frame_inserted);
 | 
| +                                  key_frame_inserted);
 | 
|    EXPECT_TRUE(DecodeNextFrame());
 | 
|    // Make sure we don't get a key frame request since we haven't generated
 | 
|    // enough frames.
 | 
| @@ -258,25 +254,24 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_NoTrigger2) {
 | 
|    const size_t kMaxNackListSize = 1000;
 | 
|    const int kMaxPacketAgeToNack = 1000;
 | 
|    const int kMaxNonDecodableDuration = 500;
 | 
| -  const int kMaxNonDecodableDurationFrames = (kDefaultFrameRate *
 | 
| -      kMaxNonDecodableDuration + 500) / 1000;
 | 
| +  const int kMaxNonDecodableDurationFrames =
 | 
| +      (kDefaultFrameRate * kMaxNonDecodableDuration + 500) / 1000;
 | 
|    const int kMinDelayMs = 500;
 | 
|    receiver_.SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack,
 | 
| -      kMaxNonDecodableDuration);
 | 
| +                            kMaxNonDecodableDuration);
 | 
|    receiver_.SetMinReceiverDelay(kMinDelayMs);
 | 
|    int64_t key_frame_inserted = clock_->TimeInMilliseconds();
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameKey, true), kNoError);
 | 
|    // Insert enough frames to have too long non-decodable sequence, except that
 | 
|    // we don't have any losses.
 | 
| -  for (int i = 0; i < kMaxNonDecodableDurationFrames;
 | 
| -       ++i) {
 | 
| +  for (int i = 0; i < kMaxNonDecodableDurationFrames; ++i) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
|    }
 | 
|    // Insert an incomplete frame.
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameDelta, false), kNoError);
 | 
|    // Advance time until it's time to decode the key frame.
 | 
|    clock_->AdvanceTimeMilliseconds(kMinDelayMs - clock_->TimeInMilliseconds() -
 | 
| -      key_frame_inserted);
 | 
| +                                  key_frame_inserted);
 | 
|    EXPECT_TRUE(DecodeNextFrame());
 | 
|    // Make sure we don't get a key frame request since the non-decodable duration
 | 
|    // is only one frame.
 | 
| @@ -291,25 +286,24 @@ TEST_F(TestVCMReceiver, NonDecodableDuration_KeyFrameAfterIncompleteFrames) {
 | 
|    const size_t kMaxNackListSize = 1000;
 | 
|    const int kMaxPacketAgeToNack = 1000;
 | 
|    const int kMaxNonDecodableDuration = 500;
 | 
| -  const int kMaxNonDecodableDurationFrames = (kDefaultFrameRate *
 | 
| -      kMaxNonDecodableDuration + 500) / 1000;
 | 
| +  const int kMaxNonDecodableDurationFrames =
 | 
| +      (kDefaultFrameRate * kMaxNonDecodableDuration + 500) / 1000;
 | 
|    const int kMinDelayMs = 500;
 | 
|    receiver_.SetNackSettings(kMaxNackListSize, kMaxPacketAgeToNack,
 | 
| -      kMaxNonDecodableDuration);
 | 
| +                            kMaxNonDecodableDuration);
 | 
|    receiver_.SetMinReceiverDelay(kMinDelayMs);
 | 
|    int64_t key_frame_inserted = clock_->TimeInMilliseconds();
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameKey, true), kNoError);
 | 
|    // Insert an incomplete frame.
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameDelta, false), kNoError);
 | 
|    // Insert enough frames to have too long non-decodable sequence.
 | 
| -  for (int i = 0; i < kMaxNonDecodableDurationFrames;
 | 
| -       ++i) {
 | 
| +  for (int i = 0; i < kMaxNonDecodableDurationFrames; ++i) {
 | 
|      EXPECT_GE(InsertFrame(kVideoFrameDelta, true), kNoError);
 | 
|    }
 | 
|    EXPECT_GE(InsertFrame(kVideoFrameKey, true), kNoError);
 | 
|    // Advance time until it's time to decode the key frame.
 | 
|    clock_->AdvanceTimeMilliseconds(kMinDelayMs - clock_->TimeInMilliseconds() -
 | 
| -      key_frame_inserted);
 | 
| +                                  key_frame_inserted);
 | 
|    EXPECT_TRUE(DecodeNextFrame());
 | 
|    // Make sure we don't get a key frame request since we have a key frame
 | 
|    // in the list.
 | 
| @@ -340,7 +334,7 @@ class SimulatedClockWithFrames : public SimulatedClock {
 | 
|    // Return true if some frame arrives between now and now+|milliseconds|.
 | 
|    bool AdvanceTimeMilliseconds(int64_t milliseconds, bool stop_on_frame) {
 | 
|      return AdvanceTimeMicroseconds(milliseconds * 1000, stop_on_frame);
 | 
| -  };
 | 
| +  }
 | 
|  
 | 
|    bool AdvanceTimeMicroseconds(int64_t microseconds, bool stop_on_frame) {
 | 
|      int64_t start_time = TimeInMicroseconds();
 | 
| @@ -364,7 +358,7 @@ class SimulatedClockWithFrames : public SimulatedClock {
 | 
|        SimulatedClock::AdvanceTimeMicroseconds(end_time - TimeInMicroseconds());
 | 
|      }
 | 
|      return frame_injected;
 | 
| -  };
 | 
| +  }
 | 
|  
 | 
|    // Input timestamps are in unit Milliseconds.
 | 
|    // And |arrive_timestamps| must be positive and in increasing order.
 | 
| @@ -431,7 +425,7 @@ class FrameInjectEvent : public EventWrapper {
 | 
|  
 | 
|    bool Set() override { return true; }
 | 
|  
 | 
| -  EventTypeWrapper Wait(unsigned long max_time) override {
 | 
| +  EventTypeWrapper Wait(unsigned long max_time) override {  // NOLINT
 | 
|      if (clock_->AdvanceTimeMilliseconds(max_time, stop_on_frame_) &&
 | 
|          stop_on_frame_) {
 | 
|        return EventTypeWrapper::kEventSignaled;
 | 
| @@ -447,7 +441,6 @@ class FrameInjectEvent : public EventWrapper {
 | 
|  
 | 
|  class VCMReceiverTimingTest : public ::testing::Test {
 | 
|   protected:
 | 
| -
 | 
|    VCMReceiverTimingTest()
 | 
|  
 | 
|        : clock_(&stream_generator_, &receiver_),
 | 
| @@ -460,7 +453,6 @@ class VCMReceiverTimingTest : public ::testing::Test {
 | 
|              rtc::scoped_ptr<EventWrapper>(
 | 
|                  new FrameInjectEvent(&clock_, true))) {}
 | 
|  
 | 
| -
 | 
|    virtual void SetUp() { receiver_.Reset(); }
 | 
|  
 | 
|    SimulatedClockWithFrames clock_;
 | 
| @@ -506,7 +498,7 @@ TEST_F(VCMReceiverTimingTest, FrameForDecoding) {
 | 
|    while (num_frames_return < kNumFrames) {
 | 
|      int64_t start_time = clock_.TimeInMilliseconds();
 | 
|      VCMEncodedFrame* frame =
 | 
| -        receiver_.FrameForDecoding(kMaxWaitTime, next_render_time, false);
 | 
| +        receiver_.FrameForDecoding(kMaxWaitTime, &next_render_time, false);
 | 
|      int64_t end_time = clock_.TimeInMilliseconds();
 | 
|  
 | 
|      // In any case the FrameForDecoding should not wait longer than
 | 
| @@ -566,9 +558,8 @@ TEST_F(VCMReceiverTimingTest, FrameForDecodingPreferLateDecoding) {
 | 
|    while (num_frames_return < kNumFrames) {
 | 
|      int64_t start_time = clock_.TimeInMilliseconds();
 | 
|  
 | 
| -    VCMEncodedFrame* frame =
 | 
| -        receiver_.FrameForDecoding(kMaxWaitTime, next_render_time,
 | 
| -                                   prefer_late_decoding);
 | 
| +    VCMEncodedFrame* frame = receiver_.FrameForDecoding(
 | 
| +        kMaxWaitTime, &next_render_time, prefer_late_decoding);
 | 
|      int64_t end_time = clock_.TimeInMilliseconds();
 | 
|      if (frame) {
 | 
|        EXPECT_EQ(frame->RenderTimeMs() - max_decode_ms - render_delay_ms,
 | 
| 
 |