| 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 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 | 618 |
| 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()); | |
| 632 | 629 |
| 633 rtp_sender_->SetStorePacketsStatus(true, 10); | 630 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 634 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 631 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 635 kRtpExtensionTransmissionTimeOffset, | 632 kRtpExtensionTransmissionTimeOffset, |
| 636 kTransmissionTimeOffsetExtensionId)); | 633 kTransmissionTimeOffsetExtensionId)); |
| 637 EXPECT_EQ( | 634 EXPECT_EQ( |
| 638 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 635 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 639 kAbsoluteSendTimeExtensionId)); | 636 kAbsoluteSendTimeExtensionId)); |
| 640 rtp_sender_->SetTargetBitrate(300000); | 637 rtp_sender_->SetTargetBitrate(300000); |
| 641 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 638 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 672 | 669 |
| 673 // Verify transmission time offset. | 670 // Verify transmission time offset. |
| 674 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 671 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
| 675 uint64_t expected_send_time = | 672 uint64_t expected_send_time = |
| 676 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 673 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
| 677 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 674 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
| 678 } | 675 } |
| 679 | 676 |
| 680 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { | 677 TEST_F(RtpSenderTest, TrafficSmoothingRetransmits) { |
| 681 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, | 678 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 682 _, kSeqNum, _, _, _)) | 679 _, kSeqNum, _, _, _)); |
| 683 .WillRepeatedly(testing::Return()); | |
| 684 | 680 |
| 685 rtp_sender_->SetStorePacketsStatus(true, 10); | 681 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 686 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 682 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 687 kRtpExtensionTransmissionTimeOffset, | 683 kRtpExtensionTransmissionTimeOffset, |
| 688 kTransmissionTimeOffsetExtensionId)); | 684 kTransmissionTimeOffsetExtensionId)); |
| 689 EXPECT_EQ( | 685 EXPECT_EQ( |
| 690 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 686 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 691 kAbsoluteSendTimeExtensionId)); | 687 kAbsoluteSendTimeExtensionId)); |
| 692 rtp_sender_->SetTargetBitrate(300000); | 688 rtp_sender_->SetTargetBitrate(300000); |
| 693 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 689 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| 694 int rtp_length_int = rtp_sender_->BuildRTPheader( | 690 int rtp_length_int = rtp_sender_->BuildRTPheader( |
| 695 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); | 691 packet_, kPayload, kMarkerBit, kTimestamp, capture_time_ms); |
| 696 ASSERT_NE(-1, rtp_length_int); | 692 ASSERT_NE(-1, rtp_length_int); |
| 697 size_t rtp_length = static_cast<size_t>(rtp_length_int); | 693 size_t rtp_length = static_cast<size_t>(rtp_length_int); |
| 698 | 694 |
| 699 // Packet should be stored in a send bucket. | 695 // Packet should be stored in a send bucket. |
| 700 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, | 696 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, |
| 701 capture_time_ms, kAllowRetransmission, | 697 capture_time_ms, kAllowRetransmission, |
| 702 RtpPacketSender::kNormalPriority)); | 698 RtpPacketSender::kNormalPriority)); |
| 703 | 699 |
| 704 EXPECT_EQ(0, transport_.packets_sent_); | 700 EXPECT_EQ(0, transport_.packets_sent_); |
| 705 | 701 |
| 706 EXPECT_CALL(mock_paced_sender_, | 702 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 707 InsertPacket(RtpPacketSender::kHighPriority, _, kSeqNum, _, _, _)) | 703 _, kSeqNum, _, _, _)); |
| 708 .WillRepeatedly(testing::Return()); | |
| 709 | 704 |
| 710 const int kStoredTimeInMs = 100; | 705 const int kStoredTimeInMs = 100; |
| 711 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); | 706 fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
| 712 | 707 |
| 713 EXPECT_EQ(rtp_length_int, rtp_sender_->ReSendPacket(kSeqNum)); | 708 EXPECT_EQ(rtp_length_int, rtp_sender_->ReSendPacket(kSeqNum)); |
| 714 EXPECT_EQ(0, transport_.packets_sent_); | 709 EXPECT_EQ(0, transport_.packets_sent_); |
| 715 | 710 |
| 716 rtp_sender_->TimeToSendPacket(kSeqNum, capture_time_ms, false); | 711 rtp_sender_->TimeToSendPacket(kSeqNum, capture_time_ms, false); |
| 717 | 712 |
| 718 // Process send bucket. Packet should now be sent. | 713 // Process send bucket. Packet should now be sent. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 734 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); | 729 EXPECT_EQ(kStoredTimeInMs * 90, rtp_header.extension.transmissionTimeOffset); |
| 735 uint64_t expected_send_time = | 730 uint64_t expected_send_time = |
| 736 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); | 731 ConvertMsToAbsSendTime(fake_clock_.TimeInMilliseconds()); |
| 737 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 732 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
| 738 } | 733 } |
| 739 | 734 |
| 740 // This test sends 1 regular video packet, then 4 padding packets, and then | 735 // This test sends 1 regular video packet, then 4 padding packets, and then |
| 741 // 1 more regular packet. | 736 // 1 more regular packet. |
| 742 TEST_F(RtpSenderTest, SendPadding) { | 737 TEST_F(RtpSenderTest, SendPadding) { |
| 743 // Make all (non-padding) packets go to send queue. | 738 // Make all (non-padding) packets go to send queue. |
| 744 EXPECT_CALL(mock_paced_sender_, | 739 EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| 745 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) | 740 _, kSeqNum, _, _, _)); |
| 746 .WillRepeatedly(testing::Return()); | |
| 747 | 741 |
| 748 uint16_t seq_num = kSeqNum; | 742 uint16_t seq_num = kSeqNum; |
| 749 uint32_t timestamp = kTimestamp; | 743 uint32_t timestamp = kTimestamp; |
| 750 rtp_sender_->SetStorePacketsStatus(true, 10); | 744 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 751 size_t rtp_header_len = kRtpHeaderSize; | 745 size_t rtp_header_len = kRtpHeaderSize; |
| 752 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 746 EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| 753 kRtpExtensionTransmissionTimeOffset, | 747 kRtpExtensionTransmissionTimeOffset, |
| 754 kTransmissionTimeOffsetExtensionId)); | 748 kTransmissionTimeOffsetExtensionId)); |
| 755 rtp_header_len += 4; // 4 bytes extension. | 749 rtp_header_len += 4; // 4 bytes extension. |
| 756 EXPECT_EQ( | 750 EXPECT_EQ( |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 timestamp += 90 * kPaddingPeriodMs; | 819 timestamp += 90 * kPaddingPeriodMs; |
| 826 } | 820 } |
| 827 | 821 |
| 828 // Send a regular video packet again. | 822 // Send a regular video packet again. |
| 829 capture_time_ms = fake_clock_.TimeInMilliseconds(); | 823 capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| 830 rtp_length_int = rtp_sender_->BuildRTPheader(packet_, kPayload, kMarkerBit, | 824 rtp_length_int = rtp_sender_->BuildRTPheader(packet_, kPayload, kMarkerBit, |
| 831 timestamp, capture_time_ms); | 825 timestamp, capture_time_ms); |
| 832 ASSERT_NE(-1, rtp_length_int); | 826 ASSERT_NE(-1, rtp_length_int); |
| 833 rtp_length = static_cast<size_t>(rtp_length_int); | 827 rtp_length = static_cast<size_t>(rtp_length_int); |
| 834 | 828 |
| 829 EXPECT_CALL(mock_paced_sender_, |
| 830 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)); |
| 831 |
| 835 // Packet should be stored in a send bucket. | 832 // Packet should be stored in a send bucket. |
| 836 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, | 833 EXPECT_EQ(0, rtp_sender_->SendToNetwork(packet_, 0, rtp_length, |
| 837 capture_time_ms, kAllowRetransmission, | 834 capture_time_ms, kAllowRetransmission, |
| 838 RtpPacketSender::kNormalPriority)); | 835 RtpPacketSender::kNormalPriority)); |
| 839 | 836 |
| 840 rtp_sender_->TimeToSendPacket(seq_num, capture_time_ms, false); | 837 rtp_sender_->TimeToSendPacket(seq_num, capture_time_ms, false); |
| 841 // Process send bucket. | 838 // Process send bucket. |
| 842 EXPECT_EQ(++total_packets_sent, transport_.packets_sent_); | 839 EXPECT_EQ(++total_packets_sent, transport_.packets_sent_); |
| 843 EXPECT_EQ(rtp_length, transport_.last_sent_packet_len_); | 840 EXPECT_EQ(rtp_length, transport_.last_sent_packet_len_); |
| 844 // Parse sent packet. | 841 // Parse sent packet. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 855 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); | 852 EXPECT_EQ(expected_send_time, rtp_header.extension.absoluteSendTime); |
| 856 } | 853 } |
| 857 | 854 |
| 858 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 855 TEST_F(RtpSenderTest, SendRedundantPayloads) { |
| 859 MockTransport transport; | 856 MockTransport transport; |
| 860 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, | 857 rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport, nullptr, |
| 861 &mock_paced_sender_, nullptr, nullptr, | 858 &mock_paced_sender_, nullptr, nullptr, |
| 862 nullptr, nullptr, nullptr)); | 859 nullptr, nullptr, nullptr)); |
| 863 rtp_sender_->SetSequenceNumber(kSeqNum); | 860 rtp_sender_->SetSequenceNumber(kSeqNum); |
| 864 rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 861 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 | 862 |
| 870 uint16_t seq_num = kSeqNum; | 863 uint16_t seq_num = kSeqNum; |
| 871 rtp_sender_->SetStorePacketsStatus(true, 10); | 864 rtp_sender_->SetStorePacketsStatus(true, 10); |
| 872 int32_t rtp_header_len = kRtpHeaderSize; | 865 int32_t rtp_header_len = kRtpHeaderSize; |
| 873 EXPECT_EQ( | 866 EXPECT_EQ( |
| 874 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 867 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 875 kAbsoluteSendTimeExtensionId)); | 868 kAbsoluteSendTimeExtensionId)); |
| 876 rtp_header_len += 4; // 4 bytes extension. | 869 rtp_header_len += 4; // 4 bytes extension. |
| 877 rtp_header_len += 4; // 4 extra bytes common to all extension headers. | 870 rtp_header_len += 4; // 4 extra bytes common to all extension headers. |
| 878 | 871 |
| 879 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); | 872 rtp_sender_->SetRtxStatus(kRtxRetransmitted | kRtxRedundantPayloads); |
| 880 rtp_sender_->SetRtxSsrc(1234); | 873 rtp_sender_->SetRtxSsrc(1234); |
| 881 | 874 |
| 882 // Create and set up parser. | 875 // Create and set up parser. |
| 883 rtc::scoped_ptr<webrtc::RtpHeaderParser> rtp_parser( | 876 rtc::scoped_ptr<webrtc::RtpHeaderParser> rtp_parser( |
| 884 webrtc::RtpHeaderParser::Create()); | 877 webrtc::RtpHeaderParser::Create()); |
| 885 ASSERT_TRUE(rtp_parser.get() != nullptr); | 878 ASSERT_TRUE(rtp_parser.get() != nullptr); |
| 886 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, | 879 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, |
| 887 kTransmissionTimeOffsetExtensionId); | 880 kTransmissionTimeOffsetExtensionId); |
| 888 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 881 rtp_parser->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| 889 kAbsoluteSendTimeExtensionId); | 882 kAbsoluteSendTimeExtensionId); |
| 890 rtp_sender_->SetTargetBitrate(300000); | 883 rtp_sender_->SetTargetBitrate(300000); |
| 891 const size_t kNumPayloadSizes = 10; | 884 const size_t kNumPayloadSizes = 10; |
| 892 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, | 885 const size_t kPayloadSizes[kNumPayloadSizes] = {500, 550, 600, 650, 700, |
| 893 750, 800, 850, 900, 950}; | 886 750, 800, 850, 900, 950}; |
| 887 // Expect all packets go through the pacer. |
| 888 EXPECT_CALL(mock_paced_sender_, |
| 889 InsertPacket(RtpPacketSender::kNormalPriority, _, _, _, _, _)) |
| 890 .Times(kNumPayloadSizes); |
| 894 // Send 10 packets of increasing size. | 891 // Send 10 packets of increasing size. |
| 895 for (size_t i = 0; i < kNumPayloadSizes; ++i) { | 892 for (size_t i = 0; i < kNumPayloadSizes; ++i) { |
| 896 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); | 893 int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| 897 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); | 894 EXPECT_CALL(transport, SendRtp(_, _, _)).WillOnce(testing::Return(true)); |
| 898 SendPacket(capture_time_ms, kPayloadSizes[i]); | 895 SendPacket(capture_time_ms, kPayloadSizes[i]); |
| 899 rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false); | 896 rtp_sender_->TimeToSendPacket(seq_num++, capture_time_ms, false); |
| 900 fake_clock_.AdvanceTimeMilliseconds(33); | 897 fake_clock_.AdvanceTimeMilliseconds(33); |
| 901 } | 898 } |
| 902 // The amount of padding to send it too small to send a payload packet. | 899 // The amount of padding to send it too small to send a payload packet. |
| 903 EXPECT_CALL(transport, SendRtp(_, kMaxPaddingSize + rtp_header_len, _)) | 900 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)); | 993 nullptr, &callback, nullptr)); |
| 997 | 994 |
| 998 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 995 char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |
| 999 const uint8_t payload_type = 127; | 996 const uint8_t payload_type = 127; |
| 1000 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 997 ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |
| 1001 0, 1500)); | 998 0, 1500)); |
| 1002 uint8_t payload[] = {47, 11, 32, 93, 89}; | 999 uint8_t payload[] = {47, 11, 32, 93, 89}; |
| 1003 rtp_sender_->SetStorePacketsStatus(true, 1); | 1000 rtp_sender_->SetStorePacketsStatus(true, 1); |
| 1004 uint32_t ssrc = rtp_sender_->SSRC(); | 1001 uint32_t ssrc = rtp_sender_->SSRC(); |
| 1005 | 1002 |
| 1003 EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |
| 1004 .Times(::testing::AtLeast(2)); |
| 1005 |
| 1006 ASSERT_EQ( | 1006 ASSERT_EQ( |
| 1007 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, | 1007 0, rtp_sender_->SendOutgoingData(kVideoFrameKey, payload_type, 1234, 4321, |
| 1008 payload, sizeof(payload), nullptr)); | 1008 payload, sizeof(payload), nullptr)); |
| 1009 | 1009 |
| 1010 EXPECT_EQ(1U, callback.num_calls_); | 1010 EXPECT_EQ(1U, callback.num_calls_); |
| 1011 EXPECT_EQ(ssrc, callback.ssrc_); | 1011 EXPECT_EQ(ssrc, callback.ssrc_); |
| 1012 EXPECT_EQ(1, callback.frame_counts_.key_frames); | 1012 EXPECT_EQ(1, callback.frame_counts_.key_frames); |
| 1013 EXPECT_EQ(0, callback.frame_counts_.delta_frames); | 1013 EXPECT_EQ(0, callback.frame_counts_.delta_frames); |
| 1014 | 1014 |
| 1015 ASSERT_EQ(0, rtp_sender_->SendOutgoingData(kVideoFrameDelta, payload_type, | 1015 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()), | 1418 reinterpret_cast<uint8_t*>(transport_.sent_packets_[0]->data()), |
| 1419 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); | 1419 transport_.sent_packets_[0]->size(), true, &map, kSeqNum, hdr.rotation); |
| 1420 | 1420 |
| 1421 // Verify that this packet does have CVO byte. | 1421 // Verify that this packet does have CVO byte. |
| 1422 VerifyCVOPacket( | 1422 VerifyCVOPacket( |
| 1423 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), | 1423 reinterpret_cast<uint8_t*>(transport_.sent_packets_[1]->data()), |
| 1424 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, | 1424 transport_.sent_packets_[1]->size(), true, &map, kSeqNum + 1, |
| 1425 hdr.rotation); | 1425 hdr.rotation); |
| 1426 } | 1426 } |
| 1427 } // namespace webrtc | 1427 } // namespace webrtc |
| OLD | NEW |