Add AbsoluteCaptureTimeReceiver to audio ChannelReceive.

Bug: webrtc:10739
Change-Id: Ib4aeead29c8f6e605e5df5c2d14730824b10484e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167921
Reviewed-by: Chen Xing <chxg@google.com>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30516}
This commit is contained in:
Minyue Li 2020-02-11 13:04:02 +01:00 committed by Commit Bot
parent 11af1d7444
commit b506fee221

View File

@ -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<FrameDecryptorInterface> 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<uint32_t>(packet_copy.payload_type_frequency()),
header.extension.absolute_capture_time);
ReceivePacket(packet_copy.data(), packet_copy.size(), header);
}