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 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 private: | 321 private: |
322 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 322 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
323 RTPHeader header; | 323 RTPHeader header; |
324 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 324 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
325 | 325 |
326 // Send lossy receive reports to trigger FEC enabling. | 326 // Send lossy receive reports to trigger FEC enabling. |
327 if (send_count_++ % 2 != 0) { | 327 if (send_count_++ % 2 != 0) { |
328 // Receive statistics reporting having lost 50% of the packets. | 328 // Receive statistics reporting having lost 50% of the packets. |
329 FakeReceiveStatistics lossy_receive_stats( | 329 FakeReceiveStatistics lossy_receive_stats( |
330 kSendSsrcs[0], header.sequenceNumber, send_count_ / 2, 127); | 330 kSendSsrcs[0], header.sequenceNumber, send_count_ / 2, 127); |
331 RTCPSender rtcp_sender(0, false, Clock::GetRealTimeClock(), | 331 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), |
332 &lossy_receive_stats, nullptr); | 332 &lossy_receive_stats, nullptr); |
333 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 333 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
334 | 334 |
335 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 335 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
336 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 336 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
337 | 337 |
338 RTCPSender::FeedbackState feedback_state; | 338 RTCPSender::FeedbackState feedback_state; |
339 | 339 |
340 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 340 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
341 } | 341 } |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 private: | 403 private: |
404 Action OnSendRtp(const uint8_t* packet, size_t length) override { | 404 Action OnSendRtp(const uint8_t* packet, size_t length) override { |
405 RTPHeader header; | 405 RTPHeader header; |
406 EXPECT_TRUE(parser_->Parse(packet, length, &header)); | 406 EXPECT_TRUE(parser_->Parse(packet, length, &header)); |
407 | 407 |
408 // Nack second packet after receiving the third one. | 408 // Nack second packet after receiving the third one. |
409 if (++send_count_ == 3) { | 409 if (++send_count_ == 3) { |
410 uint16_t nack_sequence_number = header.sequenceNumber - 1; | 410 uint16_t nack_sequence_number = header.sequenceNumber - 1; |
411 nacked_sequence_number_ = nack_sequence_number; | 411 nacked_sequence_number_ = nack_sequence_number; |
412 NullReceiveStatistics null_stats; | 412 NullReceiveStatistics null_stats; |
413 RTCPSender rtcp_sender( | 413 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats, |
414 0, false, Clock::GetRealTimeClock(), &null_stats, nullptr); | 414 nullptr); |
415 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 415 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
416 | 416 |
417 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 417 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
418 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 418 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
419 | 419 |
420 RTCPSender::FeedbackState feedback_state; | 420 RTCPSender::FeedbackState feedback_state; |
421 | 421 |
422 EXPECT_EQ(0, | 422 EXPECT_EQ(0, |
423 rtcp_sender.SendRTCP( | 423 rtcp_sender.SendRTCP( |
424 feedback_state, kRtcpNack, 1, &nack_sequence_number)); | 424 feedback_state, kRtcpNack, 1, &nack_sequence_number)); |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 | 585 |
586 return SEND_PACKET; | 586 return SEND_PACKET; |
587 } | 587 } |
588 | 588 |
589 void TriggerLossReport(const RTPHeader& header) { | 589 void TriggerLossReport(const RTPHeader& header) { |
590 // Send lossy receive reports to trigger FEC enabling. | 590 // Send lossy receive reports to trigger FEC enabling. |
591 if (packet_count_++ % 2 != 0) { | 591 if (packet_count_++ % 2 != 0) { |
592 // Receive statistics reporting having lost 50% of the packets. | 592 // Receive statistics reporting having lost 50% of the packets. |
593 FakeReceiveStatistics lossy_receive_stats( | 593 FakeReceiveStatistics lossy_receive_stats( |
594 kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); | 594 kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); |
595 RTCPSender rtcp_sender(0, false, Clock::GetRealTimeClock(), | 595 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), |
596 &lossy_receive_stats, nullptr); | 596 &lossy_receive_stats, nullptr); |
597 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 597 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
598 | 598 |
599 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 599 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
600 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 600 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
601 | 601 |
602 RTCPSender::FeedbackState feedback_state; | 602 RTCPSender::FeedbackState feedback_state; |
603 | 603 |
604 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 604 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
605 } | 605 } |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 kBeforeSuspend, | 816 kBeforeSuspend, |
817 kDuringSuspend, | 817 kDuringSuspend, |
818 kWaitingForPacket, | 818 kWaitingForPacket, |
819 kWaitingForStats | 819 kWaitingForStats |
820 }; | 820 }; |
821 | 821 |
822 virtual void SendRtcpFeedback(int remb_value) | 822 virtual void SendRtcpFeedback(int remb_value) |
823 EXCLUSIVE_LOCKS_REQUIRED(crit_) { | 823 EXCLUSIVE_LOCKS_REQUIRED(crit_) { |
824 FakeReceiveStatistics receive_stats( | 824 FakeReceiveStatistics receive_stats( |
825 kSendSsrcs[0], last_sequence_number_, rtp_count_, 0); | 825 kSendSsrcs[0], last_sequence_number_, rtp_count_, 0); |
826 RTCPSender rtcp_sender(0, false, clock_, &receive_stats, nullptr); | 826 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr); |
827 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 827 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
828 | 828 |
829 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 829 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
830 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 830 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
831 if (remb_value > 0) { | 831 if (remb_value > 0) { |
832 rtcp_sender.SetREMBStatus(true); | 832 rtcp_sender.SetREMBStatus(true); |
833 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); | 833 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); |
834 } | 834 } |
835 RTCPSender::FeedbackState feedback_state; | 835 RTCPSender::FeedbackState feedback_state; |
836 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 836 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
875 | 875 |
876 Action OnSendRtcp(const uint8_t* packet, size_t length) override { | 876 Action OnSendRtcp(const uint8_t* packet, size_t length) override { |
877 rtc::CritScope lock(&crit_); | 877 rtc::CritScope lock(&crit_); |
878 const int kVideoMutedThresholdMs = 10000; | 878 const int kVideoMutedThresholdMs = 10000; |
879 if (last_packet_time_ms_ > 0 && | 879 if (last_packet_time_ms_ > 0 && |
880 clock_->TimeInMilliseconds() - last_packet_time_ms_ > | 880 clock_->TimeInMilliseconds() - last_packet_time_ms_ > |
881 kVideoMutedThresholdMs) | 881 kVideoMutedThresholdMs) |
882 observation_complete_->Set(); | 882 observation_complete_->Set(); |
883 // Receive statistics reporting having lost 50% of the packets. | 883 // Receive statistics reporting having lost 50% of the packets. |
884 FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0); | 884 FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0); |
885 RTCPSender rtcp_sender(0, false, Clock::GetRealTimeClock(), | 885 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, |
886 &receive_stats, nullptr); | 886 nullptr); |
887 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 887 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
888 | 888 |
889 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 889 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); |
890 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 890 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
891 | 891 |
892 RTCPSender::FeedbackState feedback_state; | 892 RTCPSender::FeedbackState feedback_state; |
893 | 893 |
894 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 894 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
895 return SEND_PACKET; | 895 return SEND_PACKET; |
896 } | 896 } |
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1891 EXPECT_TRUE(vp9videoHeader->flexible_mode); | 1891 EXPECT_TRUE(vp9videoHeader->flexible_mode); |
1892 observation_complete_->Set(); | 1892 observation_complete_->Set(); |
1893 } | 1893 } |
1894 | 1894 |
1895 } test; | 1895 } test; |
1896 | 1896 |
1897 RunBaseTest(&test); | 1897 RunBaseTest(&test); |
1898 } | 1898 } |
1899 | 1899 |
1900 } // namespace webrtc | 1900 } // namespace webrtc |
OLD | NEW |