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> // max | 10 #include <algorithm> // max |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 507 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
508 RTPHeader header; | 508 RTPHeader header; |
509 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 509 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
510 | 510 |
511 // Nack second packet after receiving the third one. | 511 // Nack second packet after receiving the third one. |
512 if (++send_count_ == 3) { | 512 if (++send_count_ == 3) { |
513 uint16_t nack_sequence_number = header.sequenceNumber - 1; | 513 uint16_t nack_sequence_number = header.sequenceNumber - 1; |
514 nacked_sequence_number_ = nack_sequence_number; | 514 nacked_sequence_number_ = nack_sequence_number; |
515 NullReceiveStatistics null_stats; | 515 NullReceiveStatistics null_stats; |
516 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats, | 516 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats, |
517 nullptr, nullptr, transport_adapter_.get()); | 517 nullptr, transport_adapter_.get()); |
518 | 518 |
519 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); | 519 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); |
520 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); | 520 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); |
521 | 521 |
522 RTCPSender::FeedbackState feedback_state; | 522 RTCPSender::FeedbackState feedback_state; |
523 | 523 |
524 EXPECT_EQ(0, | 524 EXPECT_EQ(0, |
525 rtcp_sender.SendRTCP( | 525 rtcp_sender.SendRTCP( |
526 feedback_state, kRtcpNack, 1, &nack_sequence_number)); | 526 feedback_state, kRtcpNack, 1, &nack_sequence_number)); |
527 } | 527 } |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 return SEND_PACKET; | 694 return SEND_PACKET; |
695 } | 695 } |
696 | 696 |
697 void TriggerLossReport(const RTPHeader& header) { | 697 void TriggerLossReport(const RTPHeader& header) { |
698 // Send lossy receive reports to trigger FEC enabling. | 698 // Send lossy receive reports to trigger FEC enabling. |
699 if (packet_count_++ % 2 != 0) { | 699 if (packet_count_++ % 2 != 0) { |
700 // Receive statistics reporting having lost 50% of the packets. | 700 // Receive statistics reporting having lost 50% of the packets. |
701 FakeReceiveStatistics lossy_receive_stats( | 701 FakeReceiveStatistics lossy_receive_stats( |
702 kVideoSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); | 702 kVideoSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); |
703 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), | 703 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), |
704 &lossy_receive_stats, nullptr, nullptr, | 704 &lossy_receive_stats, nullptr, |
705 transport_adapter_.get()); | 705 transport_adapter_.get()); |
706 | 706 |
707 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); | 707 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); |
708 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); | 708 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); |
709 | 709 |
710 RTCPSender::FeedbackState feedback_state; | 710 RTCPSender::FeedbackState feedback_state; |
711 | 711 |
712 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 712 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
713 } | 713 } |
714 } | 714 } |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 kBeforeSuspend, | 917 kBeforeSuspend, |
918 kDuringSuspend, | 918 kDuringSuspend, |
919 kWaitingForPacket, | 919 kWaitingForPacket, |
920 kWaitingForStats | 920 kWaitingForStats |
921 }; | 921 }; |
922 | 922 |
923 virtual void SendRtcpFeedback(int remb_value) | 923 virtual void SendRtcpFeedback(int remb_value) |
924 EXCLUSIVE_LOCKS_REQUIRED(crit_) { | 924 EXCLUSIVE_LOCKS_REQUIRED(crit_) { |
925 FakeReceiveStatistics receive_stats(kVideoSendSsrcs[0], | 925 FakeReceiveStatistics receive_stats(kVideoSendSsrcs[0], |
926 last_sequence_number_, rtp_count_, 0); | 926 last_sequence_number_, rtp_count_, 0); |
927 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr, nullptr, | 927 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr, |
928 transport_adapter_.get()); | 928 transport_adapter_.get()); |
929 | 929 |
930 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); | 930 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); |
931 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); | 931 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); |
932 if (remb_value > 0) { | 932 if (remb_value > 0) { |
933 rtcp_sender.SetREMBStatus(true); | 933 rtcp_sender.SetREMBStatus(true); |
934 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); | 934 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); |
935 } | 935 } |
936 RTCPSender::FeedbackState feedback_state; | 936 RTCPSender::FeedbackState feedback_state; |
937 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 937 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
974 Action OnSendRtcp(const uint8_t* packet, size_t length) override { | 974 Action OnSendRtcp(const uint8_t* packet, size_t length) override { |
975 rtc::CritScope lock(&crit_); | 975 rtc::CritScope lock(&crit_); |
976 const int kVideoMutedThresholdMs = 10000; | 976 const int kVideoMutedThresholdMs = 10000; |
977 if (last_packet_time_ms_ > 0 && | 977 if (last_packet_time_ms_ > 0 && |
978 clock_->TimeInMilliseconds() - last_packet_time_ms_ > | 978 clock_->TimeInMilliseconds() - last_packet_time_ms_ > |
979 kVideoMutedThresholdMs) | 979 kVideoMutedThresholdMs) |
980 observation_complete_.Set(); | 980 observation_complete_.Set(); |
981 // Receive statistics reporting having lost 50% of the packets. | 981 // Receive statistics reporting having lost 50% of the packets. |
982 FakeReceiveStatistics receive_stats(kVideoSendSsrcs[0], 1, 1, 0); | 982 FakeReceiveStatistics receive_stats(kVideoSendSsrcs[0], 1, 1, 0); |
983 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, | 983 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, |
984 nullptr, nullptr, transport_adapter_.get()); | 984 nullptr, transport_adapter_.get()); |
985 | 985 |
986 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); | 986 rtcp_sender.SetRTCPStatus(RtcpMode::kReducedSize); |
987 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); | 987 rtcp_sender.SetRemoteSSRC(kVideoSendSsrcs[0]); |
988 | 988 |
989 RTCPSender::FeedbackState feedback_state; | 989 RTCPSender::FeedbackState feedback_state; |
990 | 990 |
991 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 991 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
992 return SEND_PACKET; | 992 return SEND_PACKET; |
993 } | 993 } |
994 | 994 |
(...skipping 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2315 observation_complete_.Set(); | 2315 observation_complete_.Set(); |
2316 } | 2316 } |
2317 } | 2317 } |
2318 } test; | 2318 } test; |
2319 | 2319 |
2320 RunBaseTest(&test); | 2320 RunBaseTest(&test); |
2321 } | 2321 } |
2322 #endif | 2322 #endif |
2323 | 2323 |
2324 } // namespace webrtc | 2324 } // namespace webrtc |
OLD | NEW |