Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc |
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc |
| index d44cf683dc03e4460506f9698b1402ead4086636..823eface6d988c43574f68c754f42dd3961f92be 100644 |
| --- a/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc |
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc |
| @@ -38,6 +38,7 @@ namespace { |
| const int kTransmissionTimeOffsetExtensionId = 1; |
| const int kAbsoluteSendTimeExtensionId = 14; |
| const int kTransportSequenceNumberExtensionId = 13; |
| +const int kVideoTimingExtensionId = 12; |
| const int kPayload = 100; |
| const int kRtxPayload = 98; |
| const uint32_t kTimestamp = 10; |
| @@ -74,6 +75,8 @@ class LoopbackTransportTest : public webrtc::Transport { |
| kVideoRotationExtensionId); |
| receivers_extensions_.Register(kRtpExtensionAudioLevel, |
| kAudioLevelExtensionId); |
| + receivers_extensions_.Register(kRtpExtensionVideoTiming, |
| + kVideoTimingExtensionId); |
| } |
| bool SendRtp(const uint8_t* data, |
| @@ -347,6 +350,7 @@ TEST_P(RtpSenderTestWithoutPacer, AssignSequenceNumberSetPaddingTimestamps) { |
| EXPECT_EQ(kTimestamp, transport_.last_sent_packet().Timestamp()); |
| } |
| + |
|
åsapersson
2017/06/14 08:03:50
remove extra line
ilnik
2017/06/14 10:17:11
Done.
|
| TEST_P(RtpSenderTestWithoutPacer, |
| TransportFeedbackObserverGetsCorrectByteCount) { |
| constexpr int kRtpOverheadBytesPerPacket = 12 + 8; |
| @@ -460,6 +464,52 @@ TEST_P(RtpSenderTest, SendsPacketsWithTransportSequenceNumber) { |
| EXPECT_EQ(transport_.last_packet_id_, transport_seq_no); |
| } |
| +TEST_P(RtpSenderTestWithoutPacer, WritesTimestampToTimingExtension) { |
| + rtp_sender_->SetStorePacketsStatus(true, 10); |
| + EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| + kRtpExtensionVideoTiming, |
| + kVideoTimingExtensionId)); |
| + int64_t capture_time_ms = fake_clock_.TimeInMilliseconds(); |
| + auto packet = rtp_sender_->AllocatePacket(); |
| + packet->SetPayloadType(kPayload); |
| + packet->SetMarker(true); |
| + packet->SetTimestamp(kTimestamp); |
| + packet->set_capture_time_ms(capture_time_ms); |
| + const VideoTiming kVideoTiming = {0u, 0u, 0u, 0u, 0u, 0u, true}; |
| + packet->SetExtension<VideoTimingExtension>(kVideoTiming); |
| + EXPECT_TRUE(rtp_sender_->AssignSequenceNumber(packet.get())); |
| + size_t packet_size = packet->size(); |
| + webrtc::RTPHeader rtp_header; |
| + |
| + packet->GetHeader(&rtp_header); |
| + |
| + const int kStoredTimeInMs = 100; |
| + fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
| + |
| + EXPECT_TRUE(rtp_sender_->SendToNetwork(std::move(packet), |
| + kAllowRetransmission, |
| + RtpPacketSender::kNormalPriority)); |
| + EXPECT_EQ(1, transport_.packets_sent()); |
| + EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); |
| + |
| + transport_.last_sent_packet().GetHeader(&rtp_header); |
| + EXPECT_TRUE(rtp_header.extension.hasVideoTiming); |
| + EXPECT_EQ(kStoredTimeInMs, |
| + rtp_header.extension.videoTiming.pacer_exit_ms_delta); |
| + |
| + fake_clock_.AdvanceTimeMilliseconds(kStoredTimeInMs); |
| + rtp_sender_->TimeToSendPacket(kSsrc, kSeqNum, capture_time_ms, false, |
| + PacedPacketInfo()); |
| + |
| + EXPECT_EQ(2, transport_.packets_sent()); |
| + EXPECT_EQ(packet_size, transport_.last_sent_packet().size()); |
| + |
| + transport_.last_sent_packet().GetHeader(&rtp_header); |
| + EXPECT_TRUE(rtp_header.extension.hasVideoTiming); |
| + EXPECT_EQ(kStoredTimeInMs * 2, |
| + rtp_header.extension.videoTiming.pacer_exit_ms_delta); |
| +} |
| + |
|
åsapersson
2017/06/14 08:03:50
Perhaps also add a test which calls rtp_sender_vid
ilnik
2017/06/14 10:17:10
Done.
|
| TEST_P(RtpSenderTest, TrafficSmoothingWithExtensions) { |
| EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| kSsrc, kSeqNum, _, _, _)); |