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

Side by Side Diff: webrtc/video/end_to_end_tests.cc

Issue 2756633004: De-parameterized EndToEndTests. (Closed)
Patch Set: Created 3 years, 9 months 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 | no next file » | 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 <algorithm> 10 #include <algorithm>
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 #include "webrtc/test/null_transport.h" 51 #include "webrtc/test/null_transport.h"
52 #include "webrtc/test/rtcp_packet_parser.h" 52 #include "webrtc/test/rtcp_packet_parser.h"
53 #include "webrtc/test/rtp_rtcp_observer.h" 53 #include "webrtc/test/rtp_rtcp_observer.h"
54 #include "webrtc/test/testsupport/fileutils.h" 54 #include "webrtc/test/testsupport/fileutils.h"
55 #include "webrtc/test/testsupport/perf_test.h" 55 #include "webrtc/test/testsupport/perf_test.h"
56 #include "webrtc/video/transport_adapter.h" 56 #include "webrtc/video/transport_adapter.h"
57 #include "webrtc/video_encoder.h" 57 #include "webrtc/video_encoder.h"
58 58
59 namespace webrtc { 59 namespace webrtc {
60 60
61 namespace {
62 const char new_jb_enabled[] = "WebRTC-NewVideoJitterBuffer/Enabled/";
63 const char new_jb_disabled[] = "WebRTC-NewVideoJitterBuffer/Disabled/";
64 } // anonymous namespace
65
66 static const int kSilenceTimeoutMs = 2000; 61 static const int kSilenceTimeoutMs = 2000;
67 62
68 class EndToEndTest : public test::CallTest, 63 class EndToEndTest : public test::CallTest {
69 public ::testing::WithParamInterface<std::string> {
70 public: 64 public:
71 EndToEndTest() : scoped_field_trial_(GetParam()) {} 65 EndToEndTest() {}
72 66
73 virtual ~EndToEndTest() { 67 virtual ~EndToEndTest() {
74 EXPECT_EQ(nullptr, video_send_stream_); 68 EXPECT_EQ(nullptr, video_send_stream_);
75 EXPECT_TRUE(video_receive_streams_.empty()); 69 EXPECT_TRUE(video_receive_streams_.empty());
76 } 70 }
77 71
78 protected: 72 protected:
79 class UnusedTransport : public Transport { 73 class UnusedTransport : public Transport {
80 private: 74 private:
81 bool SendRtp(const uint8_t* packet, 75 bool SendRtp(const uint8_t* packet,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first); 123 void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first);
130 void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp); 124 void TestRtpStatePreservation(bool use_rtx, bool provoke_rtcpsr_before_rtp);
131 void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare); 125 void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare);
132 void VerifyNewVideoSendStreamsRespectNetworkState( 126 void VerifyNewVideoSendStreamsRespectNetworkState(
133 MediaType network_to_bring_up, 127 MediaType network_to_bring_up,
134 VideoEncoder* encoder, 128 VideoEncoder* encoder,
135 Transport* transport); 129 Transport* transport);
136 void VerifyNewVideoReceiveStreamsRespectNetworkState( 130 void VerifyNewVideoReceiveStreamsRespectNetworkState(
137 MediaType network_to_bring_up, 131 MediaType network_to_bring_up,
138 Transport* transport); 132 Transport* transport);
139 test::ScopedFieldTrials scoped_field_trial_;
140 }; 133 };
141 134
142 INSTANTIATE_TEST_CASE_P(TestWithNewVideoJitterBuffer, 135 TEST_F(EndToEndTest, ReceiverCanBeStartedTwice) {
143 EndToEndTest,
144 ::testing::Values(new_jb_enabled, new_jb_disabled));
145
146 TEST_P(EndToEndTest, ReceiverCanBeStartedTwice) {
147 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); 136 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
148 137
149 test::NullTransport transport; 138 test::NullTransport transport;
150 CreateSendConfig(1, 0, 0, &transport); 139 CreateSendConfig(1, 0, 0, &transport);
151 CreateMatchingReceiveConfigs(&transport); 140 CreateMatchingReceiveConfigs(&transport);
152 141
153 CreateVideoStreams(); 142 CreateVideoStreams();
154 143
155 video_receive_streams_[0]->Start(); 144 video_receive_streams_[0]->Start();
156 video_receive_streams_[0]->Start(); 145 video_receive_streams_[0]->Start();
157 146
158 DestroyStreams(); 147 DestroyStreams();
159 } 148 }
160 149
161 TEST_P(EndToEndTest, ReceiverCanBeStoppedTwice) { 150 TEST_F(EndToEndTest, ReceiverCanBeStoppedTwice) {
162 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); 151 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
163 152
164 test::NullTransport transport; 153 test::NullTransport transport;
165 CreateSendConfig(1, 0, 0, &transport); 154 CreateSendConfig(1, 0, 0, &transport);
166 CreateMatchingReceiveConfigs(&transport); 155 CreateMatchingReceiveConfigs(&transport);
167 156
168 CreateVideoStreams(); 157 CreateVideoStreams();
169 158
170 video_receive_streams_[0]->Stop(); 159 video_receive_streams_[0]->Stop();
171 video_receive_streams_[0]->Stop(); 160 video_receive_streams_[0]->Stop();
172 161
173 DestroyStreams(); 162 DestroyStreams();
174 } 163 }
175 164
176 TEST_P(EndToEndTest, ReceiverCanBeStoppedAndRestarted) { 165 TEST_F(EndToEndTest, ReceiverCanBeStoppedAndRestarted) {
177 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); 166 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
178 167
179 test::NullTransport transport; 168 test::NullTransport transport;
180 CreateSendConfig(1, 0, 0, &transport); 169 CreateSendConfig(1, 0, 0, &transport);
181 CreateMatchingReceiveConfigs(&transport); 170 CreateMatchingReceiveConfigs(&transport);
182 171
183 CreateVideoStreams(); 172 CreateVideoStreams();
184 173
185 video_receive_streams_[0]->Stop(); 174 video_receive_streams_[0]->Stop();
186 video_receive_streams_[0]->Start(); 175 video_receive_streams_[0]->Start();
187 video_receive_streams_[0]->Stop(); 176 video_receive_streams_[0]->Stop();
188 177
189 DestroyStreams(); 178 DestroyStreams();
190 } 179 }
191 180
192 TEST_P(EndToEndTest, RendersSingleDelayedFrame) { 181 TEST_F(EndToEndTest, RendersSingleDelayedFrame) {
193 static const int kWidth = 320; 182 static const int kWidth = 320;
194 static const int kHeight = 240; 183 static const int kHeight = 240;
195 // This constant is chosen to be higher than the timeout in the video_render 184 // This constant is chosen to be higher than the timeout in the video_render
196 // module. This makes sure that frames aren't dropped if there are no other 185 // module. This makes sure that frames aren't dropped if there are no other
197 // frames in the queue. 186 // frames in the queue.
198 static const int kRenderDelayMs = 1000; 187 static const int kRenderDelayMs = 1000;
199 188
200 class Renderer : public rtc::VideoSinkInterface<VideoFrame> { 189 class Renderer : public rtc::VideoSinkInterface<VideoFrame> {
201 public: 190 public:
202 Renderer() : event_(false, false) {} 191 Renderer() : event_(false, false) {}
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 << "Timed out while waiting for the frame to render."; 228 << "Timed out while waiting for the frame to render.";
240 229
241 Stop(); 230 Stop();
242 231
243 sender_transport.StopSending(); 232 sender_transport.StopSending();
244 receiver_transport.StopSending(); 233 receiver_transport.StopSending();
245 234
246 DestroyStreams(); 235 DestroyStreams();
247 } 236 }
248 237
249 TEST_P(EndToEndTest, TransmitsFirstFrame) { 238 TEST_F(EndToEndTest, TransmitsFirstFrame) {
250 class Renderer : public rtc::VideoSinkInterface<VideoFrame> { 239 class Renderer : public rtc::VideoSinkInterface<VideoFrame> {
251 public: 240 public:
252 Renderer() : event_(false, false) {} 241 Renderer() : event_(false, false) {}
253 242
254 void OnFrame(const VideoFrame& video_frame) override { event_.Set(); } 243 void OnFrame(const VideoFrame& video_frame) override { event_.Set(); }
255 244
256 bool Wait() { return event_.Wait(kDefaultTimeoutMs); } 245 bool Wait() { return event_.Wait(kDefaultTimeoutMs); }
257 246
258 rtc::Event event_; 247 rtc::Event event_;
259 } renderer; 248 } renderer;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 333
345 private: 334 private:
346 int no_frames_to_wait_for_; 335 int no_frames_to_wait_for_;
347 VideoRotation expected_rotation_; 336 VideoRotation expected_rotation_;
348 std::string payload_name_; 337 std::string payload_name_;
349 std::unique_ptr<webrtc::VideoEncoder> encoder_; 338 std::unique_ptr<webrtc::VideoEncoder> encoder_;
350 std::unique_ptr<webrtc::VideoDecoder> decoder_; 339 std::unique_ptr<webrtc::VideoDecoder> decoder_;
351 int frame_counter_; 340 int frame_counter_;
352 }; 341 };
353 342
354 TEST_P(EndToEndTest, SendsAndReceivesVP8) { 343 TEST_F(EndToEndTest, SendsAndReceivesVP8) {
355 CodecObserver test(5, kVideoRotation_0, "VP8", VP8Encoder::Create(), 344 CodecObserver test(5, kVideoRotation_0, "VP8", VP8Encoder::Create(),
356 VP8Decoder::Create()); 345 VP8Decoder::Create());
357 RunBaseTest(&test); 346 RunBaseTest(&test);
358 } 347 }
359 348
360 TEST_P(EndToEndTest, SendsAndReceivesVP8Rotation90) { 349 TEST_F(EndToEndTest, SendsAndReceivesVP8Rotation90) {
361 CodecObserver test(5, kVideoRotation_90, "VP8", VP8Encoder::Create(), 350 CodecObserver test(5, kVideoRotation_90, "VP8", VP8Encoder::Create(),
362 VP8Decoder::Create()); 351 VP8Decoder::Create());
363 RunBaseTest(&test); 352 RunBaseTest(&test);
364 } 353 }
365 354
366 #if !defined(RTC_DISABLE_VP9) 355 #if !defined(RTC_DISABLE_VP9)
367 TEST_P(EndToEndTest, SendsAndReceivesVP9) { 356 TEST_F(EndToEndTest, SendsAndReceivesVP9) {
368 CodecObserver test(500, kVideoRotation_0, "VP9", VP9Encoder::Create(), 357 CodecObserver test(500, kVideoRotation_0, "VP9", VP9Encoder::Create(),
369 VP9Decoder::Create()); 358 VP9Decoder::Create());
370 RunBaseTest(&test); 359 RunBaseTest(&test);
371 } 360 }
372 361
373 TEST_P(EndToEndTest, SendsAndReceivesVP9VideoRotation90) { 362 TEST_F(EndToEndTest, SendsAndReceivesVP9VideoRotation90) {
374 CodecObserver test(5, kVideoRotation_90, "VP9", VP9Encoder::Create(), 363 CodecObserver test(5, kVideoRotation_90, "VP9", VP9Encoder::Create(),
375 VP9Decoder::Create()); 364 VP9Decoder::Create());
376 RunBaseTest(&test); 365 RunBaseTest(&test);
377 } 366 }
378 #endif // !defined(RTC_DISABLE_VP9) 367 #endif // !defined(RTC_DISABLE_VP9)
379 368
380 #if defined(WEBRTC_USE_H264) 369 #if defined(WEBRTC_USE_H264)
381 TEST_P(EndToEndTest, SendsAndReceivesH264) { 370 TEST_F(EndToEndTest, SendsAndReceivesH264) {
382 CodecObserver test(500, kVideoRotation_0, "H264", 371 CodecObserver test(500, kVideoRotation_0, "H264",
383 H264Encoder::Create(cricket::VideoCodec("H264")), 372 H264Encoder::Create(cricket::VideoCodec("H264")),
384 H264Decoder::Create()); 373 H264Decoder::Create());
385 RunBaseTest(&test); 374 RunBaseTest(&test);
386 } 375 }
387 376
388 TEST_P(EndToEndTest, SendsAndReceivesH264VideoRotation90) { 377 TEST_F(EndToEndTest, SendsAndReceivesH264VideoRotation90) {
389 CodecObserver test(5, kVideoRotation_90, "H264", 378 CodecObserver test(5, kVideoRotation_90, "H264",
390 H264Encoder::Create(cricket::VideoCodec("H264")), 379 H264Encoder::Create(cricket::VideoCodec("H264")),
391 H264Decoder::Create()); 380 H264Decoder::Create());
392 RunBaseTest(&test); 381 RunBaseTest(&test);
393 } 382 }
394 383
395 TEST_P(EndToEndTest, SendsAndReceivesH264PacketizationMode0) { 384 TEST_F(EndToEndTest, SendsAndReceivesH264PacketizationMode0) {
396 cricket::VideoCodec codec = cricket::VideoCodec("H264"); 385 cricket::VideoCodec codec = cricket::VideoCodec("H264");
397 codec.SetParam(cricket::kH264FmtpPacketizationMode, "0"); 386 codec.SetParam(cricket::kH264FmtpPacketizationMode, "0");
398 CodecObserver test(500, kVideoRotation_0, "H264", H264Encoder::Create(codec), 387 CodecObserver test(500, kVideoRotation_0, "H264", H264Encoder::Create(codec),
399 H264Decoder::Create()); 388 H264Decoder::Create());
400 RunBaseTest(&test); 389 RunBaseTest(&test);
401 } 390 }
402 391
403 TEST_P(EndToEndTest, SendsAndReceivesH264PacketizationMode1) { 392 TEST_F(EndToEndTest, SendsAndReceivesH264PacketizationMode1) {
404 cricket::VideoCodec codec = cricket::VideoCodec("H264"); 393 cricket::VideoCodec codec = cricket::VideoCodec("H264");
405 codec.SetParam(cricket::kH264FmtpPacketizationMode, "1"); 394 codec.SetParam(cricket::kH264FmtpPacketizationMode, "1");
406 CodecObserver test(500, kVideoRotation_0, "H264", H264Encoder::Create(codec), 395 CodecObserver test(500, kVideoRotation_0, "H264", H264Encoder::Create(codec),
407 H264Decoder::Create()); 396 H264Decoder::Create());
408 RunBaseTest(&test); 397 RunBaseTest(&test);
409 } 398 }
410 399
411 #endif // defined(WEBRTC_USE_H264) 400 #endif // defined(WEBRTC_USE_H264)
412 401
413 TEST_P(EndToEndTest, ReceiverUsesLocalSsrc) { 402 TEST_F(EndToEndTest, ReceiverUsesLocalSsrc) {
414 class SyncRtcpObserver : public test::EndToEndTest { 403 class SyncRtcpObserver : public test::EndToEndTest {
415 public: 404 public:
416 SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {} 405 SyncRtcpObserver() : EndToEndTest(kDefaultTimeoutMs) {}
417 406
418 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override { 407 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
419 test::RtcpPacketParser parser; 408 test::RtcpPacketParser parser;
420 EXPECT_TRUE(parser.Parse(packet, length)); 409 EXPECT_TRUE(parser.Parse(packet, length));
421 EXPECT_EQ(kReceiverLocalVideoSsrc, parser.sender_ssrc()); 410 EXPECT_EQ(kReceiverLocalVideoSsrc, parser.sender_ssrc());
422 observation_complete_.Set(); 411 observation_complete_.Set();
423 412
424 return SEND_PACKET; 413 return SEND_PACKET;
425 } 414 }
426 415
427 void PerformTest() override { 416 void PerformTest() override {
428 EXPECT_TRUE(Wait()) 417 EXPECT_TRUE(Wait())
429 << "Timed out while waiting for a receiver RTCP packet to be sent."; 418 << "Timed out while waiting for a receiver RTCP packet to be sent.";
430 } 419 }
431 } test; 420 } test;
432 421
433 RunBaseTest(&test); 422 RunBaseTest(&test);
434 } 423 }
435 424
436 TEST_P(EndToEndTest, ReceivesAndRetransmitsNack) { 425 TEST_F(EndToEndTest, ReceivesAndRetransmitsNack) {
437 static const int kNumberOfNacksToObserve = 2; 426 static const int kNumberOfNacksToObserve = 2;
438 static const int kLossBurstSize = 2; 427 static const int kLossBurstSize = 2;
439 static const int kPacketsBetweenLossBursts = 9; 428 static const int kPacketsBetweenLossBursts = 9;
440 class NackObserver : public test::EndToEndTest { 429 class NackObserver : public test::EndToEndTest {
441 public: 430 public:
442 NackObserver() 431 NackObserver()
443 : EndToEndTest(kLongTimeoutMs), 432 : EndToEndTest(kLongTimeoutMs),
444 sent_rtp_packets_(0), 433 sent_rtp_packets_(0),
445 packets_left_to_drop_(0), 434 packets_left_to_drop_(0),
446 nacks_left_(kNumberOfNacksToObserve) {} 435 nacks_left_(kNumberOfNacksToObserve) {}
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 std::set<uint16_t> dropped_packets_; 498 std::set<uint16_t> dropped_packets_;
510 std::set<uint16_t> retransmitted_packets_; 499 std::set<uint16_t> retransmitted_packets_;
511 uint64_t sent_rtp_packets_; 500 uint64_t sent_rtp_packets_;
512 int packets_left_to_drop_; 501 int packets_left_to_drop_;
513 int nacks_left_ GUARDED_BY(&crit_); 502 int nacks_left_ GUARDED_BY(&crit_);
514 } test; 503 } test;
515 504
516 RunBaseTest(&test); 505 RunBaseTest(&test);
517 } 506 }
518 507
519 TEST_P(EndToEndTest, ReceivesNackAndRetransmitsAudio) { 508 TEST_F(EndToEndTest, ReceivesNackAndRetransmitsAudio) {
520 class NackObserver : public test::EndToEndTest { 509 class NackObserver : public test::EndToEndTest {
521 public: 510 public:
522 NackObserver() 511 NackObserver()
523 : EndToEndTest(kLongTimeoutMs), 512 : EndToEndTest(kLongTimeoutMs),
524 local_ssrc_(0), 513 local_ssrc_(0),
525 remote_ssrc_(0), 514 remote_ssrc_(0),
526 receive_transport_(nullptr) {} 515 receive_transport_(nullptr) {}
527 516
528 private: 517 private:
529 size_t GetNumVideoStreams() const override { return 0; } 518 size_t GetNumVideoStreams() const override { return 0; }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 uint32_t remote_ssrc_; 571 uint32_t remote_ssrc_;
583 Transport* receive_transport_; 572 Transport* receive_transport_;
584 rtc::Optional<uint16_t> sequence_number_to_retransmit_; 573 rtc::Optional<uint16_t> sequence_number_to_retransmit_;
585 } test; 574 } test;
586 575
587 RunBaseTest(&test); 576 RunBaseTest(&test);
588 } 577 }
589 578
590 // Disabled due to flakyness, see 579 // Disabled due to flakyness, see
591 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7047. 580 // https://bugs.chromium.org/p/webrtc/issues/detail?id=7047.
592 TEST_P(EndToEndTest, DISABLED_ReceivesUlpfec) { 581 TEST_F(EndToEndTest, DISABLED_ReceivesUlpfec) {
593 class UlpfecRenderObserver : public test::EndToEndTest, 582 class UlpfecRenderObserver : public test::EndToEndTest,
594 public rtc::VideoSinkInterface<VideoFrame> { 583 public rtc::VideoSinkInterface<VideoFrame> {
595 public: 584 public:
596 UlpfecRenderObserver() 585 UlpfecRenderObserver()
597 : EndToEndTest(kDefaultTimeoutMs), 586 : EndToEndTest(kDefaultTimeoutMs),
598 random_(0xcafef00d1), 587 random_(0xcafef00d1),
599 num_packets_sent_(0) {} 588 num_packets_sent_(0) {}
600 589
601 private: 590 private:
602 Action OnSendRtp(const uint8_t* packet, size_t length) override { 591 Action OnSendRtp(const uint8_t* packet, size_t length) override {
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 std::set<uint32_t> dropped_sequence_numbers_ GUARDED_BY(crit_); 834 std::set<uint32_t> dropped_sequence_numbers_ GUARDED_BY(crit_);
846 // Several packets can have the same timestamp. 835 // Several packets can have the same timestamp.
847 std::multiset<uint32_t> dropped_timestamps_ GUARDED_BY(crit_); 836 std::multiset<uint32_t> dropped_timestamps_ GUARDED_BY(crit_);
848 const bool enable_nack_; 837 const bool enable_nack_;
849 const bool expect_flexfec_rtcp_; 838 const bool expect_flexfec_rtcp_;
850 bool received_flexfec_rtcp_ GUARDED_BY(crit_); 839 bool received_flexfec_rtcp_ GUARDED_BY(crit_);
851 Random random_; 840 Random random_;
852 int num_packets_sent_; 841 int num_packets_sent_;
853 }; 842 };
854 843
855 TEST_P(EndToEndTest, RecoversWithFlexfec) { 844 TEST_F(EndToEndTest, RecoversWithFlexfec) {
856 FlexfecRenderObserver test(false, false); 845 FlexfecRenderObserver test(false, false);
857 RunBaseTest(&test); 846 RunBaseTest(&test);
858 } 847 }
859 848
860 TEST_P(EndToEndTest, RecoversWithFlexfecAndNack) { 849 TEST_F(EndToEndTest, RecoversWithFlexfecAndNack) {
861 FlexfecRenderObserver test(true, false); 850 FlexfecRenderObserver test(true, false);
862 RunBaseTest(&test); 851 RunBaseTest(&test);
863 } 852 }
864 853
865 TEST_P(EndToEndTest, RecoversWithFlexfecAndSendsCorrespondingRtcp) { 854 TEST_F(EndToEndTest, RecoversWithFlexfecAndSendsCorrespondingRtcp) {
866 FlexfecRenderObserver test(false, true); 855 FlexfecRenderObserver test(false, true);
867 RunBaseTest(&test); 856 RunBaseTest(&test);
868 } 857 }
869 858
870 TEST_P(EndToEndTest, ReceivedUlpfecPacketsNotNacked) { 859 TEST_F(EndToEndTest, ReceivedUlpfecPacketsNotNacked) {
871 class UlpfecNackObserver : public test::EndToEndTest { 860 class UlpfecNackObserver : public test::EndToEndTest {
872 public: 861 public:
873 UlpfecNackObserver() 862 UlpfecNackObserver()
874 : EndToEndTest(kDefaultTimeoutMs), 863 : EndToEndTest(kDefaultTimeoutMs),
875 state_(kFirstPacket), 864 state_(kFirstPacket),
876 ulpfec_sequence_number_(0), 865 ulpfec_sequence_number_(0),
877 has_last_sequence_number_(false), 866 has_last_sequence_number_(false),
878 last_sequence_number_(0), 867 last_sequence_number_(0),
879 encoder_(VP8Encoder::Create()), 868 encoder_(VP8Encoder::Create()),
880 decoder_(VP8Decoder::Create()) {} 869 decoder_(VP8Decoder::Create()) {}
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 std::unique_ptr<VideoEncoder> encoder_; 1158 std::unique_ptr<VideoEncoder> encoder_;
1170 const std::string payload_name_; 1159 const std::string payload_name_;
1171 int marker_bits_observed_; 1160 int marker_bits_observed_;
1172 uint32_t retransmitted_timestamp_ GUARDED_BY(&crit_); 1161 uint32_t retransmitted_timestamp_ GUARDED_BY(&crit_);
1173 std::vector<uint32_t> rendered_timestamps_ GUARDED_BY(&crit_); 1162 std::vector<uint32_t> rendered_timestamps_ GUARDED_BY(&crit_);
1174 } test(enable_rtx, enable_red); 1163 } test(enable_rtx, enable_red);
1175 1164
1176 RunBaseTest(&test); 1165 RunBaseTest(&test);
1177 } 1166 }
1178 1167
1179 TEST_P(EndToEndTest, DecodesRetransmittedFrame) { 1168 TEST_F(EndToEndTest, DecodesRetransmittedFrame) {
1180 DecodesRetransmittedFrame(false, false); 1169 DecodesRetransmittedFrame(false, false);
1181 } 1170 }
1182 1171
1183 TEST_P(EndToEndTest, DecodesRetransmittedFrameOverRtx) { 1172 TEST_F(EndToEndTest, DecodesRetransmittedFrameOverRtx) {
1184 DecodesRetransmittedFrame(true, false); 1173 DecodesRetransmittedFrame(true, false);
1185 } 1174 }
1186 1175
1187 TEST_P(EndToEndTest, DecodesRetransmittedFrameByRed) { 1176 TEST_F(EndToEndTest, DecodesRetransmittedFrameByRed) {
1188 DecodesRetransmittedFrame(false, true); 1177 DecodesRetransmittedFrame(false, true);
1189 } 1178 }
1190 1179
1191 TEST_P(EndToEndTest, DecodesRetransmittedFrameByRedOverRtx) { 1180 TEST_F(EndToEndTest, DecodesRetransmittedFrameByRedOverRtx) {
1192 DecodesRetransmittedFrame(true, true); 1181 DecodesRetransmittedFrame(true, true);
1193 } 1182 }
1194 1183
1195 void EndToEndTest::ReceivesPliAndRecovers(int rtp_history_ms) { 1184 void EndToEndTest::ReceivesPliAndRecovers(int rtp_history_ms) {
1196 static const int kPacketsToDrop = 1; 1185 static const int kPacketsToDrop = 1;
1197 1186
1198 class PliObserver : public test::EndToEndTest, 1187 class PliObserver : public test::EndToEndTest,
1199 public rtc::VideoSinkInterface<VideoFrame> { 1188 public rtc::VideoSinkInterface<VideoFrame> {
1200 public: 1189 public:
1201 explicit PliObserver(int rtp_history_ms) 1190 explicit PliObserver(int rtp_history_ms)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 int rtp_history_ms_; 1254 int rtp_history_ms_;
1266 bool nack_enabled_; 1255 bool nack_enabled_;
1267 uint32_t highest_dropped_timestamp_ GUARDED_BY(&crit_); 1256 uint32_t highest_dropped_timestamp_ GUARDED_BY(&crit_);
1268 int frames_to_drop_ GUARDED_BY(&crit_); 1257 int frames_to_drop_ GUARDED_BY(&crit_);
1269 bool received_pli_ GUARDED_BY(&crit_); 1258 bool received_pli_ GUARDED_BY(&crit_);
1270 } test(rtp_history_ms); 1259 } test(rtp_history_ms);
1271 1260
1272 RunBaseTest(&test); 1261 RunBaseTest(&test);
1273 } 1262 }
1274 1263
1275 TEST_P(EndToEndTest, ReceivesPliAndRecoversWithNack) { 1264 TEST_F(EndToEndTest, ReceivesPliAndRecoversWithNack) {
1276 ReceivesPliAndRecovers(1000); 1265 ReceivesPliAndRecovers(1000);
1277 } 1266 }
1278 1267
1279 TEST_P(EndToEndTest, ReceivesPliAndRecoversWithoutNack) { 1268 TEST_F(EndToEndTest, ReceivesPliAndRecoversWithoutNack) {
1280 ReceivesPliAndRecovers(0); 1269 ReceivesPliAndRecovers(0);
1281 } 1270 }
1282 1271
1283 TEST_P(EndToEndTest, UnknownRtpPacketGivesUnknownSsrcReturnCode) { 1272 TEST_F(EndToEndTest, UnknownRtpPacketGivesUnknownSsrcReturnCode) {
1284 class PacketInputObserver : public PacketReceiver { 1273 class PacketInputObserver : public PacketReceiver {
1285 public: 1274 public:
1286 explicit PacketInputObserver(PacketReceiver* receiver) 1275 explicit PacketInputObserver(PacketReceiver* receiver)
1287 : receiver_(receiver), delivered_packet_(false, false) {} 1276 : receiver_(receiver), delivered_packet_(false, false) {}
1288 1277
1289 bool Wait() { return delivered_packet_.Wait(kDefaultTimeoutMs); } 1278 bool Wait() { return delivered_packet_.Wait(kDefaultTimeoutMs); }
1290 1279
1291 private: 1280 private:
1292 DeliveryStatus DeliverPacket(MediaType media_type, 1281 DeliveryStatus DeliverPacket(MediaType media_type,
1293 const uint8_t* packet, 1282 const uint8_t* packet,
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 rtc::CriticalSection crit_; 1402 rtc::CriticalSection crit_;
1414 // Must be protected since RTCP can be sent by both the process thread 1403 // Must be protected since RTCP can be sent by both the process thread
1415 // and the pacer thread. 1404 // and the pacer thread.
1416 int sent_rtp_ GUARDED_BY(&crit_); 1405 int sent_rtp_ GUARDED_BY(&crit_);
1417 int sent_rtcp_ GUARDED_BY(&crit_); 1406 int sent_rtcp_ GUARDED_BY(&crit_);
1418 } test(rtcp_mode); 1407 } test(rtcp_mode);
1419 1408
1420 RunBaseTest(&test); 1409 RunBaseTest(&test);
1421 } 1410 }
1422 1411
1423 TEST_P(EndToEndTest, UsesRtcpCompoundMode) { 1412 TEST_F(EndToEndTest, UsesRtcpCompoundMode) {
1424 RespectsRtcpMode(RtcpMode::kCompound); 1413 RespectsRtcpMode(RtcpMode::kCompound);
1425 } 1414 }
1426 1415
1427 TEST_P(EndToEndTest, UsesRtcpReducedSizeMode) { 1416 TEST_F(EndToEndTest, UsesRtcpReducedSizeMode) {
1428 RespectsRtcpMode(RtcpMode::kReducedSize); 1417 RespectsRtcpMode(RtcpMode::kReducedSize);
1429 } 1418 }
1430 1419
1431 // Test sets up a Call multiple senders with different resolutions and SSRCs. 1420 // Test sets up a Call multiple senders with different resolutions and SSRCs.
1432 // Another is set up to receive all three of these with different renderers. 1421 // Another is set up to receive all three of these with different renderers.
1433 class MultiStreamTest { 1422 class MultiStreamTest {
1434 public: 1423 public:
1435 static const size_t kNumStreams = 3; 1424 static const size_t kNumStreams = 3;
1436 struct CodecSettings { 1425 struct CodecSettings {
1437 uint32_t ssrc; 1426 uint32_t ssrc;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 virtual test::DirectTransport* CreateSendTransport(Call* sender_call) { 1530 virtual test::DirectTransport* CreateSendTransport(Call* sender_call) {
1542 return new test::DirectTransport(sender_call); 1531 return new test::DirectTransport(sender_call);
1543 } 1532 }
1544 virtual test::DirectTransport* CreateReceiveTransport(Call* receiver_call) { 1533 virtual test::DirectTransport* CreateReceiveTransport(Call* receiver_call) {
1545 return new test::DirectTransport(receiver_call); 1534 return new test::DirectTransport(receiver_call);
1546 } 1535 }
1547 }; 1536 };
1548 1537
1549 // Each renderer verifies that it receives the expected resolution, and as soon 1538 // Each renderer verifies that it receives the expected resolution, and as soon
1550 // as every renderer has received a frame, the test finishes. 1539 // as every renderer has received a frame, the test finishes.
1551 TEST_P(EndToEndTest, SendsAndReceivesMultipleStreams) { 1540 TEST_F(EndToEndTest, SendsAndReceivesMultipleStreams) {
1552 class VideoOutputObserver : public rtc::VideoSinkInterface<VideoFrame> { 1541 class VideoOutputObserver : public rtc::VideoSinkInterface<VideoFrame> {
1553 public: 1542 public:
1554 VideoOutputObserver(const MultiStreamTest::CodecSettings& settings, 1543 VideoOutputObserver(const MultiStreamTest::CodecSettings& settings,
1555 uint32_t ssrc, 1544 uint32_t ssrc,
1556 test::FrameGeneratorCapturer** frame_generator) 1545 test::FrameGeneratorCapturer** frame_generator)
1557 : settings_(settings), 1546 : settings_(settings),
1558 ssrc_(ssrc), 1547 ssrc_(ssrc),
1559 frame_generator_(frame_generator), 1548 frame_generator_(frame_generator),
1560 done_(false, false) {} 1549 done_(false, false) {}
1561 1550
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 receive_config->renderer = observers_[stream_index].get(); 1595 receive_config->renderer = observers_[stream_index].get();
1607 } 1596 }
1608 1597
1609 private: 1598 private:
1610 std::unique_ptr<VideoOutputObserver> observers_[kNumStreams]; 1599 std::unique_ptr<VideoOutputObserver> observers_[kNumStreams];
1611 } tester; 1600 } tester;
1612 1601
1613 tester.RunTest(); 1602 tester.RunTest();
1614 } 1603 }
1615 1604
1616 TEST_P(EndToEndTest, AssignsTransportSequenceNumbers) { 1605 TEST_F(EndToEndTest, AssignsTransportSequenceNumbers) {
1617 static const int kExtensionId = 5; 1606 static const int kExtensionId = 5;
1618 1607
1619 class RtpExtensionHeaderObserver : public test::DirectTransport { 1608 class RtpExtensionHeaderObserver : public test::DirectTransport {
1620 public: 1609 public:
1621 RtpExtensionHeaderObserver(Call* sender_call, 1610 RtpExtensionHeaderObserver(Call* sender_call,
1622 const uint32_t& first_media_ssrc, 1611 const uint32_t& first_media_ssrc,
1623 const std::map<uint32_t, uint32_t>& ssrc_map) 1612 const std::map<uint32_t, uint32_t>& ssrc_map)
1624 : DirectTransport(sender_call), 1613 : DirectTransport(sender_call),
1625 done_(false, false), 1614 done_(false, false),
1626 parser_(RtpHeaderParser::Create()), 1615 parser_(RtpHeaderParser::Create()),
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1867 } 1856 }
1868 1857
1869 private: 1858 private:
1870 static const int kExtensionId = 5; 1859 static const int kExtensionId = 5;
1871 const bool feedback_enabled_; 1860 const bool feedback_enabled_;
1872 const size_t num_video_streams_; 1861 const size_t num_video_streams_;
1873 const size_t num_audio_streams_; 1862 const size_t num_audio_streams_;
1874 Call* receiver_call_; 1863 Call* receiver_call_;
1875 }; 1864 };
1876 1865
1877 TEST_P(EndToEndTest, VideoReceivesTransportFeedback) { 1866 TEST_F(EndToEndTest, VideoReceivesTransportFeedback) {
1878 TransportFeedbackTester test(true, 1, 0); 1867 TransportFeedbackTester test(true, 1, 0);
1879 RunBaseTest(&test); 1868 RunBaseTest(&test);
1880 } 1869 }
1881 1870
1882 TEST_P(EndToEndTest, VideoTransportFeedbackNotConfigured) { 1871 TEST_F(EndToEndTest, VideoTransportFeedbackNotConfigured) {
1883 TransportFeedbackTester test(false, 1, 0); 1872 TransportFeedbackTester test(false, 1, 0);
1884 RunBaseTest(&test); 1873 RunBaseTest(&test);
1885 } 1874 }
1886 1875
1887 TEST_P(EndToEndTest, AudioReceivesTransportFeedback) { 1876 TEST_F(EndToEndTest, AudioReceivesTransportFeedback) {
1888 TransportFeedbackTester test(true, 0, 1); 1877 TransportFeedbackTester test(true, 0, 1);
1889 RunBaseTest(&test); 1878 RunBaseTest(&test);
1890 } 1879 }
1891 1880
1892 TEST_P(EndToEndTest, AudioTransportFeedbackNotConfigured) { 1881 TEST_F(EndToEndTest, AudioTransportFeedbackNotConfigured) {
1893 TransportFeedbackTester test(false, 0, 1); 1882 TransportFeedbackTester test(false, 0, 1);
1894 RunBaseTest(&test); 1883 RunBaseTest(&test);
1895 } 1884 }
1896 1885
1897 TEST_P(EndToEndTest, AudioVideoReceivesTransportFeedback) { 1886 TEST_F(EndToEndTest, AudioVideoReceivesTransportFeedback) {
1898 TransportFeedbackTester test(true, 1, 1); 1887 TransportFeedbackTester test(true, 1, 1);
1899 RunBaseTest(&test); 1888 RunBaseTest(&test);
1900 } 1889 }
1901 1890
1902 TEST_P(EndToEndTest, ObserversEncodedFrames) { 1891 TEST_F(EndToEndTest, ObserversEncodedFrames) {
1903 class EncodedFrameTestObserver : public EncodedFrameObserver { 1892 class EncodedFrameTestObserver : public EncodedFrameObserver {
1904 public: 1893 public:
1905 EncodedFrameTestObserver() 1894 EncodedFrameTestObserver()
1906 : length_(0), frame_type_(kEmptyFrame), called_(false, false) {} 1895 : length_(0), frame_type_(kEmptyFrame), called_(false, false) {}
1907 virtual ~EncodedFrameTestObserver() {} 1896 virtual ~EncodedFrameTestObserver() {}
1908 1897
1909 virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) { 1898 virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) {
1910 frame_type_ = encoded_frame.frame_type_; 1899 frame_type_ = encoded_frame.frame_type_;
1911 length_ = encoded_frame.length_; 1900 length_ = encoded_frame.length_;
1912 buffer_.reset(new uint8_t[length_]); 1901 buffer_.reset(new uint8_t[length_]);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1967 post_encode_observer.ExpectEqualFrames(pre_decode_observer); 1956 post_encode_observer.ExpectEqualFrames(pre_decode_observer);
1968 1957
1969 Stop(); 1958 Stop();
1970 1959
1971 sender_transport.StopSending(); 1960 sender_transport.StopSending();
1972 receiver_transport.StopSending(); 1961 receiver_transport.StopSending();
1973 1962
1974 DestroyStreams(); 1963 DestroyStreams();
1975 } 1964 }
1976 1965
1977 TEST_P(EndToEndTest, ReceiveStreamSendsRemb) { 1966 TEST_F(EndToEndTest, ReceiveStreamSendsRemb) {
1978 class RembObserver : public test::EndToEndTest { 1967 class RembObserver : public test::EndToEndTest {
1979 public: 1968 public:
1980 RembObserver() : EndToEndTest(kDefaultTimeoutMs) {} 1969 RembObserver() : EndToEndTest(kDefaultTimeoutMs) {}
1981 1970
1982 void ModifyVideoConfigs( 1971 void ModifyVideoConfigs(
1983 VideoSendStream::Config* send_config, 1972 VideoSendStream::Config* send_config,
1984 std::vector<VideoReceiveStream::Config>* receive_configs, 1973 std::vector<VideoReceiveStream::Config>* receive_configs,
1985 VideoEncoderConfig* encoder_config) override { 1974 VideoEncoderConfig* encoder_config) override {
1986 send_config->rtp.extensions.clear(); 1975 send_config->rtp.extensions.clear();
1987 send_config->rtp.extensions.push_back(RtpExtension( 1976 send_config->rtp.extensions.push_back(RtpExtension(
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2058 "non-zero bandwidth stats."; 2047 "non-zero bandwidth stats.";
2059 } 2048 }
2060 2049
2061 private: 2050 private:
2062 Call* sender_call_; 2051 Call* sender_call_;
2063 Call* receiver_call_; 2052 Call* receiver_call_;
2064 bool has_seen_pacer_delay_; 2053 bool has_seen_pacer_delay_;
2065 const bool send_side_bwe_; 2054 const bool send_side_bwe_;
2066 }; 2055 };
2067 2056
2068 TEST_P(EndToEndTest, VerifySendSideBweStats) { 2057 TEST_F(EndToEndTest, VerifySendSideBweStats) {
2069 BandwidthStatsTest test(true); 2058 BandwidthStatsTest test(true);
2070 RunBaseTest(&test); 2059 RunBaseTest(&test);
2071 } 2060 }
2072 2061
2073 TEST_P(EndToEndTest, VerifyRecvSideBweStats) { 2062 TEST_F(EndToEndTest, VerifyRecvSideBweStats) {
2074 BandwidthStatsTest test(false); 2063 BandwidthStatsTest test(false);
2075 RunBaseTest(&test); 2064 RunBaseTest(&test);
2076 } 2065 }
2077 2066
2078 // Verifies that it's possible to limit the send BWE by sending a REMB. 2067 // Verifies that it's possible to limit the send BWE by sending a REMB.
2079 // This is verified by allowing the send BWE to ramp-up to >1000 kbps, 2068 // This is verified by allowing the send BWE to ramp-up to >1000 kbps,
2080 // then have the test generate a REMB of 500 kbps and verify that the send BWE 2069 // then have the test generate a REMB of 500 kbps and verify that the send BWE
2081 // is reduced to exactly 500 kbps. Then a REMB of 1000 kbps is generated and the 2070 // is reduced to exactly 500 kbps. Then a REMB of 1000 kbps is generated and the
2082 // test verifies that the send BWE ramps back up to exactly 1000 kbps. 2071 // test verifies that the send BWE ramps back up to exactly 1000 kbps.
2083 TEST_P(EndToEndTest, RembWithSendSideBwe) { 2072 TEST_F(EndToEndTest, RembWithSendSideBwe) {
2084 class BweObserver : public test::EndToEndTest { 2073 class BweObserver : public test::EndToEndTest {
2085 public: 2074 public:
2086 BweObserver() 2075 BweObserver()
2087 : EndToEndTest(kDefaultTimeoutMs), 2076 : EndToEndTest(kDefaultTimeoutMs),
2088 sender_call_(nullptr), 2077 sender_call_(nullptr),
2089 clock_(Clock::GetRealTimeClock()), 2078 clock_(Clock::GetRealTimeClock()),
2090 sender_ssrc_(0), 2079 sender_ssrc_(0),
2091 remb_bitrate_bps_(1000000), 2080 remb_bitrate_bps_(1000000),
2092 receive_transport_(nullptr), 2081 receive_transport_(nullptr),
2093 stop_event_(false, false), 2082 stop_event_(false, false),
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2200 test::PacketTransport* receive_transport_; 2189 test::PacketTransport* receive_transport_;
2201 rtc::Event stop_event_; 2190 rtc::Event stop_event_;
2202 rtc::PlatformThread poller_thread_; 2191 rtc::PlatformThread poller_thread_;
2203 TestState state_; 2192 TestState state_;
2204 RateLimiter retransmission_rate_limiter_; 2193 RateLimiter retransmission_rate_limiter_;
2205 } test; 2194 } test;
2206 2195
2207 RunBaseTest(&test); 2196 RunBaseTest(&test);
2208 } 2197 }
2209 2198
2210 TEST_P(EndToEndTest, VerifyNackStats) { 2199 TEST_F(EndToEndTest, VerifyNackStats) {
2211 static const int kPacketNumberToDrop = 200; 2200 static const int kPacketNumberToDrop = 200;
2212 class NackObserver : public test::EndToEndTest { 2201 class NackObserver : public test::EndToEndTest {
2213 public: 2202 public:
2214 NackObserver() 2203 NackObserver()
2215 : EndToEndTest(kLongTimeoutMs), 2204 : EndToEndTest(kLongTimeoutMs),
2216 sent_rtp_packets_(0), 2205 sent_rtp_packets_(0),
2217 dropped_rtp_packet_(0), 2206 dropped_rtp_packet_(0),
2218 dropped_rtp_packet_requested_(false), 2207 dropped_rtp_packet_requested_(false),
2219 send_stream_(nullptr), 2208 send_stream_(nullptr),
2220 start_runtime_ms_(-1) {} 2209 start_runtime_ms_(-1) {}
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
2529 2518
2530 int num_red_samples = use_red ? 1 : 0; 2519 int num_red_samples = use_red ? 1 : 0;
2531 EXPECT_EQ(num_red_samples, 2520 EXPECT_EQ(num_red_samples,
2532 metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps")); 2521 metrics::NumSamples("WebRTC.Video.FecBitrateSentInKbps"));
2533 EXPECT_EQ(num_red_samples, 2522 EXPECT_EQ(num_red_samples,
2534 metrics::NumSamples("WebRTC.Video.FecBitrateReceivedInKbps")); 2523 metrics::NumSamples("WebRTC.Video.FecBitrateReceivedInKbps"));
2535 EXPECT_EQ(num_red_samples, 2524 EXPECT_EQ(num_red_samples,
2536 metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent")); 2525 metrics::NumSamples("WebRTC.Video.ReceivedFecPacketsInPercent"));
2537 } 2526 }
2538 2527
2539 TEST_P(EndToEndTest, VerifyHistogramStatsWithRtx) { 2528 TEST_F(EndToEndTest, VerifyHistogramStatsWithRtx) {
2540 const bool kEnabledRtx = true; 2529 const bool kEnabledRtx = true;
2541 const bool kEnabledRed = false; 2530 const bool kEnabledRed = false;
2542 const bool kScreenshare = false; 2531 const bool kScreenshare = false;
2543 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare); 2532 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
2544 } 2533 }
2545 2534
2546 TEST_P(EndToEndTest, VerifyHistogramStatsWithRed) { 2535 TEST_F(EndToEndTest, VerifyHistogramStatsWithRed) {
2547 const bool kEnabledRtx = false; 2536 const bool kEnabledRtx = false;
2548 const bool kEnabledRed = true; 2537 const bool kEnabledRed = true;
2549 const bool kScreenshare = false; 2538 const bool kScreenshare = false;
2550 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare); 2539 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
2551 } 2540 }
2552 2541
2553 TEST_P(EndToEndTest, VerifyHistogramStatsWithScreenshare) { 2542 TEST_F(EndToEndTest, VerifyHistogramStatsWithScreenshare) {
2554 const bool kEnabledRtx = false; 2543 const bool kEnabledRtx = false;
2555 const bool kEnabledRed = false; 2544 const bool kEnabledRed = false;
2556 const bool kScreenshare = true; 2545 const bool kScreenshare = true;
2557 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare); 2546 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
2558 } 2547 }
2559 2548
2560 void EndToEndTest::TestSendsSetSsrcs(size_t num_ssrcs, 2549 void EndToEndTest::TestSendsSetSsrcs(size_t num_ssrcs,
2561 bool send_single_ssrc_first) { 2550 bool send_single_ssrc_first) {
2562 class SendsSetSsrcs : public test::EndToEndTest { 2551 class SendsSetSsrcs : public test::EndToEndTest {
2563 public: 2552 public:
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
2668 size_t ssrcs_to_observe_; 2657 size_t ssrcs_to_observe_;
2669 bool expect_single_ssrc_; 2658 bool expect_single_ssrc_;
2670 2659
2671 VideoSendStream* send_stream_; 2660 VideoSendStream* send_stream_;
2672 VideoEncoderConfig video_encoder_config_all_streams_; 2661 VideoEncoderConfig video_encoder_config_all_streams_;
2673 } test(kVideoSendSsrcs, num_ssrcs, send_single_ssrc_first); 2662 } test(kVideoSendSsrcs, num_ssrcs, send_single_ssrc_first);
2674 2663
2675 RunBaseTest(&test); 2664 RunBaseTest(&test);
2676 } 2665 }
2677 2666
2678 TEST_P(EndToEndTest, ReportsSetEncoderRates) { 2667 TEST_F(EndToEndTest, ReportsSetEncoderRates) {
2679 class EncoderRateStatsTest : public test::EndToEndTest, 2668 class EncoderRateStatsTest : public test::EndToEndTest,
2680 public test::FakeEncoder { 2669 public test::FakeEncoder {
2681 public: 2670 public:
2682 EncoderRateStatsTest() 2671 EncoderRateStatsTest()
2683 : EndToEndTest(kDefaultTimeoutMs), 2672 : EndToEndTest(kDefaultTimeoutMs),
2684 FakeEncoder(Clock::GetRealTimeClock()), 2673 FakeEncoder(Clock::GetRealTimeClock()),
2685 send_stream_(nullptr), 2674 send_stream_(nullptr),
2686 bitrate_kbps_(0) {} 2675 bitrate_kbps_(0) {}
2687 2676
2688 void OnVideoStreamsCreated( 2677 void OnVideoStreamsCreated(
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
2748 2737
2749 private: 2738 private:
2750 rtc::CriticalSection crit_; 2739 rtc::CriticalSection crit_;
2751 VideoSendStream* send_stream_; 2740 VideoSendStream* send_stream_;
2752 uint32_t bitrate_kbps_ GUARDED_BY(crit_); 2741 uint32_t bitrate_kbps_ GUARDED_BY(crit_);
2753 } test; 2742 } test;
2754 2743
2755 RunBaseTest(&test); 2744 RunBaseTest(&test);
2756 } 2745 }
2757 2746
2758 TEST_P(EndToEndTest, GetStats) { 2747 TEST_F(EndToEndTest, GetStats) {
2759 static const int kStartBitrateBps = 3000000; 2748 static const int kStartBitrateBps = 3000000;
2760 static const int kExpectedRenderDelayMs = 20; 2749 static const int kExpectedRenderDelayMs = 20;
2761 2750
2762 class ReceiveStreamRenderer : public rtc::VideoSinkInterface<VideoFrame> { 2751 class ReceiveStreamRenderer : public rtc::VideoSinkInterface<VideoFrame> {
2763 public: 2752 public:
2764 ReceiveStreamRenderer() {} 2753 ReceiveStreamRenderer() {}
2765 2754
2766 private: 2755 private:
2767 void OnFrame(const VideoFrame& video_frame) override {} 2756 void OnFrame(const VideoFrame& video_frame) override {}
2768 }; 2757 };
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
3184 rtc::CriticalSection crit_; 3173 rtc::CriticalSection crit_;
3185 const bool enable_rrtr_; 3174 const bool enable_rrtr_;
3186 const bool enable_target_bitrate_; 3175 const bool enable_target_bitrate_;
3187 int sent_rtcp_sr_; 3176 int sent_rtcp_sr_;
3188 int sent_rtcp_rr_ GUARDED_BY(&crit_); 3177 int sent_rtcp_rr_ GUARDED_BY(&crit_);
3189 int sent_rtcp_rrtr_ GUARDED_BY(&crit_); 3178 int sent_rtcp_rrtr_ GUARDED_BY(&crit_);
3190 bool sent_rtcp_target_bitrate_ GUARDED_BY(&crit_); 3179 bool sent_rtcp_target_bitrate_ GUARDED_BY(&crit_);
3191 int sent_rtcp_dlrr_; 3180 int sent_rtcp_dlrr_;
3192 }; 3181 };
3193 3182
3194 TEST_P(EndToEndTest, TestExtendedReportsWithRrtrWithoutTargetBitrate) { 3183 TEST_F(EndToEndTest, TestExtendedReportsWithRrtrWithoutTargetBitrate) {
3195 RtcpXrObserver test(true, false); 3184 RtcpXrObserver test(true, false);
3196 RunBaseTest(&test); 3185 RunBaseTest(&test);
3197 } 3186 }
3198 3187
3199 TEST_P(EndToEndTest, TestExtendedReportsWithoutRrtrWithoutTargetBitrate) { 3188 TEST_F(EndToEndTest, TestExtendedReportsWithoutRrtrWithoutTargetBitrate) {
3200 RtcpXrObserver test(false, false); 3189 RtcpXrObserver test(false, false);
3201 RunBaseTest(&test); 3190 RunBaseTest(&test);
3202 } 3191 }
3203 3192
3204 TEST_P(EndToEndTest, TestExtendedReportsWithRrtrWithTargetBitrate) { 3193 TEST_F(EndToEndTest, TestExtendedReportsWithRrtrWithTargetBitrate) {
3205 RtcpXrObserver test(true, true); 3194 RtcpXrObserver test(true, true);
3206 RunBaseTest(&test); 3195 RunBaseTest(&test);
3207 } 3196 }
3208 3197
3209 TEST_P(EndToEndTest, TestExtendedReportsWithoutRrtrWithTargetBitrate) { 3198 TEST_F(EndToEndTest, TestExtendedReportsWithoutRrtrWithTargetBitrate) {
3210 RtcpXrObserver test(false, true); 3199 RtcpXrObserver test(false, true);
3211 RunBaseTest(&test); 3200 RunBaseTest(&test);
3212 } 3201 }
3213 3202
3214 TEST_P(EndToEndTest, TestReceivedRtpPacketStats) { 3203 TEST_F(EndToEndTest, TestReceivedRtpPacketStats) {
3215 static const size_t kNumRtpPacketsToSend = 5; 3204 static const size_t kNumRtpPacketsToSend = 5;
3216 class ReceivedRtpStatsObserver : public test::EndToEndTest { 3205 class ReceivedRtpStatsObserver : public test::EndToEndTest {
3217 public: 3206 public:
3218 ReceivedRtpStatsObserver() 3207 ReceivedRtpStatsObserver()
3219 : EndToEndTest(kDefaultTimeoutMs), 3208 : EndToEndTest(kDefaultTimeoutMs),
3220 receive_stream_(nullptr), 3209 receive_stream_(nullptr),
3221 sent_rtp_(0) {} 3210 sent_rtp_(0) {}
3222 3211
3223 private: 3212 private:
3224 void OnVideoStreamsCreated( 3213 void OnVideoStreamsCreated(
(...skipping 19 matching lines...) Expand all
3244 << "Timed out while verifying number of received RTP packets."; 3233 << "Timed out while verifying number of received RTP packets.";
3245 } 3234 }
3246 3235
3247 VideoReceiveStream* receive_stream_; 3236 VideoReceiveStream* receive_stream_;
3248 uint32_t sent_rtp_; 3237 uint32_t sent_rtp_;
3249 } test; 3238 } test;
3250 3239
3251 RunBaseTest(&test); 3240 RunBaseTest(&test);
3252 } 3241 }
3253 3242
3254 TEST_P(EndToEndTest, SendsSetSsrc) { 3243 TEST_F(EndToEndTest, SendsSetSsrc) {
3255 TestSendsSetSsrcs(1, false); 3244 TestSendsSetSsrcs(1, false);
3256 } 3245 }
3257 3246
3258 TEST_P(EndToEndTest, SendsSetSimulcastSsrcs) { 3247 TEST_F(EndToEndTest, SendsSetSimulcastSsrcs) {
3259 TestSendsSetSsrcs(kNumSsrcs, false); 3248 TestSendsSetSsrcs(kNumSsrcs, false);
3260 } 3249 }
3261 3250
3262 TEST_P(EndToEndTest, CanSwitchToUseAllSsrcs) { 3251 TEST_F(EndToEndTest, CanSwitchToUseAllSsrcs) {
3263 TestSendsSetSsrcs(kNumSsrcs, true); 3252 TestSendsSetSsrcs(kNumSsrcs, true);
3264 } 3253 }
3265 3254
3266 TEST_P(EndToEndTest, DISABLED_RedundantPayloadsTransmittedOnAllSsrcs) { 3255 TEST_F(EndToEndTest, DISABLED_RedundantPayloadsTransmittedOnAllSsrcs) {
3267 class ObserveRedundantPayloads: public test::EndToEndTest { 3256 class ObserveRedundantPayloads: public test::EndToEndTest {
3268 public: 3257 public:
3269 ObserveRedundantPayloads() 3258 ObserveRedundantPayloads()
3270 : EndToEndTest(kDefaultTimeoutMs), ssrcs_to_observe_(kNumSsrcs) { 3259 : EndToEndTest(kDefaultTimeoutMs), ssrcs_to_observe_(kNumSsrcs) {
3271 for (size_t i = 0; i < kNumSsrcs; ++i) { 3260 for (size_t i = 0; i < kNumSsrcs; ++i) {
3272 registered_rtx_ssrc_[kSendRtxSsrcs[i]] = true; 3261 registered_rtx_ssrc_[kSendRtxSsrcs[i]] = true;
3273 } 3262 }
3274 } 3263 }
3275 3264
3276 private: 3265 private:
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
3590 << "Timed out waiting for all SSRCs to send packets."; 3579 << "Timed out waiting for all SSRCs to send packets.";
3591 } 3580 }
3592 3581
3593 send_transport.StopSending(); 3582 send_transport.StopSending();
3594 receive_transport.StopSending(); 3583 receive_transport.StopSending();
3595 3584
3596 Stop(); 3585 Stop();
3597 DestroyStreams(); 3586 DestroyStreams();
3598 } 3587 }
3599 3588
3600 TEST_P(EndToEndTest, RestartingSendStreamPreservesRtpState) { 3589 TEST_F(EndToEndTest, RestartingSendStreamPreservesRtpState) {
3601 TestRtpStatePreservation(false, false); 3590 TestRtpStatePreservation(false, false);
3602 } 3591 }
3603 3592
3604 TEST_P(EndToEndTest, RestartingSendStreamPreservesRtpStatesWithRtx) { 3593 TEST_F(EndToEndTest, RestartingSendStreamPreservesRtpStatesWithRtx) {
3605 TestRtpStatePreservation(true, false); 3594 TestRtpStatePreservation(true, false);
3606 } 3595 }
3607 3596
3608 TEST_P(EndToEndTest, RestartingSendStreamKeepsRtpAndRtcpTimestampsSynced) { 3597 TEST_F(EndToEndTest, RestartingSendStreamKeepsRtpAndRtcpTimestampsSynced) {
3609 TestRtpStatePreservation(true, true); 3598 TestRtpStatePreservation(true, true);
3610 } 3599 }
3611 3600
3612 TEST_P(EndToEndTest, RespectsNetworkState) { 3601 TEST_F(EndToEndTest, RespectsNetworkState) {
3613 // TODO(pbos): Remove accepted downtime packets etc. when signaling network 3602 // TODO(pbos): Remove accepted downtime packets etc. when signaling network
3614 // down blocks until no more packets will be sent. 3603 // down blocks until no more packets will be sent.
3615 3604
3616 // Pacer will send from its packet list and then send required padding before 3605 // Pacer will send from its packet list and then send required padding before
3617 // checking paused_ again. This should be enough for one round of pacing, 3606 // checking paused_ again. This should be enough for one round of pacing,
3618 // otherwise increase. 3607 // otherwise increase.
3619 static const int kNumAcceptedDowntimeRtp = 5; 3608 static const int kNumAcceptedDowntimeRtp = 5;
3620 // A single RTCP may be in the pipeline. 3609 // A single RTCP may be in the pipeline.
3621 static const int kNumAcceptedDowntimeRtcp = 1; 3610 static const int kNumAcceptedDowntimeRtcp = 1;
3622 class NetworkStateTest : public test::EndToEndTest, public test::FakeEncoder { 3611 class NetworkStateTest : public test::EndToEndTest, public test::FakeEncoder {
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
3796 NetworkState sender_state_ GUARDED_BY(test_crit_); 3785 NetworkState sender_state_ GUARDED_BY(test_crit_);
3797 int sender_rtp_ GUARDED_BY(test_crit_); 3786 int sender_rtp_ GUARDED_BY(test_crit_);
3798 int sender_rtcp_ GUARDED_BY(test_crit_); 3787 int sender_rtcp_ GUARDED_BY(test_crit_);
3799 int receiver_rtcp_ GUARDED_BY(test_crit_); 3788 int receiver_rtcp_ GUARDED_BY(test_crit_);
3800 int down_frames_ GUARDED_BY(test_crit_); 3789 int down_frames_ GUARDED_BY(test_crit_);
3801 } test; 3790 } test;
3802 3791
3803 RunBaseTest(&test); 3792 RunBaseTest(&test);
3804 } 3793 }
3805 3794
3806 TEST_P(EndToEndTest, CallReportsRttForSender) { 3795 TEST_F(EndToEndTest, CallReportsRttForSender) {
3807 static const int kSendDelayMs = 30; 3796 static const int kSendDelayMs = 30;
3808 static const int kReceiveDelayMs = 70; 3797 static const int kReceiveDelayMs = 70;
3809 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_)); 3798 CreateCalls(Call::Config(&event_log_), Call::Config(&event_log_));
3810 3799
3811 FakeNetworkPipe::Config config; 3800 FakeNetworkPipe::Config config;
3812 config.queue_delay_ms = kSendDelayMs; 3801 config.queue_delay_ms = kSendDelayMs;
3813 test::DirectTransport sender_transport(config, sender_call_.get()); 3802 test::DirectTransport sender_transport(config, sender_call_.get());
3814 config.queue_delay_ms = kReceiveDelayMs; 3803 config.queue_delay_ms = kReceiveDelayMs;
3815 test::DirectTransport receiver_transport(config, receiver_call_.get()); 3804 test::DirectTransport receiver_transport(config, receiver_call_.get());
3816 sender_transport.SetReceiver(receiver_call_->Receiver()); 3805 sender_transport.SetReceiver(receiver_call_->Receiver());
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
3884 3873
3885 Start(); 3874 Start();
3886 SleepMs(kSilenceTimeoutMs); 3875 SleepMs(kSilenceTimeoutMs);
3887 Stop(); 3876 Stop();
3888 3877
3889 sender_transport.StopSending(); 3878 sender_transport.StopSending();
3890 3879
3891 DestroyStreams(); 3880 DestroyStreams();
3892 } 3881 }
3893 3882
3894 TEST_P(EndToEndTest, NewVideoSendStreamsRespectVideoNetworkDown) { 3883 TEST_F(EndToEndTest, NewVideoSendStreamsRespectVideoNetworkDown) {
3895 class UnusedEncoder : public test::FakeEncoder { 3884 class UnusedEncoder : public test::FakeEncoder {
3896 public: 3885 public:
3897 UnusedEncoder() : FakeEncoder(Clock::GetRealTimeClock()) {} 3886 UnusedEncoder() : FakeEncoder(Clock::GetRealTimeClock()) {}
3898 3887
3899 int32_t InitEncode(const VideoCodec* config, 3888 int32_t InitEncode(const VideoCodec* config,
3900 int32_t number_of_cores, 3889 int32_t number_of_cores,
3901 size_t max_payload_size) override { 3890 size_t max_payload_size) override {
3902 EXPECT_GT(config->startBitrate, 0u); 3891 EXPECT_GT(config->startBitrate, 0u);
3903 return 0; 3892 return 0;
3904 } 3893 }
3905 int32_t Encode(const VideoFrame& input_image, 3894 int32_t Encode(const VideoFrame& input_image,
3906 const CodecSpecificInfo* codec_specific_info, 3895 const CodecSpecificInfo* codec_specific_info,
3907 const std::vector<FrameType>* frame_types) override { 3896 const std::vector<FrameType>* frame_types) override {
3908 ADD_FAILURE() << "Unexpected frame encode."; 3897 ADD_FAILURE() << "Unexpected frame encode.";
3909 return test::FakeEncoder::Encode(input_image, codec_specific_info, 3898 return test::FakeEncoder::Encode(input_image, codec_specific_info,
3910 frame_types); 3899 frame_types);
3911 } 3900 }
3912 }; 3901 };
3913 3902
3914 UnusedEncoder unused_encoder; 3903 UnusedEncoder unused_encoder;
3915 UnusedTransport unused_transport; 3904 UnusedTransport unused_transport;
3916 VerifyNewVideoSendStreamsRespectNetworkState( 3905 VerifyNewVideoSendStreamsRespectNetworkState(
3917 MediaType::AUDIO, &unused_encoder, &unused_transport); 3906 MediaType::AUDIO, &unused_encoder, &unused_transport);
3918 } 3907 }
3919 3908
3920 TEST_P(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) { 3909 TEST_F(EndToEndTest, NewVideoSendStreamsIgnoreAudioNetworkDown) {
3921 class RequiredEncoder : public test::FakeEncoder { 3910 class RequiredEncoder : public test::FakeEncoder {
3922 public: 3911 public:
3923 RequiredEncoder() 3912 RequiredEncoder()
3924 : FakeEncoder(Clock::GetRealTimeClock()), encoded_frame_(false) {} 3913 : FakeEncoder(Clock::GetRealTimeClock()), encoded_frame_(false) {}
3925 ~RequiredEncoder() { 3914 ~RequiredEncoder() {
3926 if (!encoded_frame_) { 3915 if (!encoded_frame_) {
3927 ADD_FAILURE() << "Didn't encode an expected frame"; 3916 ADD_FAILURE() << "Didn't encode an expected frame";
3928 } 3917 }
3929 } 3918 }
3930 int32_t Encode(const VideoFrame& input_image, 3919 int32_t Encode(const VideoFrame& input_image,
3931 const CodecSpecificInfo* codec_specific_info, 3920 const CodecSpecificInfo* codec_specific_info,
3932 const std::vector<FrameType>* frame_types) override { 3921 const std::vector<FrameType>* frame_types) override {
3933 encoded_frame_ = true; 3922 encoded_frame_ = true;
3934 return test::FakeEncoder::Encode(input_image, codec_specific_info, 3923 return test::FakeEncoder::Encode(input_image, codec_specific_info,
3935 frame_types); 3924 frame_types);
3936 } 3925 }
3937 3926
3938 private: 3927 private:
3939 bool encoded_frame_; 3928 bool encoded_frame_;
3940 }; 3929 };
3941 3930
3942 RequiredTransport required_transport(true /*rtp*/, false /*rtcp*/); 3931 RequiredTransport required_transport(true /*rtp*/, false /*rtcp*/);
3943 RequiredEncoder required_encoder; 3932 RequiredEncoder required_encoder;
3944 VerifyNewVideoSendStreamsRespectNetworkState( 3933 VerifyNewVideoSendStreamsRespectNetworkState(
3945 MediaType::VIDEO, &required_encoder, &required_transport); 3934 MediaType::VIDEO, &required_encoder, &required_transport);
3946 } 3935 }
3947 3936
3948 TEST_P(EndToEndTest, NewVideoReceiveStreamsRespectVideoNetworkDown) { 3937 TEST_F(EndToEndTest, NewVideoReceiveStreamsRespectVideoNetworkDown) {
3949 UnusedTransport transport; 3938 UnusedTransport transport;
3950 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::AUDIO, &transport); 3939 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::AUDIO, &transport);
3951 } 3940 }
3952 3941
3953 TEST_P(EndToEndTest, NewVideoReceiveStreamsIgnoreAudioNetworkDown) { 3942 TEST_F(EndToEndTest, NewVideoReceiveStreamsIgnoreAudioNetworkDown) {
3954 RequiredTransport transport(false /*rtp*/, true /*rtcp*/); 3943 RequiredTransport transport(false /*rtp*/, true /*rtcp*/);
3955 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::VIDEO, &transport); 3944 VerifyNewVideoReceiveStreamsRespectNetworkState(MediaType::VIDEO, &transport);
3956 } 3945 }
3957 3946
3958 void VerifyEmptyNackConfig(const NackConfig& config) { 3947 void VerifyEmptyNackConfig(const NackConfig& config) {
3959 EXPECT_EQ(0, config.rtp_history_ms) 3948 EXPECT_EQ(0, config.rtp_history_ms)
3960 << "Enabling NACK requires rtcp-fb: nack negotiation."; 3949 << "Enabling NACK requires rtcp-fb: nack negotiation.";
3961 } 3950 }
3962 3951
3963 void VerifyEmptyUlpfecConfig(const UlpfecConfig& config) { 3952 void VerifyEmptyUlpfecConfig(const UlpfecConfig& config) {
3964 EXPECT_EQ(-1, config.ulpfec_payload_type) 3953 EXPECT_EQ(-1, config.ulpfec_payload_type)
3965 << "Enabling ULPFEC requires rtpmap: ulpfec negotiation."; 3954 << "Enabling ULPFEC requires rtpmap: ulpfec negotiation.";
3966 EXPECT_EQ(-1, config.red_payload_type) 3955 EXPECT_EQ(-1, config.red_payload_type)
3967 << "Enabling ULPFEC requires rtpmap: red negotiation."; 3956 << "Enabling ULPFEC requires rtpmap: red negotiation.";
3968 EXPECT_EQ(-1, config.red_rtx_payload_type) 3957 EXPECT_EQ(-1, config.red_rtx_payload_type)
3969 << "Enabling RTX in ULPFEC requires rtpmap: rtx negotiation."; 3958 << "Enabling RTX in ULPFEC requires rtpmap: rtx negotiation.";
3970 } 3959 }
3971 3960
3972 void VerifyEmptyFlexfecConfig( 3961 void VerifyEmptyFlexfecConfig(
3973 const VideoSendStream::Config::Rtp::Flexfec& config) { 3962 const VideoSendStream::Config::Rtp::Flexfec& config) {
3974 EXPECT_EQ(-1, config.payload_type) 3963 EXPECT_EQ(-1, config.payload_type)
3975 << "Enabling FlexFEC requires rtpmap: flexfec negotiation."; 3964 << "Enabling FlexFEC requires rtpmap: flexfec negotiation.";
3976 EXPECT_EQ(0U, config.ssrc) 3965 EXPECT_EQ(0U, config.ssrc)
3977 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; 3966 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation.";
3978 EXPECT_TRUE(config.protected_media_ssrcs.empty()) 3967 EXPECT_TRUE(config.protected_media_ssrcs.empty())
3979 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; 3968 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation.";
3980 } 3969 }
3981 3970
3982 TEST_P(EndToEndTest, VerifyDefaultSendConfigParameters) { 3971 TEST_F(EndToEndTest, VerifyDefaultSendConfigParameters) {
3983 VideoSendStream::Config default_send_config(nullptr); 3972 VideoSendStream::Config default_send_config(nullptr);
3984 EXPECT_EQ(0, default_send_config.rtp.nack.rtp_history_ms) 3973 EXPECT_EQ(0, default_send_config.rtp.nack.rtp_history_ms)
3985 << "Enabling NACK require rtcp-fb: nack negotiation."; 3974 << "Enabling NACK require rtcp-fb: nack negotiation.";
3986 EXPECT_TRUE(default_send_config.rtp.rtx.ssrcs.empty()) 3975 EXPECT_TRUE(default_send_config.rtp.rtx.ssrcs.empty())
3987 << "Enabling RTX requires rtpmap: rtx negotiation."; 3976 << "Enabling RTX requires rtpmap: rtx negotiation.";
3988 EXPECT_TRUE(default_send_config.rtp.extensions.empty()) 3977 EXPECT_TRUE(default_send_config.rtp.extensions.empty())
3989 << "Enabling RTP extensions require negotiation."; 3978 << "Enabling RTP extensions require negotiation.";
3990 3979
3991 VerifyEmptyNackConfig(default_send_config.rtp.nack); 3980 VerifyEmptyNackConfig(default_send_config.rtp.nack);
3992 VerifyEmptyUlpfecConfig(default_send_config.rtp.ulpfec); 3981 VerifyEmptyUlpfecConfig(default_send_config.rtp.ulpfec);
3993 VerifyEmptyFlexfecConfig(default_send_config.rtp.flexfec); 3982 VerifyEmptyFlexfecConfig(default_send_config.rtp.flexfec);
3994 } 3983 }
3995 3984
3996 TEST_P(EndToEndTest, VerifyDefaultVideoReceiveConfigParameters) { 3985 TEST_F(EndToEndTest, VerifyDefaultVideoReceiveConfigParameters) {
3997 VideoReceiveStream::Config default_receive_config(nullptr); 3986 VideoReceiveStream::Config default_receive_config(nullptr);
3998 EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode) 3987 EXPECT_EQ(RtcpMode::kCompound, default_receive_config.rtp.rtcp_mode)
3999 << "Reduced-size RTCP require rtcp-rsize to be negotiated."; 3988 << "Reduced-size RTCP require rtcp-rsize to be negotiated.";
4000 EXPECT_FALSE(default_receive_config.rtp.remb) 3989 EXPECT_FALSE(default_receive_config.rtp.remb)
4001 << "REMB require rtcp-fb: goog-remb to be negotiated."; 3990 << "REMB require rtcp-fb: goog-remb to be negotiated.";
4002 EXPECT_FALSE( 3991 EXPECT_FALSE(
4003 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report) 3992 default_receive_config.rtp.rtcp_xr.receiver_reference_time_report)
4004 << "RTCP XR settings require rtcp-xr to be negotiated."; 3993 << "RTCP XR settings require rtcp-xr to be negotiated.";
4005 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc) 3994 EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc)
4006 << "Enabling RTX requires ssrc-group: FID negotiation"; 3995 << "Enabling RTX requires ssrc-group: FID negotiation";
4007 EXPECT_TRUE(default_receive_config.rtp.rtx_payload_types.empty()) 3996 EXPECT_TRUE(default_receive_config.rtp.rtx_payload_types.empty())
4008 << "Enabling RTX requires rtpmap: rtx negotiation."; 3997 << "Enabling RTX requires rtpmap: rtx negotiation.";
4009 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) 3998 EXPECT_TRUE(default_receive_config.rtp.extensions.empty())
4010 << "Enabling RTP extensions require negotiation."; 3999 << "Enabling RTP extensions require negotiation.";
4011 4000
4012 VerifyEmptyNackConfig(default_receive_config.rtp.nack); 4001 VerifyEmptyNackConfig(default_receive_config.rtp.nack);
4013 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec); 4002 VerifyEmptyUlpfecConfig(default_receive_config.rtp.ulpfec);
4014 } 4003 }
4015 4004
4016 TEST_P(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) { 4005 TEST_F(EndToEndTest, VerifyDefaultFlexfecReceiveConfigParameters) {
4017 test::NullTransport rtcp_send_transport; 4006 test::NullTransport rtcp_send_transport;
4018 FlexfecReceiveStream::Config default_receive_config(&rtcp_send_transport); 4007 FlexfecReceiveStream::Config default_receive_config(&rtcp_send_transport);
4019 EXPECT_EQ(-1, default_receive_config.payload_type) 4008 EXPECT_EQ(-1, default_receive_config.payload_type)
4020 << "Enabling FlexFEC requires rtpmap: flexfec negotiation."; 4009 << "Enabling FlexFEC requires rtpmap: flexfec negotiation.";
4021 EXPECT_EQ(0U, default_receive_config.remote_ssrc) 4010 EXPECT_EQ(0U, default_receive_config.remote_ssrc)
4022 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; 4011 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation.";
4023 EXPECT_TRUE(default_receive_config.protected_media_ssrcs.empty()) 4012 EXPECT_TRUE(default_receive_config.protected_media_ssrcs.empty())
4024 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation."; 4013 << "Enabling FlexFEC requires ssrc-group: FEC-FR negotiation.";
4025 } 4014 }
4026 4015
4027 TEST_P(EndToEndTest, TransportSeqNumOnAudioAndVideo) { 4016 TEST_F(EndToEndTest, TransportSeqNumOnAudioAndVideo) {
4028 static constexpr int kExtensionId = 8; 4017 static constexpr int kExtensionId = 8;
4029 static constexpr size_t kMinPacketsToWaitFor = 50; 4018 static constexpr size_t kMinPacketsToWaitFor = 50;
4030 class TransportSequenceNumberTest : public test::EndToEndTest { 4019 class TransportSequenceNumberTest : public test::EndToEndTest {
4031 public: 4020 public:
4032 TransportSequenceNumberTest() 4021 TransportSequenceNumberTest()
4033 : EndToEndTest(kDefaultTimeoutMs), 4022 : EndToEndTest(kDefaultTimeoutMs),
4034 video_observed_(false), 4023 video_observed_(false),
4035 audio_observed_(false) { 4024 audio_observed_(false) {
4036 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber, 4025 parser_->RegisterRtpHeaderExtension(kRtpExtensionTransportSequenceNumber,
4037 kExtensionId); 4026 kExtensionId);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
4128 video_receive_streams_[0]->EnableEncodedFrameRecording( 4117 video_receive_streams_[0]->EnableEncodedFrameRecording(
4129 OpenFile(AddFile()), 0); 4118 OpenFile(AddFile()), 0);
4130 } else { 4119 } else {
4131 video_receive_streams_[0]->DisableEncodedFrameRecording(); 4120 video_receive_streams_[0]->DisableEncodedFrameRecording();
4132 } 4121 }
4133 } 4122 }
4134 4123
4135 std::vector<std::string> paths_; 4124 std::vector<std::string> paths_;
4136 }; 4125 };
4137 4126
4138 TEST_P(EndToEndLogTest, LogsEncodedFramesWhenRequested) { 4127 TEST_F(EndToEndLogTest, LogsEncodedFramesWhenRequested) {
4139 static const int kNumFramesToRecord = 10; 4128 static const int kNumFramesToRecord = 10;
4140 class LogEncodingObserver : public test::EndToEndTest, 4129 class LogEncodingObserver : public test::EndToEndTest,
4141 public EncodedFrameObserver { 4130 public EncodedFrameObserver {
4142 public: 4131 public:
4143 explicit LogEncodingObserver(EndToEndLogTest* fixture) 4132 explicit LogEncodingObserver(EndToEndLogTest* fixture)
4144 : EndToEndTest(kDefaultTimeoutMs), 4133 : EndToEndTest(kDefaultTimeoutMs),
4145 fixture_(fixture), 4134 fixture_(fixture),
4146 recorded_frames_(0) {} 4135 recorded_frames_(0) {}
4147 4136
4148 void PerformTest() override { 4137 void PerformTest() override {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
4191 std::unique_ptr<VideoEncoder> encoder_; 4180 std::unique_ptr<VideoEncoder> encoder_;
4192 std::unique_ptr<VideoDecoder> decoder_; 4181 std::unique_ptr<VideoDecoder> decoder_;
4193 rtc::CriticalSection crit_; 4182 rtc::CriticalSection crit_;
4194 int recorded_frames_ GUARDED_BY(crit_); 4183 int recorded_frames_ GUARDED_BY(crit_);
4195 } test(this); 4184 } test(this);
4196 4185
4197 RunBaseTest(&test); 4186 RunBaseTest(&test);
4198 } 4187 }
4199 4188
4200 } // namespace webrtc 4189 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698