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

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

Issue 2911193002: Implement timing frames. (Closed)
Patch Set: Implement Sprang@ 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..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, _, _, _));

Powered by Google App Engine
This is Rietveld 408576698