Ready to support of absolute capture timestamp header extension.
This does not add it in default SDP offer.
Bug: webrtc:10739
Change-Id: I4e73f4497989fc34f3676927921a4dabb5926096
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169729
Commit-Queue: Minyue Li <minyue@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30707}
diff --git a/api/rtp_parameters.cc b/api/rtp_parameters.cc
index 2b580b1..9b72960 100644
--- a/api/rtp_parameters.cc
+++ b/api/rtp_parameters.cc
@@ -159,8 +159,7 @@
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::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 9c709d8..3e1da09 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -212,6 +212,8 @@
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 @@
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 6875915..1dbb134 100644
--- a/audio/audio_send_stream.h
+++ b/audio/audio_send_stream.h
@@ -190,6 +190,7 @@
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;