From b506fee2212947f5dbf673301804a9ce36d7947d Mon Sep 17 00:00:00 2001 From: Minyue Li Date: Tue, 11 Feb 2020 13:04:02 +0100 Subject: [PATCH] Add AbsoluteCaptureTimeReceiver to audio ChannelReceive. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:10739 Change-Id: Ib4aeead29c8f6e605e5df5c2d14730824b10484e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167921 Reviewed-by: Chen Xing Reviewed-by: Oskar Sundbom Reviewed-by: Per Ã…hgren Commit-Queue: Minyue Li Cr-Commit-Position: refs/heads/master@{#30516} --- audio/channel_receive.cc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/audio/channel_receive.cc b/audio/channel_receive.cc index d0c17fbbe2..21af710892 100644 --- a/audio/channel_receive.cc +++ b/audio/channel_receive.cc @@ -32,6 +32,7 @@ #include "modules/rtp_rtcp/include/receive_statistics.h" #include "modules/rtp_rtcp/include/remote_ntp_time_estimator.h" #include "modules/rtp_rtcp/include/rtp_rtcp.h" +#include "modules/rtp_rtcp/source/absolute_capture_time_receiver.h" #include "modules/rtp_rtcp/source/rtp_header_extensions.h" #include "modules/rtp_rtcp/source/rtp_packet_received.h" #include "modules/rtp_rtcp/source/rtp_rtcp_config.h" @@ -259,6 +260,8 @@ class ChannelReceive : public ChannelReceiveInterface { // E2EE Audio Frame Decryption rtc::scoped_refptr frame_decryptor_; webrtc::CryptoOptions crypto_options_; + + webrtc::AbsoluteCaptureTimeReceiver absolute_capture_time_receiver_; }; void ChannelReceive::OnReceivedPayloadData( @@ -440,7 +443,8 @@ ChannelReceive::ChannelReceive( _outputGain(1.0f), associated_send_channel_(nullptr), frame_decryptor_(frame_decryptor), - crypto_options_(crypto_options) { + crypto_options_(crypto_options), + absolute_capture_time_receiver_(clock) { // TODO(nisse): Use _moduleProcessThreadPtr instead? module_process_thread_checker_.Detach(); @@ -543,6 +547,15 @@ void ChannelReceive::OnRtpPacket(const RtpPacketReceived& packet) { RTPHeader header; packet_copy.GetHeader(&header); + // Interpolates absolute capture timestamp RTP header extension. + header.extension.absolute_capture_time = + absolute_capture_time_receiver_.OnReceivePacket( + AbsoluteCaptureTimeReceiver::GetSource(header.ssrc, + header.arrOfCSRCs), + header.timestamp, + rtc::saturated_cast(packet_copy.payload_type_frequency()), + header.extension.absolute_capture_time); + ReceivePacket(packet_copy.data(), packet_copy.size(), header); }