| 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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   143         transport_(), |   143         transport_(), | 
|   144         kMarkerBit(true) {} |   144         kMarkerBit(true) {} | 
|   145  |   145  | 
|   146   void SetUp() override { SetUpRtpSender(true); } |   146   void SetUp() override { SetUpRtpSender(true); } | 
|   147  |   147  | 
|   148   void SetUpRtpSender(bool pacer) { |   148   void SetUpRtpSender(bool pacer) { | 
|   149     rtp_sender_.reset(new RTPSender( |   149     rtp_sender_.reset(new RTPSender( | 
|   150         false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr, |   150         false, &fake_clock_, &transport_, pacer ? &mock_paced_sender_ : nullptr, | 
|   151         nullptr, &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, |   151         nullptr, &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, | 
|   152         &mock_rtc_event_log_, &send_packet_observer_, |   152         &mock_rtc_event_log_, &send_packet_observer_, | 
|   153         &retransmission_rate_limiter_)); |   153         &retransmission_rate_limiter_, nullptr)); | 
|   154     rtp_sender_->SetSendPayloadType(kPayload); |   154     rtp_sender_->SetSendPayloadType(kPayload); | 
|   155     rtp_sender_->SetSequenceNumber(kSeqNum); |   155     rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   156     rtp_sender_->SetTimestampOffset(0); |   156     rtp_sender_->SetTimestampOffset(0); | 
|   157     rtp_sender_->SetSSRC(kSsrc); |   157     rtp_sender_->SetSSRC(kSsrc); | 
|   158   } |   158   } | 
|   159  |   159  | 
|   160   SimulatedClock fake_clock_; |   160   SimulatedClock fake_clock_; | 
|   161   testing::NiceMock<MockRtcEventLog> mock_rtc_event_log_; |   161   testing::NiceMock<MockRtcEventLog> mock_rtc_event_log_; | 
|   162   MockRtpPacketSender mock_paced_sender_; |   162   MockRtpPacketSender mock_paced_sender_; | 
|   163   testing::StrictMock<MockTransportSequenceNumberAllocator> seq_num_allocator_; |   163   testing::StrictMock<MockTransportSequenceNumberAllocator> seq_num_allocator_; | 
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   437  |   437  | 
|   438   ASSERT_EQ(1u, transport_.sent_packets_.size()); |   438   ASSERT_EQ(1u, transport_.sent_packets_.size()); | 
|   439   // Verify padding packet timestamp. |   439   // Verify padding packet timestamp. | 
|   440   EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); |   440   EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); | 
|   441 } |   441 } | 
|   442  |   442  | 
|   443 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { |   443 TEST_F(RtpSenderTestWithoutPacer, SendsPacketsWithTransportSequenceNumber) { | 
|   444   rtp_sender_.reset(new RTPSender( |   444   rtp_sender_.reset(new RTPSender( | 
|   445       false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, |   445       false, &fake_clock_, &transport_, nullptr, nullptr, &seq_num_allocator_, | 
|   446       &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, |   446       &feedback_observer_, nullptr, nullptr, nullptr, &mock_rtc_event_log_, | 
|   447       &send_packet_observer_, &retransmission_rate_limiter_)); |   447       &send_packet_observer_, &retransmission_rate_limiter_, nullptr)); | 
|   448   EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |   448   EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 
|   449                    kRtpExtensionTransportSequenceNumber, |   449                    kRtpExtensionTransportSequenceNumber, | 
|   450                    kTransportSequenceNumberExtensionId)); |   450                    kTransportSequenceNumberExtensionId)); | 
|   451  |   451  | 
|   452   EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |   452   EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 
|   453       .WillOnce(testing::Return(kTransportSequenceNumber)); |   453       .WillOnce(testing::Return(kTransportSequenceNumber)); | 
|   454   EXPECT_CALL(send_packet_observer_, |   454   EXPECT_CALL(send_packet_observer_, | 
|   455               OnSendPacket(kTransportSequenceNumber, _, _)) |   455               OnSendPacket(kTransportSequenceNumber, _, _)) | 
|   456       .Times(1); |   456       .Times(1); | 
|   457   EXPECT_CALL(feedback_observer_, |   457   EXPECT_CALL(feedback_observer_, | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|   480   EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |   480   EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 
|   481       .WillOnce(testing::Return(kTransportSequenceNumber)); |   481       .WillOnce(testing::Return(kTransportSequenceNumber)); | 
|   482   EXPECT_CALL(send_packet_observer_, |   482   EXPECT_CALL(send_packet_observer_, | 
|   483               OnSendPacket(kTransportSequenceNumber, _, _)) |   483               OnSendPacket(kTransportSequenceNumber, _, _)) | 
|   484       .Times(1); |   484       .Times(1); | 
|   485  |   485  | 
|   486   SendGenericPayload(); |   486   SendGenericPayload(); | 
|   487 } |   487 } | 
|   488  |   488  | 
|   489 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { |   489 TEST_F(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { | 
|   490   rtp_sender_.reset( |   490   rtp_sender_.reset(new RTPSender( | 
|   491       new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, |   491       false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, | 
|   492                     nullptr, &seq_num_allocator_, &feedback_observer_, nullptr, |   492       &seq_num_allocator_, &feedback_observer_, nullptr, nullptr, nullptr, | 
|   493                     nullptr, nullptr, &mock_rtc_event_log_, |   493       &mock_rtc_event_log_, &send_packet_observer_, | 
|   494                     &send_packet_observer_, &retransmission_rate_limiter_)); |   494       &retransmission_rate_limiter_, nullptr)); | 
|   495   rtp_sender_->SetSequenceNumber(kSeqNum); |   495   rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   496   rtp_sender_->SetSSRC(kSsrc); |   496   rtp_sender_->SetSSRC(kSsrc); | 
|   497   rtp_sender_->SetStorePacketsStatus(true, 10); |   497   rtp_sender_->SetStorePacketsStatus(true, 10); | 
|   498   EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |   498   EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 
|   499                    kRtpExtensionTransportSequenceNumber, |   499                    kRtpExtensionTransportSequenceNumber, | 
|   500                    kTransportSequenceNumberExtensionId)); |   500                    kTransportSequenceNumberExtensionId)); | 
|   501  |   501  | 
|   502   EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)); |   502   EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)); | 
|   503   EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) |   503   EXPECT_CALL(seq_num_allocator_, AllocateSequenceNumber()) | 
|   504       .WillOnce(testing::Return(kTransportSequenceNumber)); |   504       .WillOnce(testing::Return(kTransportSequenceNumber)); | 
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   768   rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, |   768   rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, | 
|   769                                 fake_clock_.TimeInMilliseconds(), kIsRetransmit, |   769                                 fake_clock_.TimeInMilliseconds(), kIsRetransmit, | 
|   770                                 PacketInfo::kNotAProbe); |   770                                 PacketInfo::kNotAProbe); | 
|   771   EXPECT_EQ(1, transport_.packets_sent()); |   771   EXPECT_EQ(1, transport_.packets_sent()); | 
|   772 } |   772 } | 
|   773  |   773  | 
|   774 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { |   774 TEST_F(RtpSenderTest, OnSendPacketNotUpdatedWithoutSeqNumAllocator) { | 
|   775   rtp_sender_.reset(new RTPSender( |   775   rtp_sender_.reset(new RTPSender( | 
|   776       false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, |   776       false, &fake_clock_, &transport_, &mock_paced_sender_, nullptr, | 
|   777       nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, |   777       nullptr /* TransportSequenceNumberAllocator */, nullptr, nullptr, nullptr, | 
|   778       nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_)); |   778       nullptr, nullptr, &send_packet_observer_, &retransmission_rate_limiter_, | 
 |   779       nullptr)); | 
|   779   rtp_sender_->SetSequenceNumber(kSeqNum); |   780   rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   780   rtp_sender_->SetSSRC(kSsrc); |   781   rtp_sender_->SetSSRC(kSsrc); | 
|   781   EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |   782   EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( | 
|   782                    kRtpExtensionTransportSequenceNumber, |   783                    kRtpExtensionTransportSequenceNumber, | 
|   783                    kTransportSequenceNumberExtensionId)); |   784                    kTransportSequenceNumberExtensionId)); | 
|   784   rtp_sender_->SetSequenceNumber(kSeqNum); |   785   rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   785   rtp_sender_->SetStorePacketsStatus(true, 10); |   786   rtp_sender_->SetStorePacketsStatus(true, 10); | 
|   786  |   787  | 
|   787   EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); |   788   EXPECT_CALL(send_packet_observer_, OnSendPacket(_, _, _)).Times(0); | 
|   788   EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) |   789   EXPECT_CALL(mock_paced_sender_, InsertPacket(_, kSsrc, kSeqNum, _, _, _)) | 
|   789       .Times(1); |   790       .Times(1); | 
|   790  |   791  | 
|   791   SendGenericPayload();  // Packet passed to pacer. |   792   SendGenericPayload();  // Packet passed to pacer. | 
|   792   const bool kIsRetransmit = false; |   793   const bool kIsRetransmit = false; | 
|   793   rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, |   794   rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, | 
|   794                                 fake_clock_.TimeInMilliseconds(), kIsRetransmit, |   795                                 fake_clock_.TimeInMilliseconds(), kIsRetransmit, | 
|   795                                 PacketInfo::kNotAProbe); |   796                                 PacketInfo::kNotAProbe); | 
|   796   EXPECT_EQ(1, transport_.packets_sent()); |   797   EXPECT_EQ(1, transport_.packets_sent()); | 
|   797 } |   798 } | 
|   798  |   799  | 
|   799 TEST_F(RtpSenderTest, SendRedundantPayloads) { |   800 TEST_F(RtpSenderTest, SendRedundantPayloads) { | 
|   800   MockTransport transport; |   801   MockTransport transport; | 
|   801   rtp_sender_.reset(new RTPSender( |   802   rtp_sender_.reset(new RTPSender( | 
|   802       false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, |   803       false, &fake_clock_, &transport, &mock_paced_sender_, nullptr, nullptr, | 
|   803       nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, |   804       nullptr, nullptr, nullptr, nullptr, &mock_rtc_event_log_, nullptr, | 
|   804       &retransmission_rate_limiter_)); |   805       &retransmission_rate_limiter_, nullptr)); | 
|   805   rtp_sender_->SetSequenceNumber(kSeqNum); |   806   rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   806   rtp_sender_->SetSSRC(kSsrc); |   807   rtp_sender_->SetSSRC(kSsrc); | 
|   807   rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); |   808   rtp_sender_->SetRtxPayloadType(kRtxPayload, kPayload); | 
|   808  |   809  | 
|   809   uint16_t seq_num = kSeqNum; |   810   uint16_t seq_num = kSeqNum; | 
|   810   rtp_sender_->SetStorePacketsStatus(true, 10); |   811   rtp_sender_->SetStorePacketsStatus(true, 10); | 
|   811   int32_t rtp_header_len = kRtpHeaderSize; |   812   int32_t rtp_header_len = kRtpHeaderSize; | 
|   812   EXPECT_EQ( |   813   EXPECT_EQ( | 
|   813       0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |   814       0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, | 
|   814                                                  kAbsoluteSendTimeExtensionId)); |   815                                                  kAbsoluteSendTimeExtensionId)); | 
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   912 TEST_F(RtpSenderTest, SendFlexfecPackets) { |   913 TEST_F(RtpSenderTest, SendFlexfecPackets) { | 
|   913   constexpr int kMediaPayloadType = 127; |   914   constexpr int kMediaPayloadType = 127; | 
|   914   constexpr int kFlexfecPayloadType = 118; |   915   constexpr int kFlexfecPayloadType = 118; | 
|   915   constexpr uint32_t kMediaSsrc = 1234; |   916   constexpr uint32_t kMediaSsrc = 1234; | 
|   916   constexpr uint32_t kFlexfecSsrc = 5678; |   917   constexpr uint32_t kFlexfecSsrc = 5678; | 
|   917   const std::vector<RtpExtension> kNoRtpExtensions; |   918   const std::vector<RtpExtension> kNoRtpExtensions; | 
|   918   FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |   919   FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, | 
|   919                                kNoRtpExtensions, &fake_clock_); |   920                                kNoRtpExtensions, &fake_clock_); | 
|   920  |   921  | 
|   921   // Reset |rtp_sender_| to use FlexFEC. |   922   // Reset |rtp_sender_| to use FlexFEC. | 
|   922   rtp_sender_.reset( |   923   rtp_sender_.reset(new RTPSender( | 
|   923       new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, |   924       false, &fake_clock_, &transport_, &mock_paced_sender_, &flexfec_sender, | 
|   924                     &flexfec_sender, &seq_num_allocator_, nullptr, nullptr, |   925       &seq_num_allocator_, nullptr, nullptr, nullptr, nullptr, | 
|   925                     nullptr, nullptr, &mock_rtc_event_log_, |   926       &mock_rtc_event_log_, &send_packet_observer_, | 
|   926                     &send_packet_observer_, &retransmission_rate_limiter_)); |   927       &retransmission_rate_limiter_, nullptr)); | 
|   927   rtp_sender_->SetSSRC(kMediaSsrc); |   928   rtp_sender_->SetSSRC(kMediaSsrc); | 
|   928   rtp_sender_->SetSequenceNumber(kSeqNum); |   929   rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   929   rtp_sender_->SetSendPayloadType(kMediaPayloadType); |   930   rtp_sender_->SetSendPayloadType(kMediaPayloadType); | 
|   930   rtp_sender_->SetStorePacketsStatus(true, 10); |   931   rtp_sender_->SetStorePacketsStatus(true, 10); | 
|   931  |   932  | 
|   932   // Parameters selected to generate a single FEC packet per media packet. |   933   // Parameters selected to generate a single FEC packet per media packet. | 
|   933   FecProtectionParams params; |   934   FecProtectionParams params; | 
|   934   params.fec_rate = 15; |   935   params.fec_rate = 15; | 
|   935   params.max_fec_frames = 1; |   936   params.max_fec_frames = 1; | 
|   936   params.fec_mask_type = kFecMaskRandom; |   937   params.fec_mask_type = kFecMaskRandom; | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   970   constexpr uint32_t kFlexfecSsrc = 5678; |   971   constexpr uint32_t kFlexfecSsrc = 5678; | 
|   971   const std::vector<RtpExtension> kNoRtpExtensions; |   972   const std::vector<RtpExtension> kNoRtpExtensions; | 
|   972   FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, |   973   FlexfecSender flexfec_sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, | 
|   973                                kNoRtpExtensions, &fake_clock_); |   974                                kNoRtpExtensions, &fake_clock_); | 
|   974  |   975  | 
|   975   // Reset |rtp_sender_| to use FlexFEC. |   976   // Reset |rtp_sender_| to use FlexFEC. | 
|   976   rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |   977   rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 
|   977                                   &flexfec_sender, &seq_num_allocator_, nullptr, |   978                                   &flexfec_sender, &seq_num_allocator_, nullptr, | 
|   978                                   nullptr, nullptr, nullptr, |   979                                   nullptr, nullptr, nullptr, | 
|   979                                   &mock_rtc_event_log_, &send_packet_observer_, |   980                                   &mock_rtc_event_log_, &send_packet_observer_, | 
|   980                                   &retransmission_rate_limiter_)); |   981                                   &retransmission_rate_limiter_, nullptr)); | 
|   981   rtp_sender_->SetSSRC(kMediaSsrc); |   982   rtp_sender_->SetSSRC(kMediaSsrc); | 
|   982   rtp_sender_->SetSequenceNumber(kSeqNum); |   983   rtp_sender_->SetSequenceNumber(kSeqNum); | 
|   983   rtp_sender_->SetSendPayloadType(kMediaPayloadType); |   984   rtp_sender_->SetSendPayloadType(kMediaPayloadType); | 
|   984  |   985  | 
|   985   // Parameters selected to generate a single FEC packet per media packet. |   986   // Parameters selected to generate a single FEC packet per media packet. | 
|   986   FecProtectionParams params; |   987   FecProtectionParams params; | 
|   987   params.fec_rate = 15; |   988   params.fec_rate = 15; | 
|   988   params.max_fec_frames = 1; |   989   params.max_fec_frames = 1; | 
|   989   params.fec_mask_type = kFecMaskRandom; |   990   params.fec_mask_type = kFecMaskRandom; | 
|   990   rtp_sender_->SetFecParameters(params, params); |   991   rtp_sender_->SetFecParameters(params, params); | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|  1013       ++num_calls_; |  1014       ++num_calls_; | 
|  1014       ssrc_ = ssrc; |  1015       ssrc_ = ssrc; | 
|  1015       frame_counts_ = frame_counts; |  1016       frame_counts_ = frame_counts; | 
|  1016     } |  1017     } | 
|  1017  |  1018  | 
|  1018     uint32_t num_calls_; |  1019     uint32_t num_calls_; | 
|  1019     uint32_t ssrc_; |  1020     uint32_t ssrc_; | 
|  1020     FrameCounts frame_counts_; |  1021     FrameCounts frame_counts_; | 
|  1021   } callback; |  1022   } callback; | 
|  1022  |  1023  | 
|  1023   rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, |  1024   rtp_sender_.reset( | 
|  1024                                   &mock_paced_sender_, nullptr, nullptr, |  1025       new RTPSender(false, &fake_clock_, &transport_, &mock_paced_sender_, | 
|  1025                                   nullptr, nullptr, &callback, nullptr, nullptr, |  1026                     nullptr, nullptr, nullptr, nullptr, &callback, nullptr, | 
|  1026                                   nullptr, &retransmission_rate_limiter_)); |  1027                     nullptr, nullptr, &retransmission_rate_limiter_, nullptr)); | 
|  1027  |  1028  | 
|  1028   char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; |  1029   char payload_name[RTP_PAYLOAD_NAME_SIZE] = "GENERIC"; | 
|  1029   const uint8_t payload_type = 127; |  1030   const uint8_t payload_type = 127; | 
|  1030   ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, |  1031   ASSERT_EQ(0, rtp_sender_->RegisterPayload(payload_name, payload_type, 90000, | 
|  1031                                             0, 1500)); |  1032                                             0, 1500)); | 
|  1032   uint8_t payload[] = {47, 11, 32, 93, 89}; |  1033   uint8_t payload[] = {47, 11, 32, 93, 89}; | 
|  1033   rtp_sender_->SetStorePacketsStatus(true, 1); |  1034   rtp_sender_->SetStorePacketsStatus(true, 1); | 
|  1034   uint32_t ssrc = rtp_sender_->SSRC(); |  1035   uint32_t ssrc = rtp_sender_->SSRC(); | 
|  1035  |  1036  | 
|  1036   EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) |  1037   EXPECT_CALL(mock_paced_sender_, InsertPacket(_, _, _, _, _, _)) | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1078     } |  1079     } | 
|  1079  |  1080  | 
|  1080     uint32_t num_calls_; |  1081     uint32_t num_calls_; | 
|  1081     uint32_t ssrc_; |  1082     uint32_t ssrc_; | 
|  1082     uint32_t total_bitrate_; |  1083     uint32_t total_bitrate_; | 
|  1083     uint32_t retransmit_bitrate_; |  1084     uint32_t retransmit_bitrate_; | 
|  1084   } callback; |  1085   } callback; | 
|  1085   rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, |  1086   rtp_sender_.reset(new RTPSender(false, &fake_clock_, &transport_, nullptr, | 
|  1086                                   nullptr, nullptr, nullptr, &callback, nullptr, |  1087                                   nullptr, nullptr, nullptr, &callback, nullptr, | 
|  1087                                   nullptr, nullptr, nullptr, |  1088                                   nullptr, nullptr, nullptr, | 
|  1088                                   &retransmission_rate_limiter_)); |  1089                                   &retransmission_rate_limiter_, nullptr)); | 
|  1089  |  1090  | 
|  1090   // Simulate kNumPackets sent with kPacketInterval ms intervals, with the |  1091   // Simulate kNumPackets sent with kPacketInterval ms intervals, with the | 
|  1091   // number of packets selected so that we fill (but don't overflow) the one |  1092   // number of packets selected so that we fill (but don't overflow) the one | 
|  1092   // second averaging window. |  1093   // second averaging window. | 
|  1093   const uint32_t kWindowSizeMs = 1000; |  1094   const uint32_t kWindowSizeMs = 1000; | 
|  1094   const uint32_t kPacketInterval = 20; |  1095   const uint32_t kPacketInterval = 20; | 
|  1095   const uint32_t kNumPackets = |  1096   const uint32_t kNumPackets = | 
|  1096       (kWindowSizeMs - kPacketInterval) / kPacketInterval; |  1097       (kWindowSizeMs - kPacketInterval) / kPacketInterval; | 
|  1097   // Overhead = 12 bytes RTP header + 1 byte generic header. |  1098   // Overhead = 12 bytes RTP header + 1 byte generic header. | 
|  1098   const uint32_t kPacketOverhead = 13; |  1099   const uint32_t kPacketOverhead = 13; | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1136  |  1137  | 
|  1137 class RtpSenderAudioTest : public RtpSenderTest { |  1138 class RtpSenderAudioTest : public RtpSenderTest { | 
|  1138  protected: |  1139  protected: | 
|  1139   RtpSenderAudioTest() {} |  1140   RtpSenderAudioTest() {} | 
|  1140  |  1141  | 
|  1141   void SetUp() override { |  1142   void SetUp() override { | 
|  1142     payload_ = kAudioPayload; |  1143     payload_ = kAudioPayload; | 
|  1143     rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, |  1144     rtp_sender_.reset(new RTPSender(true, &fake_clock_, &transport_, nullptr, | 
|  1144                                     nullptr, nullptr, nullptr, nullptr, nullptr, |  1145                                     nullptr, nullptr, nullptr, nullptr, nullptr, | 
|  1145                                     nullptr, nullptr, nullptr, |  1146                                     nullptr, nullptr, nullptr, | 
|  1146                                     &retransmission_rate_limiter_)); |  1147                                     &retransmission_rate_limiter_, nullptr)); | 
|  1147     rtp_sender_->SetSequenceNumber(kSeqNum); |  1148     rtp_sender_->SetSequenceNumber(kSeqNum); | 
|  1148   } |  1149   } | 
|  1149 }; |  1150 }; | 
|  1150  |  1151  | 
|  1151 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { |  1152 TEST_F(RtpSenderTestWithoutPacer, StreamDataCountersCallbacks) { | 
|  1152   class TestCallback : public StreamDataCountersCallback { |  1153   class TestCallback : public StreamDataCountersCallback { | 
|  1153    public: |  1154    public: | 
|  1154     TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} |  1155     TestCallback() : StreamDataCountersCallback(), ssrc_(0), counters_() {} | 
|  1155     virtual ~TestCallback() {} |  1156     virtual ~TestCallback() {} | 
|  1156  |  1157  | 
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1487   EXPECT_EQ(kVideoRotation_0, |  1488   EXPECT_EQ(kVideoRotation_0, | 
|  1488             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); |  1489             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 0)); | 
|  1489   EXPECT_EQ(kVideoRotation_90, |  1490   EXPECT_EQ(kVideoRotation_90, | 
|  1490             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); |  1491             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 1)); | 
|  1491   EXPECT_EQ(kVideoRotation_180, |  1492   EXPECT_EQ(kVideoRotation_180, | 
|  1492             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); |  1493             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 2)); | 
|  1493   EXPECT_EQ(kVideoRotation_270, |  1494   EXPECT_EQ(kVideoRotation_270, | 
|  1494             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); |  1495             ConvertCVOByteToVideoRotation(flip_bit | camera_bit | 3)); | 
|  1495 } |  1496 } | 
|  1496  |  1497  | 
 |  1498 namespace { | 
 |  1499 class MockOverheadObserver : public OverheadObserver { | 
 |  1500  public: | 
 |  1501   MOCK_METHOD1(OnOverheadChanged, void(size_t overhead_bytes_per_packet)); | 
 |  1502 }; | 
 |  1503 }  // namespace | 
 |  1504  | 
 |  1505 TEST_F(RtpSenderTest, OnOverheadChanged) { | 
 |  1506   MockOverheadObserver mock_overhead_observer; | 
 |  1507   rtp_sender_.reset( | 
 |  1508       new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, | 
 |  1509                     nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | 
 |  1510                     &retransmission_rate_limiter_, &mock_overhead_observer)); | 
 |  1511  | 
 |  1512   // Transport overhead is set to 28B. | 
 |  1513   EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(28)).Times(1); | 
 |  1514   rtp_sender_->SetTransportOverhead(28); | 
 |  1515  | 
 |  1516   // RTP overhead is 12B. | 
 |  1517   // 28B + 12B = 40B | 
 |  1518   EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(40)).Times(1); | 
 |  1519   SendGenericPayload(); | 
 |  1520  | 
 |  1521   rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionTransmissionTimeOffset, | 
 |  1522                                           kTransmissionTimeOffsetExtensionId); | 
 |  1523  | 
 |  1524   // TransmissionTimeOffset extension has a size of 8B. | 
 |  1525   // 28B + 12B + 8B = 48B | 
 |  1526   EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(48)).Times(1); | 
 |  1527   SendGenericPayload(); | 
 |  1528 } | 
 |  1529  | 
 |  1530 TEST_F(RtpSenderTest, DoesNotUpdateOverheadOnEqualSize) { | 
 |  1531   MockOverheadObserver mock_overhead_observer; | 
 |  1532   rtp_sender_.reset( | 
 |  1533       new RTPSender(false, &fake_clock_, &transport_, nullptr, nullptr, nullptr, | 
 |  1534                     nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, | 
 |  1535                     &retransmission_rate_limiter_, &mock_overhead_observer)); | 
 |  1536  | 
 |  1537   EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(_)).Times(1); | 
 |  1538   rtp_sender_->SetTransportOverhead(28); | 
 |  1539   rtp_sender_->SetTransportOverhead(28); | 
 |  1540  | 
 |  1541   EXPECT_CALL(mock_overhead_observer, OnOverheadChanged(_)).Times(1); | 
 |  1542   SendGenericPayload(); | 
 |  1543   SendGenericPayload(); | 
 |  1544 } | 
 |  1545  | 
|  1497 }  // namespace webrtc |  1546 }  // namespace webrtc | 
| OLD | NEW |