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, _, _, _)); |