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..f35680b2d1888df392391e575980b70c4076bc86 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()); |
| } |
| + |
| TEST_P(RtpSenderTestWithoutPacer, |
| TransportFeedbackObserverGetsCorrectByteCount) { |
| constexpr int kRtpOverheadBytesPerPacket = 12 + 8; |
| @@ -460,6 +464,58 @@ 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)); |
| + EXPECT_EQ(0, rtp_sender_->RegisterRtpHeaderExtension( |
| + kRtpExtensionTransmissionTimeOffset, |
| + kTransmissionTimeOffsetExtensionId)); |
| + EXPECT_EQ( |
| + 0, rtp_sender_->RegisterRtpHeaderExtension(kRtpExtensionAbsoluteSendTime, |
| + kAbsoluteSendTimeExtensionId)); |
|
sprang_webrtc
2017/06/13 14:14:14
why toffset and ast extensions?
ilnik
2017/06/13 14:55:44
Leftover from copypaste and playing around. Remove
|
| + 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); |
| + VideoTiming kVideoTiming = {0u, 0u, 0u, 0u, 0u, 0u, true}; |
|
sprang_webrtc
2017/06/13 14:14:14
const
ilnik
2017/06/13 14:55:44
Done.
|
| + 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); |
|
sprang_webrtc
2017/06/13 14:14:14
nit: indentation?
ilnik
2017/06/13 14:55:44
Done.
|
| + |
| + 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); |
| +} |
| + |
| TEST_P(RtpSenderTest, TrafficSmoothingWithExtensions) { |
| EXPECT_CALL(mock_paced_sender_, InsertPacket(RtpPacketSender::kNormalPriority, |
| kSsrc, kSeqNum, _, _, _)); |