diff --git a/api/rtp_parameters.cc b/api/rtp_parameters.cc index 2b580b1084..9b72960068 100644 --- a/api/rtp_parameters.cc +++ b/api/rtp_parameters.cc @@ -159,8 +159,7 @@ constexpr int RtpExtension::kOneByteHeaderExtensionMaxValueSize; bool RtpExtension::IsSupportedForAudio(const std::string& uri) { return uri == webrtc::RtpExtension::kAudioLevelUri || uri == webrtc::RtpExtension::kAbsSendTimeUri || - // TODO(bugs.webrtc.org/10739): Uncomment once the audio impl is ready. - // uri == webrtc::RtpExtension::kAbsoluteCaptureTimeUri || + uri == webrtc::RtpExtension::kAbsoluteCaptureTimeUri || uri == webrtc::RtpExtension::kTransportSequenceNumberUri || uri == webrtc::RtpExtension::kTransportSequenceNumberV2Uri || uri == webrtc::RtpExtension::kMidUri || @@ -171,8 +170,7 @@ bool RtpExtension::IsSupportedForAudio(const std::string& uri) { bool RtpExtension::IsSupportedForVideo(const std::string& uri) { return uri == webrtc::RtpExtension::kTimestampOffsetUri || uri == webrtc::RtpExtension::kAbsSendTimeUri || - // TODO(bugs.webrtc.org/10739): Uncomment once the video impl is ready. - // uri == webrtc::RtpExtension::kAbsoluteCaptureTimeUri || + uri == webrtc::RtpExtension::kAbsoluteCaptureTimeUri || uri == webrtc::RtpExtension::kVideoRotationUri || uri == webrtc::RtpExtension::kTransportSequenceNumberUri || uri == webrtc::RtpExtension::kTransportSequenceNumberV2Uri || diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc index 9c709d8e9a..3e1da09b99 100644 --- a/audio/audio_send_stream.cc +++ b/audio/audio_send_stream.cc @@ -212,6 +212,8 @@ AudioSendStream::ExtensionIds AudioSendStream::FindExtensionIds( ids.rid = extension.id; } else if (extension.uri == RtpExtension::kRepairedRidUri) { ids.repaired_rid = extension.id; + } else if (extension.uri == RtpExtension::kAbsoluteCaptureTimeUri) { + ids.abs_capture_time = extension.id; } } return ids; @@ -323,6 +325,15 @@ void AudioSendStream::ConfigureStream( rtp_rtcp_module_->SetRid(new_config.rtp.rid); } + if (first_time || new_ids.abs_capture_time != old_ids.abs_capture_time) { + rtp_rtcp_module_->DeregisterSendRtpHeaderExtension( + kRtpExtensionAbsoluteCaptureTime); + if (new_ids.abs_capture_time) { + rtp_rtcp_module_->RegisterRtpHeaderExtension( + AbsoluteCaptureTimeExtension::kUri, new_ids.abs_capture_time); + } + } + if (!ReconfigureSendCodec(new_config)) { RTC_LOG(LS_ERROR) << "Failed to set up send codec state."; } diff --git a/audio/audio_send_stream.h b/audio/audio_send_stream.h index 6875915ee2..1dbb134921 100644 --- a/audio/audio_send_stream.h +++ b/audio/audio_send_stream.h @@ -190,6 +190,7 @@ class AudioSendStream final : public webrtc::AudioSendStream, struct ExtensionIds { int audio_level = 0; int abs_send_time = 0; + int abs_capture_time = 0; int transport_sequence_number = 0; int mid = 0; int rid = 0;