diff --git a/webrtc/video_engine/internal/video_send_stream.cc b/webrtc/video_engine/internal/video_send_stream.cc index 979631bb20..76d8bc3d2c 100644 --- a/webrtc/video_engine/internal/video_send_stream.cc +++ b/webrtc/video_engine/internal/video_send_stream.cc @@ -112,6 +112,9 @@ VideoSendStream::VideoSendStream(newapi::Transport* transport, if (extension == "toffset") { if (rtp_rtcp_->SetSendTimestampOffsetStatus(channel_, true, id) != 0) abort(); + } else if (extension == "abs-send-time") { + if (rtp_rtcp_->SetSendAbsoluteSendTimeStatus(channel_, true, id) != 0) + abort(); } else { abort(); // Unsupported extension. } diff --git a/webrtc/video_engine/test/send_stream_tests.cc b/webrtc/video_engine/test/send_stream_tests.cc index 645cda0455..1753b43538 100644 --- a/webrtc/video_engine/test/send_stream_tests.cc +++ b/webrtc/video_engine/test/send_stream_tests.cc @@ -138,6 +138,37 @@ TEST_F(VideoSendStreamTest, SupportsCName) { RunSendTest(call.get(), send_config, &observer); } +TEST_F(VideoSendStreamTest, SupportsAbsoluteSendTime) { + static const uint8_t kAbsSendTimeExtensionId = 13; + class AbsoluteSendTimeObserver : public SendTransportObserver { + public: + AbsoluteSendTimeObserver() : SendTransportObserver(30 * 1000) { + EXPECT_TRUE(rtp_header_parser_->RegisterRtpHeaderExtension( + kRtpExtensionAbsoluteSendTime, kAbsSendTimeExtensionId)); + } + + virtual bool SendRTP(const uint8_t* packet, size_t length) OVERRIDE { + RTPHeader header; + EXPECT_TRUE( + rtp_header_parser_->Parse(packet, static_cast(length), &header)); + + if (header.extension.absoluteSendTime > 0) + send_test_complete_->Set(); + + return true; + } + } observer; + + Call::Config call_config(&observer); + scoped_ptr call(Call::Create(call_config)); + + VideoSendStream::Config send_config = GetSendTestConfig(call.get()); + send_config.rtp.extensions.push_back( + RtpExtension("abs-send-time", kAbsSendTimeExtensionId)); + + RunSendTest(call.get(), send_config, &observer); +} + TEST_F(VideoSendStreamTest, SupportsTransmissionTimeOffset) { static const uint8_t kTOffsetExtensionId = 13; class DelayedEncoder : public test::FakeEncoder {