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 975 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 class PacketInputObserver : public PacketReceiver { | 986 class PacketInputObserver : public PacketReceiver { |
987 public: | 987 public: |
988 explicit PacketInputObserver(PacketReceiver* receiver) | 988 explicit PacketInputObserver(PacketReceiver* receiver) |
989 : receiver_(receiver), delivered_packet_(EventWrapper::Create()) {} | 989 : receiver_(receiver), delivered_packet_(EventWrapper::Create()) {} |
990 | 990 |
991 EventTypeWrapper Wait() { | 991 EventTypeWrapper Wait() { |
992 return delivered_packet_->Wait(kDefaultTimeoutMs); | 992 return delivered_packet_->Wait(kDefaultTimeoutMs); |
993 } | 993 } |
994 | 994 |
995 private: | 995 private: |
996 DeliveryStatus DeliverPacket(MediaType media_type, const uint8_t* packet, | 996 DeliveryStatus DeliverPacket(MediaType media_type, |
997 size_t length) override { | 997 const uint8_t* packet, |
| 998 size_t length, |
| 999 const PacketTime& packet_time) override { |
998 if (RtpHeaderParser::IsRtcp(packet, length)) { | 1000 if (RtpHeaderParser::IsRtcp(packet, length)) { |
999 return receiver_->DeliverPacket(media_type, packet, length); | 1001 return receiver_->DeliverPacket(media_type, packet, length, |
| 1002 packet_time); |
1000 } else { | 1003 } else { |
1001 DeliveryStatus delivery_status = | 1004 DeliveryStatus delivery_status = |
1002 receiver_->DeliverPacket(media_type, packet, length); | 1005 receiver_->DeliverPacket(media_type, packet, length, packet_time); |
1003 EXPECT_EQ(DELIVERY_UNKNOWN_SSRC, delivery_status); | 1006 EXPECT_EQ(DELIVERY_UNKNOWN_SSRC, delivery_status); |
1004 delivered_packet_->Set(); | 1007 delivered_packet_->Set(); |
1005 return delivery_status; | 1008 return delivery_status; |
1006 } | 1009 } |
1007 } | 1010 } |
1008 | 1011 |
1009 PacketReceiver* receiver_; | 1012 PacketReceiver* receiver_; |
1010 rtc::scoped_ptr<EventWrapper> delivered_packet_; | 1013 rtc::scoped_ptr<EventWrapper> delivered_packet_; |
1011 }; | 1014 }; |
1012 | 1015 |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1545 | 1548 |
1546 TEST_F(EndToEndTest, VerifyBandwidthStats) { | 1549 TEST_F(EndToEndTest, VerifyBandwidthStats) { |
1547 class RtcpObserver : public test::EndToEndTest, public PacketReceiver { | 1550 class RtcpObserver : public test::EndToEndTest, public PacketReceiver { |
1548 public: | 1551 public: |
1549 RtcpObserver() | 1552 RtcpObserver() |
1550 : EndToEndTest(kDefaultTimeoutMs), | 1553 : EndToEndTest(kDefaultTimeoutMs), |
1551 sender_call_(nullptr), | 1554 sender_call_(nullptr), |
1552 receiver_call_(nullptr), | 1555 receiver_call_(nullptr), |
1553 has_seen_pacer_delay_(false) {} | 1556 has_seen_pacer_delay_(false) {} |
1554 | 1557 |
1555 DeliveryStatus DeliverPacket(MediaType media_type, const uint8_t* packet, | 1558 DeliveryStatus DeliverPacket(MediaType media_type, |
1556 size_t length) override { | 1559 const uint8_t* packet, |
| 1560 size_t length, |
| 1561 const PacketTime& packet_time) override { |
1557 Call::Stats sender_stats = sender_call_->GetStats(); | 1562 Call::Stats sender_stats = sender_call_->GetStats(); |
1558 Call::Stats receiver_stats = receiver_call_->GetStats(); | 1563 Call::Stats receiver_stats = receiver_call_->GetStats(); |
1559 if (!has_seen_pacer_delay_) | 1564 if (!has_seen_pacer_delay_) |
1560 has_seen_pacer_delay_ = sender_stats.pacer_delay_ms > 0; | 1565 has_seen_pacer_delay_ = sender_stats.pacer_delay_ms > 0; |
1561 if (sender_stats.send_bandwidth_bps > 0 && | 1566 if (sender_stats.send_bandwidth_bps > 0 && |
1562 receiver_stats.recv_bandwidth_bps > 0 && has_seen_pacer_delay_) { | 1567 receiver_stats.recv_bandwidth_bps > 0 && has_seen_pacer_delay_) { |
1563 observation_complete_->Set(); | 1568 observation_complete_->Set(); |
1564 } | 1569 } |
1565 return receiver_call_->Receiver()->DeliverPacket(media_type, packet, | 1570 return receiver_call_->Receiver()->DeliverPacket(media_type, packet, |
1566 length); | 1571 length, packet_time); |
1567 } | 1572 } |
1568 | 1573 |
1569 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { | 1574 void OnCallsCreated(Call* sender_call, Call* receiver_call) override { |
1570 sender_call_ = sender_call; | 1575 sender_call_ = sender_call; |
1571 receiver_call_ = receiver_call; | 1576 receiver_call_ = receiver_call; |
1572 } | 1577 } |
1573 | 1578 |
1574 void PerformTest() override { | 1579 void PerformTest() override { |
1575 EXPECT_EQ(kEventSignaled, Wait()) << "Timed out while waiting for " | 1580 EXPECT_EQ(kEventSignaled, Wait()) << "Timed out while waiting for " |
1576 "non-zero bandwidth stats."; | 1581 "non-zero bandwidth stats."; |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1712 start_runtime_ms_(-1) {} | 1717 start_runtime_ms_(-1) {} |
1713 | 1718 |
1714 private: | 1719 private: |
1715 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 1720 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
1716 if (MinMetricRunTimePassed()) | 1721 if (MinMetricRunTimePassed()) |
1717 observation_complete_->Set(); | 1722 observation_complete_->Set(); |
1718 | 1723 |
1719 return SEND_PACKET; | 1724 return SEND_PACKET; |
1720 } | 1725 } |
1721 | 1726 |
1722 DeliveryStatus DeliverPacket(MediaType media_type, const uint8_t* packet, | 1727 DeliveryStatus DeliverPacket(MediaType media_type, |
1723 size_t length) override { | 1728 const uint8_t* packet, |
| 1729 size_t length, |
| 1730 const PacketTime& packet_time) override { |
1724 // GetStats calls GetSendChannelRtcpStatistics | 1731 // GetStats calls GetSendChannelRtcpStatistics |
1725 // (via VideoSendStream::GetRtt) which updates ReportBlockStats used by | 1732 // (via VideoSendStream::GetRtt) which updates ReportBlockStats used by |
1726 // WebRTC.Video.SentPacketsLostInPercent. | 1733 // WebRTC.Video.SentPacketsLostInPercent. |
1727 // TODO(asapersson): Remove dependency on calling GetStats. | 1734 // TODO(asapersson): Remove dependency on calling GetStats. |
1728 sender_call_->GetStats(); | 1735 sender_call_->GetStats(); |
1729 return receiver_call_->Receiver()->DeliverPacket(media_type, packet, | 1736 return receiver_call_->Receiver()->DeliverPacket(media_type, packet, |
1730 length); | 1737 length, packet_time); |
1731 } | 1738 } |
1732 | 1739 |
1733 bool MinMetricRunTimePassed() { | 1740 bool MinMetricRunTimePassed() { |
1734 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); | 1741 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); |
1735 if (start_runtime_ms_ == -1) { | 1742 if (start_runtime_ms_ == -1) { |
1736 start_runtime_ms_ = now; | 1743 start_runtime_ms_ = now; |
1737 return false; | 1744 return false; |
1738 } | 1745 } |
1739 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; | 1746 int64_t elapsed_sec = (now - start_runtime_ms_) / 1000; |
1740 return elapsed_sec > metrics::kMinRunTimeInSeconds * 2; | 1747 return elapsed_sec > metrics::kMinRunTimeInSeconds * 2; |
(...skipping 1299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3040 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) | 3047 EXPECT_TRUE(default_receive_config.rtp.rtx.empty()) |
3041 << "Enabling RTX requires rtpmap: rtx negotiation."; | 3048 << "Enabling RTX requires rtpmap: rtx negotiation."; |
3042 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) | 3049 EXPECT_TRUE(default_receive_config.rtp.extensions.empty()) |
3043 << "Enabling RTP extensions require negotiation."; | 3050 << "Enabling RTP extensions require negotiation."; |
3044 | 3051 |
3045 VerifyEmptyNackConfig(default_receive_config.rtp.nack); | 3052 VerifyEmptyNackConfig(default_receive_config.rtp.nack); |
3046 VerifyEmptyFecConfig(default_receive_config.rtp.fec); | 3053 VerifyEmptyFecConfig(default_receive_config.rtp.fec); |
3047 } | 3054 } |
3048 | 3055 |
3049 } // namespace webrtc | 3056 } // namespace webrtc |
OLD | NEW |