| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 | 10 |
| (...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 | 862 |
| 863 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) { | 863 TEST_F(RtcpReceiverTest, TmmbrPacketAccepted) { |
| 864 const uint32_t kMediaFlowSsrc = 0x2040608; | 864 const uint32_t kMediaFlowSsrc = 0x2040608; |
| 865 const uint32_t kSenderSsrc = 0x10203; | 865 const uint32_t kSenderSsrc = 0x10203; |
| 866 std::set<uint32_t> ssrcs; | 866 std::set<uint32_t> ssrcs; |
| 867 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. | 867 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. |
| 868 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); | 868 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); |
| 869 | 869 |
| 870 rtcp::Tmmbr tmmbr; | 870 rtcp::Tmmbr tmmbr; |
| 871 tmmbr.From(kSenderSsrc); | 871 tmmbr.From(kSenderSsrc); |
| 872 tmmbr.To(kMediaFlowSsrc); | 872 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 30000, 0)); |
| 873 tmmbr.WithBitrateKbps(30); | |
| 874 | 873 |
| 875 rtcp::SenderReport sr; | 874 rtcp::SenderReport sr; |
| 876 sr.From(kSenderSsrc); | 875 sr.From(kSenderSsrc); |
| 877 sr.Append(&tmmbr); | 876 sr.Append(&tmmbr); |
| 878 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); | 877 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); |
| 879 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); | 878 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); |
| 880 | 879 |
| 881 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); | 880 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); |
| 882 TMMBRSet candidate_set; | 881 TMMBRSet candidate_set; |
| 883 candidate_set.VerifyAndAllocateSet(1); | 882 candidate_set.VerifyAndAllocateSet(1); |
| 884 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set)); | 883 EXPECT_EQ(1, rtcp_receiver_->TMMBRReceived(1, 0, &candidate_set)); |
| 885 EXPECT_LT(0U, candidate_set.Tmmbr(0)); | 884 EXPECT_LT(0U, candidate_set.Tmmbr(0)); |
| 886 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0)); | 885 EXPECT_EQ(kSenderSsrc, candidate_set.Ssrc(0)); |
| 887 } | 886 } |
| 888 | 887 |
| 889 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) { | 888 TEST_F(RtcpReceiverTest, TmmbrPacketNotForUsIgnored) { |
| 890 const uint32_t kMediaFlowSsrc = 0x2040608; | 889 const uint32_t kMediaFlowSsrc = 0x2040608; |
| 891 const uint32_t kSenderSsrc = 0x10203; | 890 const uint32_t kSenderSsrc = 0x10203; |
| 892 | 891 |
| 893 rtcp::Tmmbr tmmbr; | 892 rtcp::Tmmbr tmmbr; |
| 894 tmmbr.From(kSenderSsrc); | 893 tmmbr.From(kSenderSsrc); |
| 895 tmmbr.To(kMediaFlowSsrc + 1); // This SSRC is not what we are sending. | 894 // This SSRC is not what we are sending. |
| 896 tmmbr.WithBitrateKbps(30); | 895 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc + 1, 30000, 0)); |
| 897 | 896 |
| 898 rtcp::SenderReport sr; | 897 rtcp::SenderReport sr; |
| 899 sr.From(kSenderSsrc); | 898 sr.From(kSenderSsrc); |
| 900 sr.Append(&tmmbr); | 899 sr.Append(&tmmbr); |
| 901 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); | 900 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); |
| 902 | 901 |
| 903 std::set<uint32_t> ssrcs; | 902 std::set<uint32_t> ssrcs; |
| 904 ssrcs.insert(kMediaFlowSsrc); | 903 ssrcs.insert(kMediaFlowSsrc); |
| 905 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); | 904 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); |
| 906 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); | 905 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); |
| 907 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); | 906 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); |
| 908 } | 907 } |
| 909 | 908 |
| 910 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) { | 909 TEST_F(RtcpReceiverTest, TmmbrPacketZeroRateIgnored) { |
| 911 const uint32_t kMediaFlowSsrc = 0x2040608; | 910 const uint32_t kMediaFlowSsrc = 0x2040608; |
| 912 const uint32_t kSenderSsrc = 0x10203; | 911 const uint32_t kSenderSsrc = 0x10203; |
| 913 std::set<uint32_t> ssrcs; | 912 std::set<uint32_t> ssrcs; |
| 914 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. | 913 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. |
| 915 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); | 914 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); |
| 916 | 915 |
| 917 rtcp::Tmmbr tmmbr; | 916 rtcp::Tmmbr tmmbr; |
| 918 tmmbr.From(kSenderSsrc); | 917 tmmbr.From(kSenderSsrc); |
| 919 tmmbr.To(kMediaFlowSsrc); | 918 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 0, 0)); |
| 920 tmmbr.WithBitrateKbps(0); | |
| 921 | 919 |
| 922 rtcp::SenderReport sr; | 920 rtcp::SenderReport sr; |
| 923 sr.From(kSenderSsrc); | 921 sr.From(kSenderSsrc); |
| 924 sr.Append(&tmmbr); | 922 sr.Append(&tmmbr); |
| 925 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); | 923 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); |
| 926 | 924 |
| 927 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); | 925 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); |
| 928 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); | 926 EXPECT_EQ(0, rtcp_receiver_->TMMBRReceived(0, 0, nullptr)); |
| 929 } | 927 } |
| 930 | 928 |
| 931 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) { | 929 TEST_F(RtcpReceiverTest, TmmbrThreeConstraintsTimeOut) { |
| 932 const uint32_t kMediaFlowSsrc = 0x2040608; | 930 const uint32_t kMediaFlowSsrc = 0x2040608; |
| 933 const uint32_t kSenderSsrc = 0x10203; | 931 const uint32_t kSenderSsrc = 0x10203; |
| 934 std::set<uint32_t> ssrcs; | 932 std::set<uint32_t> ssrcs; |
| 935 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. | 933 ssrcs.insert(kMediaFlowSsrc); // Matches "media source" above. |
| 936 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); | 934 rtcp_receiver_->SetSsrcs(kMediaFlowSsrc, ssrcs); |
| 937 | 935 |
| 938 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2. | 936 // Inject 3 packets "from" kSenderSsrc, kSenderSsrc+1, kSenderSsrc+2. |
| 939 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10. | 937 // The times of arrival are starttime + 0, starttime + 5 and starttime + 10. |
| 940 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) { | 938 for (uint32_t ssrc = kSenderSsrc; ssrc < kSenderSsrc + 3; ++ssrc) { |
| 941 rtcp::Tmmbr tmmbr; | 939 rtcp::Tmmbr tmmbr; |
| 942 tmmbr.From(ssrc); | 940 tmmbr.From(ssrc); |
| 943 tmmbr.To(kMediaFlowSsrc); | 941 tmmbr.WithTmmbr(rtcp::TmmbItem(kMediaFlowSsrc, 30000, 0)); |
| 944 tmmbr.WithBitrateKbps(30); | |
| 945 | 942 |
| 946 rtcp::SenderReport sr; | 943 rtcp::SenderReport sr; |
| 947 sr.From(ssrc); | 944 sr.From(ssrc); |
| 948 sr.Append(&tmmbr); | 945 sr.Append(&tmmbr); |
| 949 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); | 946 rtc::scoped_ptr<rtcp::RawPacket> packet(sr.Build()); |
| 950 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); | 947 EXPECT_EQ(0, InjectRtcpPacket(packet->Buffer(), packet->Length())); |
| 951 // 5 seconds between each packet. | 948 // 5 seconds between each packet. |
| 952 system_clock_.AdvanceTimeMilliseconds(5000); | 949 system_clock_.AdvanceTimeMilliseconds(5000); |
| 953 } | 950 } |
| 954 // It is now starttime + 15. | 951 // It is now starttime + 15. |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1099 | 1096 |
| 1100 // Transport feedback should be ignored, but next packet should work. | 1097 // Transport feedback should be ignored, but next packet should work. |
| 1101 EXPECT_EQ(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpTransportFeedback); | 1098 EXPECT_EQ(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpTransportFeedback); |
| 1102 EXPECT_NE(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpRemb); | 1099 EXPECT_NE(0u, rtcp_packet_info_.rtcpPacketTypeFlags & kRtcpRemb); |
| 1103 EXPECT_EQ(kBitrateBps, rtcp_packet_info_.receiverEstimatedMaxBitrate); | 1100 EXPECT_EQ(kBitrateBps, rtcp_packet_info_.receiverEstimatedMaxBitrate); |
| 1104 } | 1101 } |
| 1105 | 1102 |
| 1106 } // Anonymous namespace | 1103 } // Anonymous namespace |
| 1107 | 1104 |
| 1108 } // namespace webrtc | 1105 } // namespace webrtc |
| OLD | NEW |