Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(678)

Side by Side Diff: webrtc/call/bitrate_estimator_tests.cc

Issue 1537273003: Step 1 to prepare call_test.* for combined audio/video tests. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Cleanups Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | webrtc/call/call_perf_tests.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <functional> 10 #include <functional>
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 Call::Config config; 112 Call::Config config;
113 config.audio_state = AudioState::Create(audio_state_config); 113 config.audio_state = AudioState::Create(audio_state_config);
114 receiver_call_.reset(Call::Create(config)); 114 receiver_call_.reset(Call::Create(config));
115 sender_call_.reset(Call::Create(config)); 115 sender_call_.reset(Call::Create(config));
116 116
117 send_transport_.reset(new test::DirectTransport(sender_call_.get())); 117 send_transport_.reset(new test::DirectTransport(sender_call_.get()));
118 send_transport_->SetReceiver(receiver_call_->Receiver()); 118 send_transport_->SetReceiver(receiver_call_->Receiver());
119 receive_transport_.reset(new test::DirectTransport(receiver_call_.get())); 119 receive_transport_.reset(new test::DirectTransport(receiver_call_.get()));
120 receive_transport_->SetReceiver(sender_call_->Receiver()); 120 receive_transport_->SetReceiver(sender_call_->Receiver());
121 121
122 send_config_ = VideoSendStream::Config(send_transport_.get()); 122 video_send_config_ = VideoSendStream::Config(send_transport_.get());
123 send_config_.rtp.ssrcs.push_back(kSendSsrcs[0]); 123 video_send_config_.rtp.ssrcs.push_back(kSendSsrcs[0]);
124 // Encoders will be set separately per stream. 124 // Encoders will be set separately per stream.
125 send_config_.encoder_settings.encoder = nullptr; 125 video_send_config_.encoder_settings.encoder = nullptr;
126 send_config_.encoder_settings.payload_name = "FAKE"; 126 video_send_config_.encoder_settings.payload_name = "FAKE";
127 send_config_.encoder_settings.payload_type = kFakeSendPayloadType; 127 video_send_config_.encoder_settings.payload_type = kFakeSendPayloadType;
128 encoder_config_.streams = test::CreateVideoStreams(1); 128 video_encoder_config_.streams = test::CreateVideoStreams(1);
129 129
130 receive_config_ = VideoReceiveStream::Config(receive_transport_.get()); 130 receive_config_ = VideoReceiveStream::Config(receive_transport_.get());
131 // receive_config_.decoders will be set by every stream separately. 131 // receive_config_.decoders will be set by every stream separately.
132 receive_config_.rtp.remote_ssrc = send_config_.rtp.ssrcs[0]; 132 receive_config_.rtp.remote_ssrc = video_send_config_.rtp.ssrcs[0];
133 receive_config_.rtp.local_ssrc = kReceiverLocalSsrc; 133 receive_config_.rtp.local_ssrc = kReceiverLocalSsrc;
134 receive_config_.rtp.remb = true; 134 receive_config_.rtp.remb = true;
135 receive_config_.rtp.extensions.push_back( 135 receive_config_.rtp.extensions.push_back(
136 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); 136 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId));
137 receive_config_.rtp.extensions.push_back( 137 receive_config_.rtp.extensions.push_back(
138 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); 138 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId));
139 } 139 }
140 140
141 virtual void TearDown() { 141 virtual void TearDown() {
142 std::for_each(streams_.begin(), streams_.end(), 142 std::for_each(streams_.begin(), streams_.end(),
(...skipping 18 matching lines...) Expand all
161 public: 161 public:
162 Stream(BitrateEstimatorTest* test, bool receive_audio) 162 Stream(BitrateEstimatorTest* test, bool receive_audio)
163 : test_(test), 163 : test_(test),
164 is_sending_receiving_(false), 164 is_sending_receiving_(false),
165 send_stream_(nullptr), 165 send_stream_(nullptr),
166 audio_receive_stream_(nullptr), 166 audio_receive_stream_(nullptr),
167 video_receive_stream_(nullptr), 167 video_receive_stream_(nullptr),
168 frame_generator_capturer_(), 168 frame_generator_capturer_(),
169 fake_encoder_(Clock::GetRealTimeClock()), 169 fake_encoder_(Clock::GetRealTimeClock()),
170 fake_decoder_() { 170 fake_decoder_() {
171 test_->send_config_.rtp.ssrcs[0]++; 171 test_->video_send_config_.rtp.ssrcs[0]++;
172 test_->send_config_.encoder_settings.encoder = &fake_encoder_; 172 test_->video_send_config_.encoder_settings.encoder = &fake_encoder_;
173 send_stream_ = test_->sender_call_->CreateVideoSendStream( 173 send_stream_ = test_->sender_call_->CreateVideoSendStream(
174 test_->send_config_, test_->encoder_config_); 174 test_->video_send_config_, test_->video_encoder_config_);
175 RTC_DCHECK_EQ(1u, test_->encoder_config_.streams.size()); 175 RTC_DCHECK_EQ(1u, test_->video_encoder_config_.streams.size());
176 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create( 176 frame_generator_capturer_.reset(test::FrameGeneratorCapturer::Create(
177 send_stream_->Input(), test_->encoder_config_.streams[0].width, 177 send_stream_->Input(), test_->video_encoder_config_.streams[0].width,
178 test_->encoder_config_.streams[0].height, 30, 178 test_->video_encoder_config_.streams[0].height, 30,
179 Clock::GetRealTimeClock())); 179 Clock::GetRealTimeClock()));
180 send_stream_->Start(); 180 send_stream_->Start();
181 frame_generator_capturer_->Start(); 181 frame_generator_capturer_->Start();
182 182
183 if (receive_audio) { 183 if (receive_audio) {
184 AudioReceiveStream::Config receive_config; 184 AudioReceiveStream::Config receive_config;
185 receive_config.rtp.remote_ssrc = test_->send_config_.rtp.ssrcs[0]; 185 receive_config.rtp.remote_ssrc = test_->video_send_config_.rtp.ssrcs[0];
186 // Bogus non-default id to prevent hitting a RTC_DCHECK when creating 186 // Bogus non-default id to prevent hitting a RTC_DCHECK when creating
187 // the AudioReceiveStream. Every receive stream has to correspond to 187 // the AudioReceiveStream. Every receive stream has to correspond to
188 // an underlying channel id. 188 // an underlying channel id.
189 receive_config.voe_channel_id = 0; 189 receive_config.voe_channel_id = 0;
190 receive_config.rtp.extensions.push_back( 190 receive_config.rtp.extensions.push_back(
191 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); 191 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId));
192 receive_config.combined_audio_video_bwe = true; 192 receive_config.combined_audio_video_bwe = true;
193 audio_receive_stream_ = 193 audio_receive_stream_ =
194 test_->receiver_call_->CreateAudioReceiveStream(receive_config); 194 test_->receiver_call_->CreateAudioReceiveStream(receive_config);
195 } else { 195 } else {
196 VideoReceiveStream::Decoder decoder; 196 VideoReceiveStream::Decoder decoder;
197 decoder.decoder = &fake_decoder_; 197 decoder.decoder = &fake_decoder_;
198 decoder.payload_type = 198 decoder.payload_type =
199 test_->send_config_.encoder_settings.payload_type; 199 test_->video_send_config_.encoder_settings.payload_type;
200 decoder.payload_name = 200 decoder.payload_name =
201 test_->send_config_.encoder_settings.payload_name; 201 test_->video_send_config_.encoder_settings.payload_name;
202 test_->receive_config_.decoders.clear(); 202 test_->receive_config_.decoders.clear();
203 test_->receive_config_.decoders.push_back(decoder); 203 test_->receive_config_.decoders.push_back(decoder);
204 test_->receive_config_.rtp.remote_ssrc = 204 test_->receive_config_.rtp.remote_ssrc =
205 test_->send_config_.rtp.ssrcs[0]; 205 test_->video_send_config_.rtp.ssrcs[0];
206 test_->receive_config_.rtp.local_ssrc++; 206 test_->receive_config_.rtp.local_ssrc++;
207 video_receive_stream_ = test_->receiver_call_->CreateVideoReceiveStream( 207 video_receive_stream_ = test_->receiver_call_->CreateVideoReceiveStream(
208 test_->receive_config_); 208 test_->receive_config_);
209 video_receive_stream_->Start(); 209 video_receive_stream_->Start();
210 } 210 }
211 is_sending_receiving_ = true; 211 is_sending_receiving_ = true;
212 } 212 }
213 213
214 ~Stream() { 214 ~Stream() {
215 EXPECT_FALSE(is_sending_receiving_); 215 EXPECT_FALSE(is_sending_receiving_);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 VideoReceiveStream::Config receive_config_; 257 VideoReceiveStream::Config receive_config_;
258 std::vector<Stream*> streams_; 258 std::vector<Stream*> streams_;
259 }; 259 };
260 260
261 static const char* kAbsSendTimeLog = 261 static const char* kAbsSendTimeLog =
262 "RemoteBitrateEstimatorAbsSendTime: Instantiating."; 262 "RemoteBitrateEstimatorAbsSendTime: Instantiating.";
263 static const char* kSingleStreamLog = 263 static const char* kSingleStreamLog =
264 "RemoteBitrateEstimatorSingleStream: Instantiating."; 264 "RemoteBitrateEstimatorSingleStream: Instantiating.";
265 265
266 TEST_F(BitrateEstimatorTest, InstantiatesTOFPerDefaultForVideo) { 266 TEST_F(BitrateEstimatorTest, InstantiatesTOFPerDefaultForVideo) {
267 send_config_.rtp.extensions.push_back( 267 video_send_config_.rtp.extensions.push_back(
268 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); 268 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId));
269 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 269 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
270 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 270 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
271 streams_.push_back(new Stream(this, false)); 271 streams_.push_back(new Stream(this, false));
272 EXPECT_TRUE(receiver_log_.Wait()); 272 EXPECT_TRUE(receiver_log_.Wait());
273 } 273 }
274 274
275 TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForAudio) { 275 TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForAudio) {
276 send_config_.rtp.extensions.push_back( 276 video_send_config_.rtp.extensions.push_back(
277 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); 277 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId));
278 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 278 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
279 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 279 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
280 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 280 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
281 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 281 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
282 streams_.push_back(new Stream(this, true)); 282 streams_.push_back(new Stream(this, true));
283 EXPECT_TRUE(receiver_log_.Wait()); 283 EXPECT_TRUE(receiver_log_.Wait());
284 } 284 }
285 285
286 TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForVideo) { 286 TEST_F(BitrateEstimatorTest, ImmediatelySwitchToASTForVideo) {
287 send_config_.rtp.extensions.push_back( 287 video_send_config_.rtp.extensions.push_back(
288 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); 288 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId));
289 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 289 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
290 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 290 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
291 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 291 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
292 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 292 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
293 streams_.push_back(new Stream(this, false)); 293 streams_.push_back(new Stream(this, false));
294 EXPECT_TRUE(receiver_log_.Wait()); 294 EXPECT_TRUE(receiver_log_.Wait());
295 } 295 }
296 296
297 TEST_F(BitrateEstimatorTest, SwitchesToASTForAudio) { 297 TEST_F(BitrateEstimatorTest, SwitchesToASTForAudio) {
298 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 298 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
299 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 299 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
300 streams_.push_back(new Stream(this, true)); 300 streams_.push_back(new Stream(this, true));
301 EXPECT_TRUE(receiver_log_.Wait()); 301 EXPECT_TRUE(receiver_log_.Wait());
302 302
303 send_config_.rtp.extensions.push_back( 303 video_send_config_.rtp.extensions.push_back(
304 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId)); 304 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId));
305 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 305 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
306 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 306 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
307 streams_.push_back(new Stream(this, true)); 307 streams_.push_back(new Stream(this, true));
308 EXPECT_TRUE(receiver_log_.Wait()); 308 EXPECT_TRUE(receiver_log_.Wait());
309 } 309 }
310 310
311 TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) { 311 TEST_F(BitrateEstimatorTest, SwitchesToASTForVideo) {
312 send_config_.rtp.extensions.push_back( 312 video_send_config_.rtp.extensions.push_back(
313 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); 313 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId));
314 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 314 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
315 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 315 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
316 streams_.push_back(new Stream(this, false)); 316 streams_.push_back(new Stream(this, false));
317 EXPECT_TRUE(receiver_log_.Wait()); 317 EXPECT_TRUE(receiver_log_.Wait());
318 318
319 send_config_.rtp.extensions[0] = 319 video_send_config_.rtp.extensions[0] =
320 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId); 320 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId);
321 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 321 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
322 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 322 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
323 streams_.push_back(new Stream(this, false)); 323 streams_.push_back(new Stream(this, false));
324 EXPECT_TRUE(receiver_log_.Wait()); 324 EXPECT_TRUE(receiver_log_.Wait());
325 } 325 }
326 326
327 TEST_F(BitrateEstimatorTest, SwitchesToASTThenBackToTOFForVideo) { 327 TEST_F(BitrateEstimatorTest, SwitchesToASTThenBackToTOFForVideo) {
328 send_config_.rtp.extensions.push_back( 328 video_send_config_.rtp.extensions.push_back(
329 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId)); 329 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId));
330 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 330 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
331 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 331 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
332 streams_.push_back(new Stream(this, false)); 332 streams_.push_back(new Stream(this, false));
333 EXPECT_TRUE(receiver_log_.Wait()); 333 EXPECT_TRUE(receiver_log_.Wait());
334 334
335 send_config_.rtp.extensions[0] = 335 video_send_config_.rtp.extensions[0] =
336 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId); 336 RtpExtension(RtpExtension::kAbsSendTime, kASTExtensionId);
337 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE."); 337 receiver_log_.PushExpectedLogLine("Switching to absolute send time RBE.");
338 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog); 338 receiver_log_.PushExpectedLogLine(kAbsSendTimeLog);
339 streams_.push_back(new Stream(this, false)); 339 streams_.push_back(new Stream(this, false));
340 EXPECT_TRUE(receiver_log_.Wait()); 340 EXPECT_TRUE(receiver_log_.Wait());
341 341
342 send_config_.rtp.extensions[0] = 342 video_send_config_.rtp.extensions[0] =
343 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId); 343 RtpExtension(RtpExtension::kTOffset, kTOFExtensionId);
344 receiver_log_.PushExpectedLogLine( 344 receiver_log_.PushExpectedLogLine(
345 "WrappingBitrateEstimator: Switching to transmission time offset RBE."); 345 "WrappingBitrateEstimator: Switching to transmission time offset RBE.");
346 receiver_log_.PushExpectedLogLine(kSingleStreamLog); 346 receiver_log_.PushExpectedLogLine(kSingleStreamLog);
347 streams_.push_back(new Stream(this, false)); 347 streams_.push_back(new Stream(this, false));
348 streams_[0]->StopSending(); 348 streams_[0]->StopSending();
349 streams_[1]->StopSending(); 349 streams_[1]->StopSending();
350 EXPECT_TRUE(receiver_log_.Wait()); 350 EXPECT_TRUE(receiver_log_.Wait());
351 } 351 }
352 } // namespace webrtc 352 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | webrtc/call/call_perf_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698