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 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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(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(kRtcpReducedSize); |
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 } |
342 | 342 |
343 int encapsulated_payload_type = -1; | 343 int encapsulated_payload_type = -1; |
344 if (header.payloadType == kRedPayloadType) { | 344 if (header.payloadType == kRedPayloadType) { |
345 encapsulated_payload_type = | 345 encapsulated_payload_type = |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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(false, Clock::GetRealTimeClock(), &null_stats, | 413 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &null_stats, |
414 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(kRtcpReducedSize); |
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)); |
425 } | 425 } |
426 | 426 |
427 uint16_t sequence_number = header.sequenceNumber; | 427 uint16_t sequence_number = header.sequenceNumber; |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 void TriggerLossReport(const RTPHeader& header) { | 594 void TriggerLossReport(const RTPHeader& header) { |
595 // Send lossy receive reports to trigger FEC enabling. | 595 // Send lossy receive reports to trigger FEC enabling. |
596 if (packet_count_++ % 2 != 0) { | 596 if (packet_count_++ % 2 != 0) { |
597 // Receive statistics reporting having lost 50% of the packets. | 597 // Receive statistics reporting having lost 50% of the packets. |
598 FakeReceiveStatistics lossy_receive_stats( | 598 FakeReceiveStatistics lossy_receive_stats( |
599 kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); | 599 kSendSsrcs[0], header.sequenceNumber, packet_count_ / 2, 127); |
600 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), | 600 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), |
601 &lossy_receive_stats, nullptr); | 601 &lossy_receive_stats, nullptr); |
602 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 602 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
603 | 603 |
604 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 604 rtcp_sender.SetRTCPStatus(kRtcpReducedSize); |
605 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 605 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
606 | 606 |
607 RTCPSender::FeedbackState feedback_state; | 607 RTCPSender::FeedbackState feedback_state; |
608 | 608 |
609 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 609 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
610 } | 610 } |
611 } | 611 } |
612 | 612 |
613 virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) { | 613 virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) { |
614 // Increase frame size for next encoded frame, in the context of the | 614 // Increase frame size for next encoded frame, in the context of the |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 kWaitingForStats | 824 kWaitingForStats |
825 }; | 825 }; |
826 | 826 |
827 virtual void SendRtcpFeedback(int remb_value) | 827 virtual void SendRtcpFeedback(int remb_value) |
828 EXCLUSIVE_LOCKS_REQUIRED(crit_) { | 828 EXCLUSIVE_LOCKS_REQUIRED(crit_) { |
829 FakeReceiveStatistics receive_stats( | 829 FakeReceiveStatistics receive_stats( |
830 kSendSsrcs[0], last_sequence_number_, rtp_count_, 0); | 830 kSendSsrcs[0], last_sequence_number_, rtp_count_, 0); |
831 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr); | 831 RTCPSender rtcp_sender(false, clock_, &receive_stats, nullptr); |
832 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 832 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
833 | 833 |
834 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 834 rtcp_sender.SetRTCPStatus(kRtcpReducedSize); |
835 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 835 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
836 if (remb_value > 0) { | 836 if (remb_value > 0) { |
837 rtcp_sender.SetREMBStatus(true); | 837 rtcp_sender.SetREMBStatus(true); |
838 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); | 838 rtcp_sender.SetREMBData(remb_value, std::vector<uint32_t>()); |
839 } | 839 } |
840 RTCPSender::FeedbackState feedback_state; | 840 RTCPSender::FeedbackState feedback_state; |
841 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 841 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
842 } | 842 } |
843 | 843 |
844 internal::TransportAdapter transport_adapter_; | 844 internal::TransportAdapter transport_adapter_; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 if (last_packet_time_ms_ > 0 && | 884 if (last_packet_time_ms_ > 0 && |
885 clock_->TimeInMilliseconds() - last_packet_time_ms_ > | 885 clock_->TimeInMilliseconds() - last_packet_time_ms_ > |
886 kVideoMutedThresholdMs) | 886 kVideoMutedThresholdMs) |
887 observation_complete_->Set(); | 887 observation_complete_->Set(); |
888 // Receive statistics reporting having lost 50% of the packets. | 888 // Receive statistics reporting having lost 50% of the packets. |
889 FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0); | 889 FakeReceiveStatistics receive_stats(kSendSsrcs[0], 1, 1, 0); |
890 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, | 890 RTCPSender rtcp_sender(false, Clock::GetRealTimeClock(), &receive_stats, |
891 nullptr); | 891 nullptr); |
892 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); | 892 EXPECT_EQ(0, rtcp_sender.RegisterSendTransport(&transport_adapter_)); |
893 | 893 |
894 rtcp_sender.SetRTCPStatus(kRtcpNonCompound); | 894 rtcp_sender.SetRTCPStatus(kRtcpReducedSize); |
895 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); | 895 rtcp_sender.SetRemoteSSRC(kSendSsrcs[0]); |
896 | 896 |
897 RTCPSender::FeedbackState feedback_state; | 897 RTCPSender::FeedbackState feedback_state; |
898 | 898 |
899 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); | 899 EXPECT_EQ(0, rtcp_sender.SendRTCP(feedback_state, kRtcpRr)); |
900 return SEND_PACKET; | 900 return SEND_PACKET; |
901 } | 901 } |
902 | 902 |
903 void SetReceivers(PacketReceiver* send_transport_receiver, | 903 void SetReceivers(PacketReceiver* send_transport_receiver, |
904 PacketReceiver* receive_transport_receiver) override { | 904 PacketReceiver* receive_transport_receiver) override { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
945 public: | 945 public: |
946 BitrateObserver() | 946 BitrateObserver() |
947 : SendTest(kDefaultTimeoutMs), | 947 : SendTest(kDefaultTimeoutMs), |
948 feedback_transport_(ReceiveTransport()), | 948 feedback_transport_(ReceiveTransport()), |
949 bitrate_capped_(false) { | 949 bitrate_capped_(false) { |
950 RtpRtcp::Configuration config; | 950 RtpRtcp::Configuration config; |
951 feedback_transport_.Enable(); | 951 feedback_transport_.Enable(); |
952 config.outgoing_transport = &feedback_transport_; | 952 config.outgoing_transport = &feedback_transport_; |
953 rtp_rtcp_.reset(RtpRtcp::CreateRtpRtcp(config)); | 953 rtp_rtcp_.reset(RtpRtcp::CreateRtpRtcp(config)); |
954 rtp_rtcp_->SetREMBStatus(true); | 954 rtp_rtcp_->SetREMBStatus(true); |
955 rtp_rtcp_->SetRTCPStatus(kRtcpNonCompound); | 955 rtp_rtcp_->SetRTCPStatus(kRtcpReducedSize); |
956 } | 956 } |
957 | 957 |
958 void OnStreamsCreated( | 958 void OnStreamsCreated( |
959 VideoSendStream* send_stream, | 959 VideoSendStream* send_stream, |
960 const std::vector<VideoReceiveStream*>& receive_streams) override { | 960 const std::vector<VideoReceiveStream*>& receive_streams) override { |
961 stream_ = send_stream; | 961 stream_ = send_stream; |
962 } | 962 } |
963 | 963 |
964 private: | 964 private: |
965 DeliveryStatus DeliverPacket(MediaType media_type, | 965 DeliveryStatus DeliverPacket(MediaType media_type, |
(...skipping 932 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1898 EXPECT_TRUE(vp9videoHeader->flexible_mode); | 1898 EXPECT_TRUE(vp9videoHeader->flexible_mode); |
1899 observation_complete_->Set(); | 1899 observation_complete_->Set(); |
1900 } | 1900 } |
1901 | 1901 |
1902 } test; | 1902 } test; |
1903 | 1903 |
1904 RunBaseTest(&test); | 1904 RunBaseTest(&test); |
1905 } | 1905 } |
1906 | 1906 |
1907 } // namespace webrtc | 1907 } // namespace webrtc |
OLD | NEW |