Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(597)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc

Issue 2911193002: Implement timing frames. (Closed)
Patch Set: Implement Asapersson@ comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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, _, _, _));

Powered by Google App Engine
This is Rietveld 408576698