Index: webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc |
diff --git a/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc b/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc |
index aafcd797ac50e10ba7ead609ffa3ae516298b96d..d00139c3b4e1a8868009007b2c931daaba4736eb 100644 |
--- a/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc |
+++ b/webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc |
@@ -132,10 +132,7 @@ class MockVideoEncoder : public VideoEncoder { |
int32_t Release() /* override */ { return 0; } |
- int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) /* override */ { |
- return 0; |
- } |
- |
+ MOCK_METHOD2(SetRates, int32_t(uint32_t newBitRate, uint32_t frameRate)); |
MOCK_METHOD2(SetChannelParameters, int32_t(uint32_t packetLoss, int64_t rtt)); |
bool SupportsNativeHandle() const /* override */ { |
@@ -175,7 +172,8 @@ class MockVideoEncoderFactory : public VideoEncoderFactory { |
const char* encoder_name = encoder_names_.empty() |
? "codec_implementation_name" |
: encoder_names_[encoders_.size()]; |
- ON_CALL(*encoder, ImplementationName()).WillByDefault(Return(encoder_name)); |
+ EXPECT_CALL(*encoder, ImplementationName()) |
+ .WillRepeatedly(Return(encoder_name)); |
encoders_.push_back(encoder); |
return encoder; |
} |
@@ -190,6 +188,16 @@ class MockVideoEncoderFactory : public VideoEncoderFactory { |
delete encoder; |
} |
+ void ExpectRates(const std::vector<int>& expected_bitrates_kbps, |
+ int expected_framerate) { |
+ ASSERT_EQ(encoders_.size(), expected_bitrates_kbps.size()); |
+ for (size_t i = 0; i < expected_bitrates_kbps.size(); ++i) { |
+ EXPECT_CALL(*encoders_[i], |
+ SetRates(expected_bitrates_kbps[i], expected_framerate)) |
+ .WillOnce(Return(0)); |
+ } |
+ } |
+ |
virtual ~MockVideoEncoderFactory() {} |
const std::vector<MockVideoEncoder*>& encoders() const { return encoders_; } |
@@ -380,7 +388,16 @@ TEST_F(TestSimulcastEncoderAdapterFake, EncodedCallbackForDifferentEncoders) { |
SetupCodec(); |
// Set bitrates so that we send all layers. |
- adapter_->SetRates(1200, 30); |
+ int total_bitrate_kbps = 0; |
+ std::vector<int> expected_rates_kbps; |
+ for (int i = 0; i < codec_.numberOfSimulcastStreams; ++i) { |
+ expected_rates_kbps.push_back(codec_.simulcastStream[i].targetBitrate); |
+ total_bitrate_kbps += codec_.simulcastStream[i].targetBitrate; |
+ } |
+ |
+ int kFrameRate = 30; |
+ helper_->factory()->ExpectRates(expected_rates_kbps, kFrameRate); |
+ adapter_->SetRates(total_bitrate_kbps, kFrameRate); |
// At this point, the simulcast encoder adapter should have 3 streams: HD, |
// quarter HD, and quarter quarter HD. We're going to mostly ignore the exact |
@@ -424,7 +441,8 @@ TEST_F(TestSimulcastEncoderAdapterFake, SupportsNativeHandleForSingleStreams) { |
} |
TEST_F(TestSimulcastEncoderAdapterFake, SupportsImplementationName) { |
- EXPECT_STREQ("SimulcastEncoderAdapter", adapter_->ImplementationName()); |
+ EXPECT_STREQ("SimulcastEncoderAdapter (uninitialized)", |
+ adapter_->ImplementationName()); |
TestVp8Simulcast::DefaultSettings( |
&codec_, static_cast<const int*>(kTestTemporalLayerProfile)); |
std::vector<const char*> encoder_names; |