| 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 |