OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |