Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(981)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc

Issue 2378113002: Allow max 1 block per type in RTCP Extended Reports (Closed)
Patch Set: use operator==(T, Optional<T>) for slightly cleaner tests Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_receiver.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_sender.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698