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 |
11 /* | 11 /* |
12 * This file includes unit tests for the RTPSender. | 12 * This file includes unit tests for the RTPSender. |
13 */ | 13 */ |
14 | 14 |
15 #include <list> | 15 #include <list> |
16 #include <vector> | 16 #include <vector> |
17 | 17 |
18 #include "testing/gmock/include/gmock/gmock.h" | 18 #include "testing/gmock/include/gmock/gmock.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
20 #include "webrtc/base/buffer.h" | 20 #include "webrtc/base/buffer.h" |
21 #include "webrtc/base/scoped_ptr.h" | 21 #include "webrtc/base/scoped_ptr.h" |
| 22 #include "webrtc/call/mock/mock_rtc_event_log.h" |
22 #include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h" | 23 #include "webrtc/modules/rtp_rtcp/include/rtp_cvo.h" |
23 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" | 24 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" |
24 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" | 25 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
25 #include "webrtc/modules/rtp_rtcp/source/rtp_format_video_generic.h" | 26 #include "webrtc/modules/rtp_rtcp/source/rtp_format_video_generic.h" |
26 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" | 27 #include "webrtc/modules/rtp_rtcp/source/rtp_header_extension.h" |
27 #include "webrtc/modules/rtp_rtcp/source/rtp_sender.h" | 28 #include "webrtc/modules/rtp_rtcp/source/rtp_sender.h" |
28 #include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h" | 29 #include "webrtc/modules/rtp_rtcp/source/rtp_sender_video.h" |
29 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" | 30 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" |
30 #include "webrtc/system_wrappers/include/stl_util.h" | 31 #include "webrtc/system_wrappers/include/stl_util.h" |
31 #include "webrtc/test/mock_transport.h" | 32 #include "webrtc/test/mock_transport.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 uint16_t sequence_number, | 114 uint16_t sequence_number, |
114 int64_t capture_time_ms, | 115 int64_t capture_time_ms, |
115 size_t bytes, | 116 size_t bytes, |
116 bool retransmission)); | 117 bool retransmission)); |
117 }; | 118 }; |
118 | 119 |
119 class RtpSenderTest : public ::testing::Test { | 120 class RtpSenderTest : public ::testing::Test { |
120 protected: | 121 protected: |
121 RtpSenderTest() | 122 RtpSenderTest() |
122 : fake_clock_(kStartTime), | 123 : fake_clock_(kStartTime), |
| 124 mock_rtc_event_log_(), |
123 mock_paced_sender_(), | 125 mock_paced_sender_(), |
124 rtp_sender_(), | 126 rtp_sender_(), |
125 payload_(kPayload), | 127 payload_(kPayload), |
126 transport_(), | 128 transport_(), |
127 kMarkerBit(true) { | 129 kMarkerBit(true) { |
128 } | 130 } |
129 | 131 |
130 void SetUp() override { SetUpRtpSender(true); } | 132 void SetUp() override { SetUpRtpSender(true); } |
131 | 133 |
132 void SetUpRtpSender(bool pacer) { | 134 void SetUpRtpSender(bool pacer) { |
133 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 135 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
134 pacer ? &mock_paced_sender_ : nullptr, | 136 pacer ? &mock_paced_sender_ : nullptr, |
135 nullptr, nullptr, nullptr, nullptr, | 137 nullptr, nullptr, nullptr, nullptr, nullptr, |
136 nullptr)); | 138 &mock_rtc_event_log_)); |
137 rtp_sender_->SetSequenceNumber(kSeqNum); | 139 rtp_sender_->SetSequenceNumber(kSeqNum); |
138 } | 140 } |
139 | 141 |
140 SimulatedClock fake_clock_; | 142 SimulatedClock fake_clock_; |
| 143 MockRtcEventLog mock_rtc_event_log_; |
141 MockRtpPacketSender mock_paced_sender_; | 144 MockRtpPacketSender mock_paced_sender_; |
142 rtc::scoped_ptr<RTPSender> rtp_sender_; | 145 rtc::scoped_ptr<RTPSender> rtp_sender_; |
143 int payload_; | 146 int payload_; |
144 LoopbackTransportTest transport_; | 147 LoopbackTransportTest transport_; |
145 const bool kMarkerBit; | 148 const bool kMarkerBit; |
146 uint8_t packet_[kMaxPacketLength]; | 149 uint8_t packet_[kMaxPacketLength]; |
147 | 150 |
148 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { | 151 void VerifyRTPHeaderCommon(const RTPHeader& rtp_header) { |
149 VerifyRTPHeaderCommon(rtp_header, kMarkerBit, 0); | 152 VerifyRTPHeaderCommon(rtp_header, kMarkerBit, 0); |
150 } | 153 } |
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 EXPECT_EQ(0, rtp_header2.extension.transmissionTimeOffset); | 662 EXPECT_EQ(0, rtp_header2.extension.transmissionTimeOffset); |
660 EXPECT_EQ(0u, rtp_header2.extension.absoluteSendTime); | 663 EXPECT_EQ(0u, rtp_header2.extension.absoluteSendTime); |
661 EXPECT_FALSE(rtp_header2.extension.voiceActivity); | 664 EXPECT_FALSE(rtp_header2.extension.voiceActivity); |
662 EXPECT_EQ(0u, rtp_header2.extension.audioLevel); | 665 EXPECT_EQ(0u, rtp_header2.extension.audioLevel); |
663 EXPECT_EQ(0u, rtp_header2.extension.transportSequenceNumber); | 666 EXPECT_EQ(0u, rtp_header2.extension.transportSequenceNumber); |
664 } | 667 } |
665 | 668 |
666 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { | 669 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { |
667 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 670 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
668 _, kSeqNum, _, _, _)); | 671 _, kSeqNum, _, _, _)); |
| 672 EXPECT_CALL(mock_rtc_event_log_, |
| 673 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
669 | 674 |
670 rtp_sender_->SetStorePacketsStatus(true, 10); | 675 rtp_sender_->SetStorePacketsStatus(true, 10); |
671 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 676 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
672 kRtpExtensionTransmissionTimeOffset, | 677 kRtpExtensionTransmissionTimeOffset, |
673 kTransmissionTimeOffsetExtensionId)); | 678 kTransmissionTimeOffsetExtensionId)); |
674 EXPECT_EQ( | 679 EXPECT_EQ( |
675 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 680 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
676 kAbsoluteSendTimeExtensionId)); | 681 kAbsoluteSendTimeExtensionId)); |
677 rtp_sender_->SetTargetBitrate(300000); | 682 rtp_sender_->SetTargetBitrate(300000); |
678 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 683 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
710 // Verify transmission time offset. | 715 // Verify transmission time offset. |
711 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 716 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
712 uint64_t expected_send_time = | 717 uint64_t expected_send_time = |
713 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 718 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
714 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 719 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
715 } | 720 } |
716 | 721 |
717 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { | 722 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { |
718 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 723 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
719 _, kSeqNum, _, _, _)); | 724 _, kSeqNum, _, _, _)); |
| 725 EXPECT_CALL(mock_rtc_event_log_, |
| 726 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)); |
720 | 727 |
721 rtp_sender_->SetStorePacketsStatus(true, 10); | 728 rtp_sender_->SetStorePacketsStatus(true, 10); |
722 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 729 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
723 kRtpExtensionTransmissionTimeOffset, | 730 kRtpExtensionTransmissionTimeOffset, |
724 kTransmissionTimeOffsetExtensionId)); | 731 kTransmissionTimeOffsetExtensionId)); |
725 EXPECT_EQ( | 732 EXPECT_EQ( |
726 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 733 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
727 kAbsoluteSendTimeExtensionId)); | 734 kAbsoluteSendTimeExtensionId)); |
728 rtp_sender_->SetTargetBitrate(300000); | 735 rtp_sender_->SetTargetBitrate(300000); |
729 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 736 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
771 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 778 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
772 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 779 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
773 } | 780 } |
774 | 781 |
775 // This test sends 1 regular video packet, then 4 padding packets, and then | 782 // This test sends 1 regular video packet, then 4 padding packets, and then |
776 // 1 more regular packet. | 783 // 1 more regular packet. |
777 TEST_F(RtpSenderTest, SendPadding) { | 784 TEST_F(RtpSenderTest, SendPadding) { |
778 // Make all (non-padding) packets go to send queue. | 785 // Make all (non-padding) packets go to send queue. |
779 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 786 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
780 _, kSeqNum, _, _, _)); | 787 _, kSeqNum, _, _, _)); |
| 788 EXPECT_CALL(mock_rtc_event_log_, |
| 789 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
| 790 .Times(1 + 4 + 1); |
781 | 791 |
782 uint16_t seq_num = kSeqNum; | 792 uint16_t seq_num = kSeqNum; |
783 uint32_t timestamp = kTimestamp; | 793 uint32_t timestamp = kTimestamp; |
784 rtp_sender_->SetStorePacketsStatus(true, 10); | 794 rtp_sender_->SetStorePacketsStatus(true, 10); |
785 size_t rtp_header_len = kRtpHeaderSize; | 795 size_t rtp_header_len = kRtpHeaderSize; |
786 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 796 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
787 kRtpExtensionTransmissionTimeOffset, | 797 kRtpExtensionTransmissionTimeOffset, |
788 kTransmissionTimeOffsetExtensionId)); | 798 kTransmissionTimeOffsetExtensionId)); |
789 rtp_header_len += 4; // 4 bytes extension. | 799 rtp_header_len += 4; // 4 bytes extension. |
790 EXPECT_EQ( | 800 EXPECT_EQ( |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
887 EXPECT_EQ(timestamp, rtp_header.timestamp); | 897 EXPECT_EQ(timestamp, rtp_header.timestamp); |
888 // Verify transmission time offset. This packet is sent without delay. | 898 // Verify transmission time offset. This packet is sent without delay. |
889 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); | 899 EXPECT_EQ(0, rtp_header.extension.transmissionTimeOffset); |
890 uint64_t expected_send_time = | 900 uint64_t expected_send_time = |
891 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 901 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
892 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 902 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
893 } | 903 } |
894 | 904 |
895 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 905 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
896 MockTransport transport; | 906 MockTransport transport; |
897 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, | 907 rtp_sender_.reset(new RTPSender( |
898 &mock_paced_sender_, nullptr, nullptr, | 908 false, &fake_clock_, &transport, nullptr, &mock_paced_sender_, nullptr, |
899 nullptr, nullptr, nullptr)); | 909 nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_)); |
900 rtp_sender_->SetSequenceNumber(kSeqNum); | 910 rtp_sender_->SetSequenceNumber(kSeqNum); |
901 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 911 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
902 | 912 |
903 uint16_t seq_num = kSeqNum; | 913 uint16_t seq_num = kSeqNum; |
904 rtp_sender_->SetStorePacketsStatus(true, 10); | 914 rtp_sender_->SetStorePacketsStatus(true, 10); |
905 int32_t rtp_header_len = kRtpHeaderSize; | 915 int32_t rtp_header_len = kRtpHeaderSize; |
906 EXPECT_EQ( | 916 EXPECT_EQ( |
907 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 917 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
908 kAbsoluteSendTimeExtensionId)); | 918 kAbsoluteSendTimeExtensionId)); |
909 rtp_header_len += 4; // 4 bytes extension. | 919 rtp_header_len += 4; // 4 bytes extension. |
(...skipping 11 matching lines...) Expand all Loading... |
921 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 931 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
922 kAbsoluteSendTimeExtensionId); | 932 kAbsoluteSendTimeExtensionId); |
923 rtp_sender_->SetTargetBitrate(300000); | 933 rtp_sender_->SetTargetBitrate(300000); |
924 const size_t kNumPayloadSizes = 10; | 934 const size_t kNumPayloadSizes = 10; |
925 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, | 935 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, |
926 750, 800, 850, 900, 950}; | 936 750, 800, 850, 900, 950}; |
927 // Expect all packets go through the pacer. | 937 // Expect all packets go through the pacer. |
928 EXPECT_CALL(mock_paced_sender_, | 938 EXPECT_CALL(mock_paced_sender_, |
929 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | 939 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) |
930 .Times(kNumPayloadSizes); | 940 .Times(kNumPayloadSizes); |
| 941 EXPECT_CALL(mock_rtc_event_log_, |
| 942 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
| 943 .Times(kNumPayloadSizes); |
| 944 |
931 // Send 10 packets of increasing size. | 945 // Send 10 packets of increasing size. |
932 for (size_t i = 0; i < kNumPayloadSizes; ++i) { | 946 for (size_t i = 0; i < kNumPayloadSizes; ++i) { |
933 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 947 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
934 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); | 948 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); |
935 SendPacket(capture_time_ms, kPayloadSizes[i]); | 949 SendPacket(capture_time_ms, kPayloadSizes[i]); |
936 rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false); | 950 rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false); |
937 fake_clock_.AdvanceTimeMilliseconds(33); | 951 fake_clock_.AdvanceTimeMilliseconds(33); |
938 } | 952 } |
| 953 |
| 954 EXPECT_CALL(mock_rtc_event_log_, |
| 955 LogRtpHeader(PacketDirection::kOutgoingPacket, _, _, _)) |
| 956 .Times(::testing::AtLeast(4)); |
| 957 |
939 // The amount of padding to send it too small to send a payload packet. | 958 // The amount of padding to send it too small to send a payload packet. |
940 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 959 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
941 .WillOnce(testing::Return(true)); | 960 .WillOnce(testing::Return(true)); |
942 EXPECT_EQ(kMaxPaddingSize, rtp_sender_->TimeToSendPadding(49)); | 961 EXPECT_EQ(kMaxPaddingSize, rtp_sender_->TimeToSendPadding(49)); |
943 | 962 |
944 EXPECT_CALL(transport, | 963 EXPECT_CALL(transport, |
945 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) | 964 SendRtp(_, kPayloadSizes[0] + rtp_header_len + kRtxHeaderSize, _)) |
946 .WillOnce(testing::Return(true)); | 965 .WillOnce(testing::Return(true)); |
947 EXPECT_EQ(kPayloadSizes[0], rtp_sender_->TimeToSendPadding(500)); | 966 EXPECT_EQ(kPayloadSizes[0], rtp_sender_->TimeToSendPadding(500)); |
948 | 967 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 frame_counts_ = frame_counts; | 1042 frame_counts_ = frame_counts; |
1024 } | 1043 } |
1025 | 1044 |
1026 uint32_t num_calls_; | 1045 uint32_t num_calls_; |
1027 uint32_t ssrc_; | 1046 uint32_t ssrc_; |
1028 FrameCounts frame_counts_; | 1047 FrameCounts frame_counts_; |
1029 } callback; | 1048 } callback; |
1030 | 1049 |
1031 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 1050 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
1032 &mock_paced_sender_, nullptr, nullptr, | 1051 &mock_paced_sender_, nullptr, nullptr, |
1033 nullptr, &callback, nullptr)); | 1052 nullptr, &callback, nullptr, nullptr)); |
1034 | 1053 |
1035 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1054 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1036 const uint8_t payload_type = 127; | 1055 const uint8_t payload_type = 127; |
1037 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1056 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
1038 0, 1500)); | 1057 0, 1500)); |
1039 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1058 uint8_t payload[] = {47, 11, 32, 93, 89}; |
1040 rtp_sender_->SetStorePacketsStatus(true, 1); | 1059 rtp_sender_->SetStorePacketsStatus(true, 1); |
1041 uint32_t ssrc = rtp_sender_->SSRC(); | 1060 uint32_t ssrc = rtp_sender_->SSRC(); |
1042 | 1061 |
1043 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 1062 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 retransmit_stats_ = retransmit_stats; | 1098 retransmit_stats_ = retransmit_stats; |
1080 } | 1099 } |
1081 | 1100 |
1082 uint32_t num_calls_; | 1101 uint32_t num_calls_; |
1083 uint32_t ssrc_; | 1102 uint32_t ssrc_; |
1084 BitrateStatistics total_stats_; | 1103 BitrateStatistics total_stats_; |
1085 BitrateStatistics retransmit_stats_; | 1104 BitrateStatistics retransmit_stats_; |
1086 } callback; | 1105 } callback; |
1087 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 1106 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
1088 nullptr, nullptr, nullptr, &callback, nullptr, | 1107 nullptr, nullptr, nullptr, &callback, nullptr, |
1089 nullptr)); | 1108 nullptr, nullptr)); |
1090 | 1109 |
1091 // Simulate kNumPackets sent with kPacketInterval ms intervals. | 1110 // Simulate kNumPackets sent with kPacketInterval ms intervals. |
1092 const uint32_t kNumPackets = 15; | 1111 const uint32_t kNumPackets = 15; |
1093 const uint32_t kPacketInterval = 20; | 1112 const uint32_t kPacketInterval = 20; |
1094 // Overhead = 12 bytes RTP header + 1 byte generic header. | 1113 // Overhead = 12 bytes RTP header + 1 byte generic header. |
1095 const uint32_t kPacketOverhead = 13; | 1114 const uint32_t kPacketOverhead = 13; |
1096 | 1115 |
1097 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1116 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
1098 const uint8_t payload_type = 127; | 1117 const uint8_t payload_type = 127; |
1099 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1118 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 } | 1151 } |
1133 | 1152 |
1134 class RtpSenderAudioTest : public RtpSenderTest { | 1153 class RtpSenderAudioTest : public RtpSenderTest { |
1135 protected: | 1154 protected: |
1136 RtpSenderAudioTest() {} | 1155 RtpSenderAudioTest() {} |
1137 | 1156 |
1138 void SetUp() override { | 1157 void SetUp() override { |
1139 payload_ = kAudioPayload; | 1158 payload_ = kAudioPayload; |
1140 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, | 1159 rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |
1141 nullptr, nullptr, nullptr, nullptr, nullptr, | 1160 nullptr, nullptr, nullptr, nullptr, nullptr, |
1142 nullptr)); | 1161 nullptr, nullptr)); |
1143 rtp_sender_->SetSequenceNumber(kSeqNum); | 1162 rtp_sender_->SetSequenceNumber(kSeqNum); |
1144 } | 1163 } |
1145 }; | 1164 }; |
1146 | 1165 |
1147 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 1166 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |
1148 class TestCallback : public StreamDataCountersCallback { | 1167 class TestCallback : public StreamDataCountersCallback { |
1149 public: | 1168 public: |
1150 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 1169 TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |
1151 virtual ~TestCallback() {} | 1170 virtual ~TestCallback() {} |
1152 | 1171 |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1458 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1477 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
1459 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1478 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
1460 | 1479 |
1461 // Verify that this packet does have CVO byte. | 1480 // Verify that this packet does have CVO byte. |
1462 VerifyCVOPacket( | 1481 VerifyCVOPacket( |
1463 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1482 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
1464 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1483 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
1465 hdr.rotation); | 1484 hdr.rotation); |
1466 } | 1485 } |
1467 } // namespace webrtc | 1486 } // namespace webrtc |
OLD | NEW |