Chromium Code Reviews| 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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 | 118 |
| 119 class RtpSenderTest : public ::testing::Test { | 119 class RtpSenderTest : public ::testing::Test { |
| 120 protected: | 120 protected: |
| 121 RtpSenderTest() | 121 RtpSenderTest() |
| 122 : fake_clock_(kStartTime), | 122 : fake_clock_(kStartTime), |
| 123 mock_paced_sender_(), | 123 mock_paced_sender_(), |
| 124 rtp_sender_(), | 124 rtp_sender_(), |
| 125 payload_(kPayload), | 125 payload_(kPayload), |
| 126 transport_(), | 126 transport_(), |
| 127 kMarkerBit(true) { | 127 kMarkerBit(true) { |
| 128 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | |
| 129 .WillRepeatedly(testing::Return()); | |
| 130 } | 128 } |
| 131 | 129 |
| 132 void SetUp() override { SetUpRtpSender(true); } | 130 void SetUp() override { SetUpRtpSender(true); } |
| 133 | 131 |
| 134 void SetUpRtpSender(bool pacer) { | 132 void SetUpRtpSender(bool pacer) { |
| 135 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 133 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |
| 136 pacer ? &mock_paced_sender_ : nullptr, | 134 pacer ? &mock_paced_sender_ : nullptr, |
| 137 nullptr, nullptr, nullptr, nullptr, | 135 nullptr, nullptr, nullptr, nullptr, |
| 138 nullptr)); | 136 nullptr)); |
| 139 rtp_sender_->SetSequenceNumber(kSeqNum); | 137 rtp_sender_->SetSequenceNumber(kSeqNum); |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 621 EXPECT_EQ(0, rtp_header2.extension.transmissionTimeOffset); | 619 EXPECT_EQ(0, rtp_header2.extension.transmissionTimeOffset); |
| 622 EXPECT_EQ(0u, rtp_header2.extension.absoluteSendTime); | 620 EXPECT_EQ(0u, rtp_header2.extension.absoluteSendTime); |
| 623 EXPECT_FALSE(rtp_header2.extension.voiceActivity); | 621 EXPECT_FALSE(rtp_header2.extension.voiceActivity); |
| 624 EXPECT_EQ(0u, rtp_header2.extension.audioLevel); | 622 EXPECT_EQ(0u, rtp_header2.extension.audioLevel); |
| 625 EXPECT_EQ(0u, rtp_header2.extension.transportSequenceNumber); | 623 EXPECT_EQ(0u, rtp_header2.extension.transportSequenceNumber); |
| 626 } | 624 } |
| 627 | 625 |
| 628 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { | 626 TEST_F(RtpSenderTest, TrafficSmoothingWithExtensions) { |
| 629 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 627 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 630 _, kSeqNum, _, _, _)) | 628 _, kSeqNum, _, _, _)) |
| 631 .WillRepeatedly(testing::Return()); | 629 .WillOnce(testing::Return()); |
|
stefan-webrtc
2016/01/14 15:03:42
I _think_ you don't need this if the method is voi
terelius
2016/01/14 15:41:01
You're right. Done.
| |
| 632 | 630 |
| 633 rtp_sender_->SetStorePacketsStatus(true, 10); | 631 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 634 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 632 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 635 kRtpExtensionTransmissionTimeOffset, | 633 kRtpExtensionTransmissionTimeOffset, |
| 636 kTransmissionTimeOffsetExtensionId)); | 634 kTransmissionTimeOffsetExtensionId)); |
| 637 EXPECT_EQ( | 635 EXPECT_EQ( |
| 638 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 636 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 639 kAbsoluteSendTimeExtensionId)); | 637 kAbsoluteSendTimeExtensionId)); |
| 640 rtp_sender_->SetTargetBitrate(300000); | 638 rtp_sender_->SetTargetBitrate(300000); |
| 641 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 639 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 673 // Verify transmission time offset. | 671 // Verify transmission time offset. |
| 674 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 672 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
| 675 uint64_t expected_send_time = | 673 uint64_t expected_send_time = |
| 676 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 674 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
| 677 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 675 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
| 678 } | 676 } |
| 679 | 677 |
| 680 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { | 678 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { |
| 681 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 679 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 682 _, kSeqNum, _, _, _)) | 680 _, kSeqNum, _, _, _)) |
| 683 .WillRepeatedly(testing::Return()); | 681 .WillOnce(testing::Return()); |
| 684 | 682 |
| 685 rtp_sender_->SetStorePacketsStatus(true, 10); | 683 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 686 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 684 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 687 kRtpExtensionTransmissionTimeOffset, | 685 kRtpExtensionTransmissionTimeOffset, |
| 688 kTransmissionTimeOffsetExtensionId)); | 686 kTransmissionTimeOffsetExtensionId)); |
| 689 EXPECT_EQ( | 687 EXPECT_EQ( |
| 690 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 688 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 691 kAbsoluteSendTimeExtensionId)); | 689 kAbsoluteSendTimeExtensionId)); |
| 692 rtp_sender_->SetTargetBitrate(300000); | 690 rtp_sender_->SetTargetBitrate(300000); |
| 693 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 691 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| 694 int rtp_length_int = rtp_sender_->BuildRTPheader( | 692 int rtp_length_int = rtp_sender_->BuildRTPheader( |
| 695 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); | 693 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); |
| 696 ASSERT_NE(-1, rtp_length_int); | 694 ASSERT_NE(-1, rtp_length_int); |
| 697 size_t rtp_length = static_cast<size_t>(rtp_length_int); | 695 size_t rtp_length = static_cast<size_t>(rtp_length_int); |
| 698 | 696 |
| 699 // Packet should be stored in a send bucket. | 697 // Packet should be stored in a send bucket. |
| 700 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, | 698 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, |
| 701 capture_time_ms, kAllowRetransmission, | 699 capture_time_ms, kAllowRetransmission, |
| 702 RtpPacketSender::kNormalPriority)); | 700 RtpPacketSender::kNormalPriority)); |
| 703 | 701 |
| 704 EXPECT_EQ(0, transport_.packets_sent_); | 702 EXPECT_EQ(0, transport_.packets_sent_); |
| 705 | 703 |
| 706 EXPECT_CALL(mock_paced_sender_, | 704 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 707 InsertPacket(RtpPacketSender::kHighPriority, _, kSeqNum, _, _, _)) | 705 _, kSeqNum, _, _, _)) |
| 708 .WillRepeatedly(testing::Return()); | 706 .WillOnce(testing::Return()); |
| 709 | 707 |
| 710 const int kStoredTimeInMs = 100; | 708 const int kStoredTimeInMs = 100; |
| 711 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 709 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
| 712 | 710 |
| 713 EXPECT_EQ(rtp_length_int, rtp_sender_->ReSendPacket(kSeqNum)); | 711 EXPECT_EQ(rtp_length_int, rtp_sender_->ReSendPacket(kSeqNum)); |
| 714 EXPECT_EQ(0, transport_.packets_sent_); | 712 EXPECT_EQ(0, transport_.packets_sent_); |
| 715 | 713 |
| 716 rtp_sender_->TimeToSendPacket(kSeqNum, capture_time_ms, false); | 714 rtp_sender_->TimeToSendPacket(kSeqNum, capture_time_ms, false); |
| 717 | 715 |
| 718 // Process send bucket. Packet should now be sent. | 716 // Process send bucket. Packet should now be sent. |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 734 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 732 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
| 735 uint64_t expected_send_time = | 733 uint64_t expected_send_time = |
| 736 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 734 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
| 737 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 735 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
| 738 } | 736 } |
| 739 | 737 |
| 740 // This test sends 1 regular video packet, then 4 padding packets, and then | 738 // This test sends 1 regular video packet, then 4 padding packets, and then |
| 741 // 1 more regular packet. | 739 // 1 more regular packet. |
| 742 TEST_F(RtpSenderTest, SendPadding) { | 740 TEST_F(RtpSenderTest, SendPadding) { |
| 743 // Make all (non-padding) packets go to send queue. | 741 // Make all (non-padding) packets go to send queue. |
| 744 EXPECT_CALL(mock_paced_sender_, | 742 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 745 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | 743 _, kSeqNum, _, _, _)) |
| 746 .WillRepeatedly(testing::Return()); | 744 .WillOnce(testing::Return()); |
| 747 | 745 |
| 748 uint16_t seq_num = kSeqNum; | 746 uint16_t seq_num = kSeqNum; |
| 749 uint32_t timestamp = kTimestamp; | 747 uint32_t timestamp = kTimestamp; |
| 750 rtp_sender_->SetStorePacketsStatus(true, 10); | 748 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 751 size_t rtp_header_len = kRtpHeaderSize; | 749 size_t rtp_header_len = kRtpHeaderSize; |
| 752 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 750 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 753 kRtpExtensionTransmissionTimeOffset, | 751 kRtpExtensionTransmissionTimeOffset, |
| 754 kTransmissionTimeOffsetExtensionId)); | 752 kTransmissionTimeOffsetExtensionId)); |
| 755 rtp_header_len += 4; // 4 bytes extension. | 753 rtp_header_len += 4; // 4 bytes extension. |
| 756 EXPECT_EQ( | 754 EXPECT_EQ( |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 825 timestamp += 90 * kPaddingPeriodMs; | 823 timestamp += 90 * kPaddingPeriodMs; |
| 826 } | 824 } |
| 827 | 825 |
| 828 // Send a regular video packet again. | 826 // Send a regular video packet again. |
| 829 capture_time_ms = fake_clock_.TimeInMilliseconds(); | 827 capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| 830 rtp_length_int = rtp_sender_->BuildRTPheader(packet_, kPayload, kMarkerBit, | 828 rtp_length_int = rtp_sender_->BuildRTPheader(packet_, kPayload, kMarkerBit, |
| 831 timestamp, capture_time_ms); | 829 timestamp, capture_time_ms); |
| 832 ASSERT_NE(-1, rtp_length_int); | 830 ASSERT_NE(-1, rtp_length_int); |
| 833 rtp_length = static_cast<size_t>(rtp_length_int); | 831 rtp_length = static_cast<size_t>(rtp_length_int); |
| 834 | 832 |
| 833 EXPECT_CALL(mock_paced_sender_, | |
| 834 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | |
| 835 .WillOnce(testing::Return()); | |
| 836 | |
| 835 // Packet should be stored in a send bucket. | 837 // Packet should be stored in a send bucket. |
| 836 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, | 838 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, |
| 837 capture_time_ms, kAllowRetransmission, | 839 capture_time_ms, kAllowRetransmission, |
| 838 RtpPacketSender::kNormalPriority)); | 840 RtpPacketSender::kNormalPriority)); |
| 839 | 841 |
| 840 rtp_sender_->TimeToSendPacket(seq_num, capture_time_ms, false); | 842 rtp_sender_->TimeToSendPacket(seq_num, capture_time_ms, false); |
| 841 // Process send bucket. | 843 // Process send bucket. |
| 842 EXPECT_EQ(++total_packets_sent, transport_.packets_sent_); | 844 EXPECT_EQ(++total_packets_sent, transport_.packets_sent_); |
| 843 EXPECT_EQ(rtp_length, transport_.last_sent_packet_len_); | 845 EXPECT_EQ(rtp_length, transport_.last_sent_packet_len_); |
| 844 // Parse sent packet. | 846 // Parse sent packet. |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 855 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 857 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
| 856 } | 858 } |
| 857 | 859 |
| 858 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 860 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
| 859 MockTransport transport; | 861 MockTransport transport; |
| 860 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, | 862 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, |
| 861 &mock_paced_sender_, nullptr, nullptr, | 863 &mock_paced_sender_, nullptr, nullptr, |
| 862 nullptr, nullptr, nullptr)); | 864 nullptr, nullptr, nullptr)); |
| 863 rtp_sender_->SetSequenceNumber(kSeqNum); | 865 rtp_sender_->SetSequenceNumber(kSeqNum); |
| 864 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 866 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |
| 865 // Make all packets go through the pacer. | |
| 866 EXPECT_CALL(mock_paced_sender_, | |
| 867 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | |
| 868 .WillRepeatedly(testing::Return()); | |
| 869 | 867 |
| 870 uint16_t seq_num = kSeqNum; | 868 uint16_t seq_num = kSeqNum; |
| 871 rtp_sender_->SetStorePacketsStatus(true, 10); | 869 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 872 int32_t rtp_header_len = kRtpHeaderSize; | 870 int32_t rtp_header_len = kRtpHeaderSize; |
| 873 EXPECT_EQ( | 871 EXPECT_EQ( |
| 874 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 872 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 875 kAbsoluteSendTimeExtensionId)); | 873 kAbsoluteSendTimeExtensionId)); |
| 876 rtp_header_len += 4; // 4 bytes extension. | 874 rtp_header_len += 4; // 4 bytes extension. |
| 877 rtp_header_len += 4; // 4 extra bytes common to all extension headers. | 875 rtp_header_len += 4; // 4 extra bytes common to all extension headers. |
| 878 | 876 |
| 879 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); | 877 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); |
| 880 rtp_sender_->SetRtxSsrc(1234); | 878 rtp_sender_->SetRtxSsrc(1234); |
| 881 | 879 |
| 882 // Create and set up parser. | 880 // Create and set up parser. |
| 883 rtc::scoped_ptr<webrtc::RtpHeaderParser> rtp_parser( | 881 rtc::scoped_ptr<webrtc::RtpHeaderParser> rtp_parser( |
| 884 webrtc::RtpHeaderParser::Create()); | 882 webrtc::RtpHeaderParser::Create()); |
| 885 ASSERT_TRUE(rtp_parser.get() != nullptr); | 883 ASSERT_TRUE(rtp_parser.get() != nullptr); |
| 886 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, | 884 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, |
| 887 kTransmissionTimeOffsetExtensionId); | 885 kTransmissionTimeOffsetExtensionId); |
| 888 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 886 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 889 kAbsoluteSendTimeExtensionId); | 887 kAbsoluteSendTimeExtensionId); |
| 890 rtp_sender_->SetTargetBitrate(300000); | 888 rtp_sender_->SetTargetBitrate(300000); |
| 891 const size_t kNumPayloadSizes = 10; | 889 const size_t kNumPayloadSizes = 10; |
| 892 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, | 890 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, |
| 893 750, 800, 850, 900, 950}; | 891 750, 800, 850, 900, 950}; |
| 892 // Expect all packets go through the pacer. | |
| 893 EXPECT_CALL(mock_paced_sender_, | |
| 894 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | |
| 895 .Times(kNumPayloadSizes) | |
| 896 .WillRepeatedly(testing::Return()); | |
| 894 // Send 10 packets of increasing size. | 897 // Send 10 packets of increasing size. |
| 895 for (size_t i = 0; i < kNumPayloadSizes; ++i) { | 898 for (size_t i = 0; i < kNumPayloadSizes; ++i) { |
| 896 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 899 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| 897 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); | 900 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); |
| 898 SendPacket(capture_time_ms, kPayloadSizes[i]); | 901 SendPacket(capture_time_ms, kPayloadSizes[i]); |
| 899 rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false); | 902 rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false); |
| 900 fake_clock_.AdvanceTimeMilliseconds(33); | 903 fake_clock_.AdvanceTimeMilliseconds(33); |
| 901 } | 904 } |
| 902 // The amount of padding to send it too small to send a payload packet. | 905 // The amount of padding to send it too small to send a payload packet. |
| 903 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 906 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 996 nullptr, &callback, nullptr)); | 999 nullptr, &callback, nullptr)); |
| 997 | 1000 |
| 998 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 1001 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
| 999 const uint8_t payload_type = 127; | 1002 const uint8_t payload_type = 127; |
| 1000 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 1003 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
| 1001 0, 1500)); | 1004 0, 1500)); |
| 1002 uint8_t payload[] = {47, 11, 32, 93, 89}; | 1005 uint8_t payload[] = {47, 11, 32, 93, 89}; |
| 1003 rtp_sender_->SetStorePacketsStatus(true, 1); | 1006 rtp_sender_->SetStorePacketsStatus(true, 1); |
| 1004 uint32_t ssrc = rtp_sender_->SSRC(); | 1007 uint32_t ssrc = rtp_sender_->SSRC(); |
| 1005 | 1008 |
| 1009 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | |
| 1010 .Times(::testing::AtLeast(2)) | |
| 1011 .WillRepeatedly(testing::Return()); | |
| 1012 | |
| 1006 ASSERT_EQ( | 1013 ASSERT_EQ( |
| 1007 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, | 1014 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, |
| 1008 payload, sizeof(payload), nullptr)); | 1015 payload, sizeof(payload), nullptr)); |
| 1009 | 1016 |
| 1010 EXPECT_EQ(1U, callback.num_calls_); | 1017 EXPECT_EQ(1U, callback.num_calls_); |
| 1011 EXPECT_EQ(ssrc, callback.ssrc_); | 1018 EXPECT_EQ(ssrc, callback.ssrc_); |
| 1012 EXPECT_EQ(1, callback.frame_counts_.key_frames); | 1019 EXPECT_EQ(1, callback.frame_counts_.key_frames); |
| 1013 EXPECT_EQ(0, callback.frame_counts_.delta_frames); | 1020 EXPECT_EQ(0, callback.frame_counts_.delta_frames); |
| 1014 | 1021 |
| 1015 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type, | 1022 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type, |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1418 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), | 1425 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
| 1419 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1426 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
| 1420 | 1427 |
| 1421 // Verify that this packet does have CVO byte. | 1428 // Verify that this packet does have CVO byte. |
| 1422 VerifyCVOPacket( | 1429 VerifyCVOPacket( |
| 1423 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1430 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
| 1424 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1431 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
| 1425 hdr.rotation); | 1432 hdr.rotation); |
| 1426 } | 1433 } |
| 1427 } // namespace webrtc | 1434 } // namespace webrtc |
| OLD | NEW |