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

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

Issue 2531383002: Wire up BitrateAllocation to be sent as RTCP TargetBitrate (Closed)
Patch Set: Flaky test, racy shutdown Created 4 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
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 2417 matching lines...) Expand 10 before | Expand all | Expand 10 after
2428 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare); 2428 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
2429 } 2429 }
2430 2430
2431 TEST_P(EndToEndTest, VerifyHistogramStatsWithScreenshare) { 2431 TEST_P(EndToEndTest, VerifyHistogramStatsWithScreenshare) {
2432 const bool kEnabledRtx = false; 2432 const bool kEnabledRtx = false;
2433 const bool kEnabledRed = false; 2433 const bool kEnabledRed = false;
2434 const bool kScreenshare = true; 2434 const bool kScreenshare = true;
2435 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare); 2435 VerifyHistogramStats(kEnabledRtx, kEnabledRed, kScreenshare);
2436 } 2436 }
2437 2437
2438 void EndToEndTest::TestXrReceiverReferenceTimeReport(bool enable_rrtr) { 2438 void EndToEndTest::TestXrReceiverReferenceTimeReport(bool enable_rrtr) {
danilchap 2016/11/29 10:39:32 rename or better fork test since now it is used to
sprang_webrtc 2016/11/29 12:24:01 I briefly explored that but it turned out messier
danilchap 2016/11/29 13:13:14 ok
2439 static const int kNumRtcpReportPacketsToObserve = 5; 2439 static const int kNumRtcpReportPacketsToObserve = 10;
2440 class RtcpXrObserver : public test::EndToEndTest { 2440 class RtcpXrObserver : public test::EndToEndTest {
2441 public: 2441 public:
2442 explicit RtcpXrObserver(bool enable_rrtr) 2442 explicit RtcpXrObserver(bool enable_rrtr)
2443 : EndToEndTest(kDefaultTimeoutMs), 2443 : EndToEndTest(kDefaultTimeoutMs),
2444 enable_rrtr_(enable_rrtr), 2444 enable_rrtr_(enable_rrtr),
2445 sent_rtcp_sr_(0), 2445 sent_rtcp_sr_(0),
2446 sent_rtcp_rr_(0), 2446 sent_rtcp_rr_(0),
2447 sent_rtcp_rrtr_(0), 2447 sent_rtcp_rrtr_(0),
2448 sent_rtcp_target_bitrate_(false),
2448 sent_rtcp_dlrr_(0) {} 2449 sent_rtcp_dlrr_(0) {}
2449 2450
2450 private: 2451 private:
2451 // Receive stream should send RR packets (and RRTR packets if enabled). 2452 // Receive stream should send RR packets (and RRTR packets if enabled).
2452 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override { 2453 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override {
2453 rtc::CritScope lock(&crit_); 2454 rtc::CritScope lock(&crit_);
2454 test::RtcpPacketParser parser; 2455 test::RtcpPacketParser parser;
2455 EXPECT_TRUE(parser.Parse(packet, length)); 2456 EXPECT_TRUE(parser.Parse(packet, length));
2456 2457
2457 sent_rtcp_rr_ += parser.receiver_report()->num_packets(); 2458 sent_rtcp_rr_ += parser.receiver_report()->num_packets();
2458 EXPECT_EQ(0, parser.sender_report()->num_packets()); 2459 EXPECT_EQ(0, parser.sender_report()->num_packets());
2459 EXPECT_GE(1, parser.xr()->num_packets()); 2460 EXPECT_GE(1, parser.xr()->num_packets());
2460 if (parser.xr()->num_packets() > 0) { 2461 if (parser.xr()->num_packets() > 0) {
2461 if (parser.xr()->rrtr()) 2462 if (parser.xr()->rrtr())
2462 ++sent_rtcp_rrtr_; 2463 ++sent_rtcp_rrtr_;
2463 EXPECT_FALSE(parser.xr()->dlrr()); 2464 EXPECT_FALSE(parser.xr()->dlrr());
2464 } 2465 }
2465 2466
2466 return SEND_PACKET; 2467 return SEND_PACKET;
2467 } 2468 }
2468 // Send stream should send SR packets (and DLRR packets if enabled). 2469 // Send stream should send SR packets (and DLRR packets if enabled).
2469 Action OnSendRtcp(const uint8_t* packet, size_t length) override { 2470 Action OnSendRtcp(const uint8_t* packet, size_t length) override {
2470 rtc::CritScope lock(&crit_); 2471 rtc::CritScope lock(&crit_);
2471 test::RtcpPacketParser parser; 2472 test::RtcpPacketParser parser;
2472 EXPECT_TRUE(parser.Parse(packet, length)); 2473 EXPECT_TRUE(parser.Parse(packet, length));
2473 2474
2474 sent_rtcp_sr_ += parser.sender_report()->num_packets(); 2475 sent_rtcp_sr_ += parser.sender_report()->num_packets();
2475 EXPECT_GE(1, parser.xr()->num_packets()); 2476 EXPECT_LE(parser.xr()->num_packets(), 2); // dlrr and/or target bitrate.
2476 if (parser.xr()->num_packets() > 0) { 2477 if (parser.xr()->num_packets() > 0) {
2477 EXPECT_FALSE(parser.xr()->rrtr()); 2478 EXPECT_FALSE(parser.xr()->rrtr());
2478 if (parser.xr()->dlrr()) 2479 if (parser.xr()->dlrr())
2479 ++sent_rtcp_dlrr_; 2480 ++sent_rtcp_dlrr_;
2481 if (parser.xr()->target_bitrate())
2482 sent_rtcp_target_bitrate_ = true;
2480 } 2483 }
2481 2484
2482 if (sent_rtcp_sr_ > kNumRtcpReportPacketsToObserve && 2485 if (sent_rtcp_sr_ > kNumRtcpReportPacketsToObserve &&
2483 sent_rtcp_rr_ > kNumRtcpReportPacketsToObserve) { 2486 sent_rtcp_rr_ > kNumRtcpReportPacketsToObserve &&
2487 sent_rtcp_target_bitrate_) {
2484 if (enable_rrtr_) { 2488 if (enable_rrtr_) {
2485 EXPECT_LT(0, sent_rtcp_rrtr_); 2489 EXPECT_GT(sent_rtcp_rrtr_, 0);
danilchap 2016/11/29 10:39:32 Yep, no need to write expected value first this da
2486 EXPECT_LT(0, sent_rtcp_dlrr_); 2490 EXPECT_GT(sent_rtcp_dlrr_, 0);
2487 } else { 2491 } else {
2488 EXPECT_EQ(0, sent_rtcp_rrtr_); 2492 EXPECT_EQ(sent_rtcp_rrtr_, 0);
2489 EXPECT_EQ(0, sent_rtcp_dlrr_); 2493 EXPECT_EQ(sent_rtcp_dlrr_, 0);
2490 } 2494 }
2491 observation_complete_.Set(); 2495 observation_complete_.Set();
2492 } 2496 }
2493 return SEND_PACKET; 2497 return SEND_PACKET;
2494 } 2498 }
2495 2499
2496 void ModifyVideoConfigs( 2500 void ModifyVideoConfigs(
2497 VideoSendStream::Config* send_config, 2501 VideoSendStream::Config* send_config,
2498 std::vector<VideoReceiveStream::Config>* receive_configs, 2502 std::vector<VideoReceiveStream::Config>* receive_configs,
2499 VideoEncoderConfig* encoder_config) override { 2503 VideoEncoderConfig* encoder_config) override {
2500 (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize; 2504 (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize;
2501 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = 2505 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report =
2502 enable_rrtr_; 2506 enable_rrtr_;
2503 } 2507 }
2504 2508
2505 void PerformTest() override { 2509 void PerformTest() override {
2506 EXPECT_TRUE(Wait()) 2510 EXPECT_TRUE(Wait())
2507 << "Timed out while waiting for RTCP SR/RR packets to be sent."; 2511 << "Timed out while waiting for RTCP SR/RR packets to be sent.";
2508 } 2512 }
2509 2513
2510 rtc::CriticalSection crit_; 2514 rtc::CriticalSection crit_;
2511 bool enable_rrtr_; 2515 bool enable_rrtr_;
2512 int sent_rtcp_sr_; 2516 int sent_rtcp_sr_;
2513 int sent_rtcp_rr_ GUARDED_BY(&crit_); 2517 int sent_rtcp_rr_ GUARDED_BY(&crit_);
2514 int sent_rtcp_rrtr_ GUARDED_BY(&crit_); 2518 int sent_rtcp_rrtr_ GUARDED_BY(&crit_);
2519 bool sent_rtcp_target_bitrate_ GUARDED_BY(&crit_);
2515 int sent_rtcp_dlrr_; 2520 int sent_rtcp_dlrr_;
2516 } test(enable_rrtr); 2521 } test(enable_rrtr);
2517 2522
2518 RunBaseTest(&test); 2523 RunBaseTest(&test);
2519 } 2524 }
2520 2525
2521 void EndToEndTest::TestSendsSetSsrcs(size_t num_ssrcs, 2526 void EndToEndTest::TestSendsSetSsrcs(size_t num_ssrcs,
2522 bool send_single_ssrc_first) { 2527 bool send_single_ssrc_first) {
2523 class SendsSetSsrcs : public test::EndToEndTest { 2528 class SendsSetSsrcs : public test::EndToEndTest {
2524 public: 2529 public:
(...skipping 1516 matching lines...) Expand 10 before | Expand all | Expand 10 after
4041 std::unique_ptr<VideoEncoder> encoder_; 4046 std::unique_ptr<VideoEncoder> encoder_;
4042 std::unique_ptr<VideoDecoder> decoder_; 4047 std::unique_ptr<VideoDecoder> decoder_;
4043 rtc::CriticalSection crit_; 4048 rtc::CriticalSection crit_;
4044 int recorded_frames_ GUARDED_BY(crit_); 4049 int recorded_frames_ GUARDED_BY(crit_);
4045 } test(this); 4050 } test(this);
4046 4051
4047 RunBaseTest(&test); 4052 RunBaseTest(&test);
4048 } 4053 }
4049 4054
4050 } // namespace webrtc 4055 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698