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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 using ::testing::AllOf; | 45 using ::testing::AllOf; |
46 using ::testing::ElementsAreArray; | 46 using ::testing::ElementsAreArray; |
47 using ::testing::Field; | 47 using ::testing::Field; |
48 using ::testing::IsEmpty; | 48 using ::testing::IsEmpty; |
49 using ::testing::NiceMock; | 49 using ::testing::NiceMock; |
50 using ::testing::Property; | 50 using ::testing::Property; |
51 using ::testing::SizeIs; | 51 using ::testing::SizeIs; |
52 using ::testing::StrEq; | 52 using ::testing::StrEq; |
53 using ::testing::StrictMock; | 53 using ::testing::StrictMock; |
54 using ::testing::UnorderedElementsAre; | 54 using ::testing::UnorderedElementsAre; |
| 55 using rtcp::ReceiveTimeInfo; |
55 | 56 |
56 class MockRtcpPacketTypeCounterObserver : public RtcpPacketTypeCounterObserver { | 57 class MockRtcpPacketTypeCounterObserver : public RtcpPacketTypeCounterObserver { |
57 public: | 58 public: |
58 MOCK_METHOD2(RtcpPacketTypesCounterUpdated, | 59 MOCK_METHOD2(RtcpPacketTypesCounterUpdated, |
59 void(uint32_t, const RtcpPacketTypeCounter&)); | 60 void(uint32_t, const RtcpPacketTypeCounter&)); |
60 }; | 61 }; |
61 | 62 |
62 class MockRtcpIntraFrameObserver : public RtcpIntraFrameObserver { | 63 class MockRtcpIntraFrameObserver : public RtcpIntraFrameObserver { |
63 public: | 64 public: |
64 MOCK_METHOD1(OnReceivedIntraFrameRequest, void(uint32_t)); | 65 MOCK_METHOD1(OnReceivedIntraFrameRequest, void(uint32_t)); |
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 // VOiP reports are ignored. | 691 // VOiP reports are ignored. |
691 TEST_F(RtcpReceiverTest, InjectExtendedReportsVoipPacket) { | 692 TEST_F(RtcpReceiverTest, InjectExtendedReportsVoipPacket) { |
692 const uint8_t kLossRate = 123; | 693 const uint8_t kLossRate = 123; |
693 rtcp::VoipMetric voip_metric; | 694 rtcp::VoipMetric voip_metric; |
694 voip_metric.SetMediaSsrc(kReceiverMainSsrc); | 695 voip_metric.SetMediaSsrc(kReceiverMainSsrc); |
695 RTCPVoIPMetric metric; | 696 RTCPVoIPMetric metric; |
696 metric.lossRate = kLossRate; | 697 metric.lossRate = kLossRate; |
697 voip_metric.SetVoipMetric(metric); | 698 voip_metric.SetVoipMetric(metric); |
698 rtcp::ExtendedReports xr; | 699 rtcp::ExtendedReports xr; |
699 xr.SetSenderSsrc(kSenderSsrc); | 700 xr.SetSenderSsrc(kSenderSsrc); |
700 xr.AddVoipMetric(voip_metric); | 701 xr.SetVoipMetric(voip_metric); |
701 | 702 |
702 InjectRtcpPacket(xr); | 703 InjectRtcpPacket(xr); |
703 } | 704 } |
704 | 705 |
705 TEST_F(RtcpReceiverTest, ExtendedReportsVoipPacketNotToUsIgnored) { | 706 TEST_F(RtcpReceiverTest, ExtendedReportsVoipPacketNotToUsIgnored) { |
706 rtcp::VoipMetric voip_metric; | 707 rtcp::VoipMetric voip_metric; |
707 voip_metric.SetMediaSsrc(kNotToUsSsrc); | 708 voip_metric.SetMediaSsrc(kNotToUsSsrc); |
708 rtcp::ExtendedReports xr; | 709 rtcp::ExtendedReports xr; |
709 xr.SetSenderSsrc(kSenderSsrc); | 710 xr.SetSenderSsrc(kSenderSsrc); |
710 xr.AddVoipMetric(voip_metric); | 711 xr.SetVoipMetric(voip_metric); |
711 | 712 |
712 InjectRtcpPacket(xr); | 713 InjectRtcpPacket(xr); |
713 } | 714 } |
714 | 715 |
715 TEST_F(RtcpReceiverTest, InjectExtendedReportsReceiverReferenceTimePacket) { | 716 TEST_F(RtcpReceiverTest, InjectExtendedReportsReceiverReferenceTimePacket) { |
716 const NtpTime kNtp(0x10203, 0x40506); | 717 const NtpTime kNtp(0x10203, 0x40506); |
717 rtcp::Rrtr rrtr; | 718 rtcp::Rrtr rrtr; |
718 rrtr.SetNtp(kNtp); | 719 rrtr.SetNtp(kNtp); |
719 rtcp::ExtendedReports xr; | 720 rtcp::ExtendedReports xr; |
720 xr.SetSenderSsrc(kSenderSsrc); | 721 xr.SetSenderSsrc(kSenderSsrc); |
721 xr.AddRrtr(rrtr); | 722 xr.SetRrtr(rrtr); |
722 | 723 |
723 rtcp::ReceiveTimeInfo rrtime; | 724 ReceiveTimeInfo rrtime; |
724 EXPECT_FALSE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); | 725 EXPECT_FALSE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); |
725 | 726 |
726 InjectRtcpPacket(xr); | 727 InjectRtcpPacket(xr); |
727 | 728 |
728 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); | 729 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); |
729 EXPECT_EQ(rrtime.ssrc, kSenderSsrc); | 730 EXPECT_EQ(rrtime.ssrc, kSenderSsrc); |
730 EXPECT_EQ(rrtime.last_rr, CompactNtp(kNtp)); | 731 EXPECT_EQ(rrtime.last_rr, CompactNtp(kNtp)); |
731 EXPECT_EQ(0U, rrtime.delay_since_last_rr); | 732 EXPECT_EQ(0U, rrtime.delay_since_last_rr); |
732 | 733 |
733 system_clock_.AdvanceTimeMilliseconds(1500); | 734 system_clock_.AdvanceTimeMilliseconds(1500); |
734 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); | 735 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); |
735 EXPECT_NEAR(1500, CompactNtpRttToMs(rrtime.delay_since_last_rr), 1); | 736 EXPECT_NEAR(1500, CompactNtpRttToMs(rrtime.delay_since_last_rr), 1); |
736 } | 737 } |
737 | 738 |
738 TEST_F(RtcpReceiverTest, ExtendedReportsDlrrPacketNotToUsIgnored) { | 739 TEST_F(RtcpReceiverTest, ExtendedReportsDlrrPacketNotToUsIgnored) { |
739 // Allow calculate rtt using dlrr/rrtr, simulating media receiver side. | 740 // Allow calculate rtt using dlrr/rrtr, simulating media receiver side. |
740 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 741 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
741 | 742 |
742 rtcp::Dlrr dlrr; | |
743 dlrr.AddDlrrItem(kNotToUsSsrc, 0x12345, 0x67890); | |
744 rtcp::ExtendedReports xr; | 743 rtcp::ExtendedReports xr; |
745 xr.SetSenderSsrc(kSenderSsrc); | 744 xr.SetSenderSsrc(kSenderSsrc); |
746 xr.AddDlrr(dlrr); | 745 xr.AddDlrrItem(ReceiveTimeInfo(kNotToUsSsrc, 0x12345, 0x67890)); |
747 | 746 |
748 InjectRtcpPacket(xr); | 747 InjectRtcpPacket(xr); |
749 | 748 |
750 int64_t rtt_ms = 0; | 749 int64_t rtt_ms = 0; |
751 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 750 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
752 } | 751 } |
753 | 752 |
754 TEST_F(RtcpReceiverTest, InjectExtendedReportsDlrrPacketWithSubBlock) { | 753 TEST_F(RtcpReceiverTest, InjectExtendedReportsDlrrPacketWithSubBlock) { |
755 const uint32_t kLastRR = 0x12345; | 754 const uint32_t kLastRR = 0x12345; |
756 const uint32_t kDelay = 0x23456; | 755 const uint32_t kDelay = 0x23456; |
757 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 756 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
758 int64_t rtt_ms = 0; | 757 int64_t rtt_ms = 0; |
759 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 758 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
760 | 759 |
761 rtcp::Dlrr dlrr; | |
762 dlrr.AddDlrrItem(kReceiverMainSsrc, kLastRR, kDelay); | |
763 rtcp::ExtendedReports xr; | 760 rtcp::ExtendedReports xr; |
764 xr.SetSenderSsrc(kSenderSsrc); | 761 xr.SetSenderSsrc(kSenderSsrc); |
765 xr.AddDlrr(dlrr); | 762 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc, kLastRR, kDelay)); |
766 | 763 |
767 InjectRtcpPacket(xr); | 764 InjectRtcpPacket(xr); |
768 | 765 |
769 uint32_t compact_ntp_now = CompactNtp(NtpTime(system_clock_)); | 766 uint32_t compact_ntp_now = CompactNtp(NtpTime(system_clock_)); |
770 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 767 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
771 uint32_t rtt_ntp = compact_ntp_now - kDelay - kLastRR; | 768 uint32_t rtt_ntp = compact_ntp_now - kDelay - kLastRR; |
772 EXPECT_NEAR(CompactNtpRttToMs(rtt_ntp), rtt_ms, 1); | 769 EXPECT_NEAR(CompactNtpRttToMs(rtt_ntp), rtt_ms, 1); |
773 } | 770 } |
774 | 771 |
775 TEST_F(RtcpReceiverTest, InjectExtendedReportsDlrrPacketWithMultipleSubBlocks) { | 772 TEST_F(RtcpReceiverTest, InjectExtendedReportsDlrrPacketWithMultipleSubBlocks) { |
776 const uint32_t kLastRR = 0x12345; | 773 const uint32_t kLastRR = 0x12345; |
777 const uint32_t kDelay = 0x56789; | 774 const uint32_t kDelay = 0x56789; |
778 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 775 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
779 | 776 |
780 rtcp::ExtendedReports xr; | 777 rtcp::ExtendedReports xr; |
781 xr.SetSenderSsrc(kSenderSsrc); | 778 xr.SetSenderSsrc(kSenderSsrc); |
782 rtcp::Dlrr dlrr; | 779 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc, kLastRR, kDelay)); |
783 dlrr.AddDlrrItem(kReceiverMainSsrc, kLastRR, kDelay); | 780 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc + 1, 0x12345, 0x67890)); |
784 dlrr.AddDlrrItem(kReceiverMainSsrc + 1, 0x12345, 0x67890); | 781 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc + 2, 0x12345, 0x67890)); |
785 dlrr.AddDlrrItem(kReceiverMainSsrc + 2, 0x12345, 0x67890); | |
786 xr.AddDlrr(dlrr); | |
787 | 782 |
788 InjectRtcpPacket(xr); | 783 InjectRtcpPacket(xr); |
789 | 784 |
790 uint32_t compact_ntp_now = CompactNtp(NtpTime(system_clock_)); | 785 uint32_t compact_ntp_now = CompactNtp(NtpTime(system_clock_)); |
791 int64_t rtt_ms = 0; | 786 int64_t rtt_ms = 0; |
792 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 787 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
793 uint32_t rtt_ntp = compact_ntp_now - kDelay - kLastRR; | 788 uint32_t rtt_ntp = compact_ntp_now - kDelay - kLastRR; |
794 EXPECT_NEAR(CompactNtpRttToMs(rtt_ntp), rtt_ms, 1); | 789 EXPECT_NEAR(CompactNtpRttToMs(rtt_ntp), rtt_ms, 1); |
795 } | 790 } |
796 | 791 |
797 TEST_F(RtcpReceiverTest, InjectExtendedReportsPacketWithMultipleReportBlocks) { | 792 TEST_F(RtcpReceiverTest, InjectExtendedReportsPacketWithMultipleReportBlocks) { |
798 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 793 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
799 | 794 |
800 rtcp::Rrtr rrtr; | 795 rtcp::Rrtr rrtr; |
801 rtcp::Dlrr dlrr; | |
802 dlrr.AddDlrrItem(kReceiverMainSsrc, 0x12345, 0x67890); | |
803 rtcp::VoipMetric metric; | 796 rtcp::VoipMetric metric; |
804 metric.SetMediaSsrc(kReceiverMainSsrc); | 797 metric.SetMediaSsrc(kReceiverMainSsrc); |
805 rtcp::ExtendedReports xr; | 798 rtcp::ExtendedReports xr; |
806 xr.SetSenderSsrc(kSenderSsrc); | 799 xr.SetSenderSsrc(kSenderSsrc); |
807 xr.AddRrtr(rrtr); | 800 xr.SetRrtr(rrtr); |
808 xr.AddDlrr(dlrr); | 801 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc, 0x12345, 0x67890)); |
809 xr.AddVoipMetric(metric); | 802 xr.SetVoipMetric(metric); |
810 | 803 |
811 InjectRtcpPacket(xr); | 804 InjectRtcpPacket(xr); |
812 | 805 |
813 rtcp::ReceiveTimeInfo rrtime; | 806 ReceiveTimeInfo rrtime; |
814 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); | 807 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); |
815 int64_t rtt_ms = 0; | 808 int64_t rtt_ms = 0; |
816 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 809 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
817 } | 810 } |
818 | 811 |
819 TEST_F(RtcpReceiverTest, InjectExtendedReportsPacketWithUnknownReportBlock) { | 812 TEST_F(RtcpReceiverTest, InjectExtendedReportsPacketWithUnknownReportBlock) { |
820 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 813 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
821 | 814 |
822 rtcp::Rrtr rrtr; | 815 rtcp::Rrtr rrtr; |
823 rtcp::Dlrr dlrr; | |
824 dlrr.AddDlrrItem(kReceiverMainSsrc, 0x12345, 0x67890); | |
825 rtcp::VoipMetric metric; | 816 rtcp::VoipMetric metric; |
826 metric.SetMediaSsrc(kReceiverMainSsrc); | 817 metric.SetMediaSsrc(kReceiverMainSsrc); |
827 rtcp::ExtendedReports xr; | 818 rtcp::ExtendedReports xr; |
828 xr.SetSenderSsrc(kSenderSsrc); | 819 xr.SetSenderSsrc(kSenderSsrc); |
829 xr.AddRrtr(rrtr); | 820 xr.SetRrtr(rrtr); |
830 xr.AddDlrr(dlrr); | 821 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc, 0x12345, 0x67890)); |
831 xr.AddVoipMetric(metric); | 822 xr.SetVoipMetric(metric); |
832 | 823 |
833 rtc::Buffer packet = xr.Build(); | 824 rtc::Buffer packet = xr.Build(); |
834 // Modify the DLRR block to have an unsupported block type, from 5 to 6. | 825 // Modify the DLRR block to have an unsupported block type, from 5 to 6. |
835 ASSERT_EQ(5, packet.data()[20]); | 826 ASSERT_EQ(5, packet.data()[20]); |
836 packet.data()[20] = 6; | 827 packet.data()[20] = 6; |
837 InjectRtcpPacket(packet); | 828 InjectRtcpPacket(packet); |
838 | 829 |
839 // Validate Rrtr was received and processed. | 830 // Validate Rrtr was received and processed. |
840 rtcp::ReceiveTimeInfo rrtime; | 831 ReceiveTimeInfo rrtime; |
841 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); | 832 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&rrtime)); |
842 // Validate Dlrr report wasn't processed. | 833 // Validate Dlrr report wasn't processed. |
843 int64_t rtt_ms = 0; | 834 int64_t rtt_ms = 0; |
844 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 835 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
845 } | 836 } |
846 | 837 |
847 TEST_F(RtcpReceiverTest, TestExtendedReportsRrRttInitiallyFalse) { | 838 TEST_F(RtcpReceiverTest, TestExtendedReportsRrRttInitiallyFalse) { |
848 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 839 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
849 | 840 |
850 int64_t rtt_ms; | 841 int64_t rtt_ms; |
851 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 842 EXPECT_FALSE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
852 } | 843 } |
853 | 844 |
854 TEST_F(RtcpReceiverTest, RttCalculatedAfterExtendedReportsDlrr) { | 845 TEST_F(RtcpReceiverTest, RttCalculatedAfterExtendedReportsDlrr) { |
855 Random rand(0x0123456789abcdef); | 846 Random rand(0x0123456789abcdef); |
856 const int64_t kRttMs = rand.Rand(1, 9 * 3600 * 1000); | 847 const int64_t kRttMs = rand.Rand(1, 9 * 3600 * 1000); |
857 const uint32_t kDelayNtp = rand.Rand(0, 0x7fffffff); | 848 const uint32_t kDelayNtp = rand.Rand(0, 0x7fffffff); |
858 const int64_t kDelayMs = CompactNtpRttToMs(kDelayNtp); | 849 const int64_t kDelayMs = CompactNtpRttToMs(kDelayNtp); |
859 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 850 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
860 NtpTime now(system_clock_); | 851 NtpTime now(system_clock_); |
861 uint32_t sent_ntp = CompactNtp(now); | 852 uint32_t sent_ntp = CompactNtp(now); |
862 system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs); | 853 system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs); |
863 | 854 |
864 rtcp::Dlrr dlrr; | |
865 dlrr.AddDlrrItem(kReceiverMainSsrc, sent_ntp, kDelayNtp); | |
866 rtcp::ExtendedReports xr; | 855 rtcp::ExtendedReports xr; |
867 xr.SetSenderSsrc(kSenderSsrc); | 856 xr.SetSenderSsrc(kSenderSsrc); |
868 xr.AddDlrr(dlrr); | 857 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc, sent_ntp, kDelayNtp)); |
869 | 858 |
870 InjectRtcpPacket(xr); | 859 InjectRtcpPacket(xr); |
871 | 860 |
872 int64_t rtt_ms = 0; | 861 int64_t rtt_ms = 0; |
873 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 862 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
874 EXPECT_NEAR(kRttMs, rtt_ms, 1); | 863 EXPECT_NEAR(kRttMs, rtt_ms, 1); |
875 } | 864 } |
876 | 865 |
877 TEST_F(RtcpReceiverTest, XrDlrrCalculatesNegativeRttAsOne) { | 866 TEST_F(RtcpReceiverTest, XrDlrrCalculatesNegativeRttAsOne) { |
878 Random rand(0x0123456789abcdef); | 867 Random rand(0x0123456789abcdef); |
879 const int64_t kRttMs = rand.Rand(-3600 * 1000, -1); | 868 const int64_t kRttMs = rand.Rand(-3600 * 1000, -1); |
880 const uint32_t kDelayNtp = rand.Rand(0, 0x7fffffff); | 869 const uint32_t kDelayNtp = rand.Rand(0, 0x7fffffff); |
881 const int64_t kDelayMs = CompactNtpRttToMs(kDelayNtp); | 870 const int64_t kDelayMs = CompactNtpRttToMs(kDelayNtp); |
882 NtpTime now(system_clock_); | 871 NtpTime now(system_clock_); |
883 uint32_t sent_ntp = CompactNtp(now); | 872 uint32_t sent_ntp = CompactNtp(now); |
884 system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs); | 873 system_clock_.AdvanceTimeMilliseconds(kRttMs + kDelayMs); |
885 rtcp_receiver_.SetRtcpXrRrtrStatus(true); | 874 rtcp_receiver_.SetRtcpXrRrtrStatus(true); |
886 | 875 |
887 rtcp::Dlrr dlrr; | |
888 dlrr.AddDlrrItem(kReceiverMainSsrc, sent_ntp, kDelayNtp); | |
889 rtcp::ExtendedReports xr; | 876 rtcp::ExtendedReports xr; |
890 xr.SetSenderSsrc(kSenderSsrc); | 877 xr.SetSenderSsrc(kSenderSsrc); |
891 xr.AddDlrr(dlrr); | 878 xr.AddDlrrItem(ReceiveTimeInfo(kReceiverMainSsrc, sent_ntp, kDelayNtp)); |
892 | 879 |
893 InjectRtcpPacket(xr); | 880 InjectRtcpPacket(xr); |
894 | 881 |
895 int64_t rtt_ms = 0; | 882 int64_t rtt_ms = 0; |
896 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); | 883 EXPECT_TRUE(rtcp_receiver_.GetAndResetXrRrRtt(&rtt_ms)); |
897 EXPECT_EQ(1, rtt_ms); | 884 EXPECT_EQ(1, rtt_ms); |
898 } | 885 } |
899 | 886 |
900 TEST_F(RtcpReceiverTest, LastReceivedXrReferenceTimeInfoInitiallyFalse) { | 887 TEST_F(RtcpReceiverTest, LastReceivedXrReferenceTimeInfoInitiallyFalse) { |
901 rtcp::ReceiveTimeInfo info; | 888 ReceiveTimeInfo info; |
902 EXPECT_FALSE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&info)); | 889 EXPECT_FALSE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&info)); |
903 } | 890 } |
904 | 891 |
905 TEST_F(RtcpReceiverTest, GetLastReceivedExtendedReportsReferenceTimeInfo) { | 892 TEST_F(RtcpReceiverTest, GetLastReceivedExtendedReportsReferenceTimeInfo) { |
906 const NtpTime kNtp(0x10203, 0x40506); | 893 const NtpTime kNtp(0x10203, 0x40506); |
907 const uint32_t kNtpMid = CompactNtp(kNtp); | 894 const uint32_t kNtpMid = CompactNtp(kNtp); |
908 | 895 |
909 rtcp::Rrtr rrtr; | 896 rtcp::Rrtr rrtr; |
910 rrtr.SetNtp(kNtp); | 897 rrtr.SetNtp(kNtp); |
911 rtcp::ExtendedReports xr; | 898 rtcp::ExtendedReports xr; |
912 xr.SetSenderSsrc(kSenderSsrc); | 899 xr.SetSenderSsrc(kSenderSsrc); |
913 xr.AddRrtr(rrtr); | 900 xr.SetRrtr(rrtr); |
914 | 901 |
915 InjectRtcpPacket(xr); | 902 InjectRtcpPacket(xr); |
916 | 903 |
917 rtcp::ReceiveTimeInfo info; | 904 ReceiveTimeInfo info; |
918 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&info)); | 905 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&info)); |
919 EXPECT_EQ(kSenderSsrc, info.ssrc); | 906 EXPECT_EQ(kSenderSsrc, info.ssrc); |
920 EXPECT_EQ(kNtpMid, info.last_rr); | 907 EXPECT_EQ(kNtpMid, info.last_rr); |
921 EXPECT_EQ(0U, info.delay_since_last_rr); | 908 EXPECT_EQ(0U, info.delay_since_last_rr); |
922 | 909 |
923 system_clock_.AdvanceTimeMilliseconds(1000); | 910 system_clock_.AdvanceTimeMilliseconds(1000); |
924 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&info)); | 911 EXPECT_TRUE(rtcp_receiver_.LastReceivedXrReferenceTimeInfo(&info)); |
925 EXPECT_EQ(65536U, info.delay_since_last_rr); | 912 EXPECT_EQ(65536U, info.delay_since_last_rr); |
926 } | 913 } |
927 | 914 |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1262 TEST_F(RtcpReceiverTest, ForceSenderReport) { | 1249 TEST_F(RtcpReceiverTest, ForceSenderReport) { |
1263 rtcp::RapidResyncRequest rr; | 1250 rtcp::RapidResyncRequest rr; |
1264 rr.SetSenderSsrc(kSenderSsrc); | 1251 rr.SetSenderSsrc(kSenderSsrc); |
1265 rr.SetMediaSsrc(kReceiverMainSsrc); | 1252 rr.SetMediaSsrc(kReceiverMainSsrc); |
1266 | 1253 |
1267 EXPECT_CALL(rtp_rtcp_impl_, OnRequestSendReport()); | 1254 EXPECT_CALL(rtp_rtcp_impl_, OnRequestSendReport()); |
1268 InjectRtcpPacket(rr); | 1255 InjectRtcpPacket(rr); |
1269 } | 1256 } |
1270 | 1257 |
1271 } // namespace webrtc | 1258 } // namespace webrtc |
OLD | NEW |