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}
This commit is contained in:
Minyue Li 2020-03-05 11:33:13 +01:00 committed by Commit Bot
parent 36f4fa7d4c
commit 74dadc1e8e
3 changed files with 14 additions and 4 deletions

View File

@ -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 ||

View File

@ -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.";
}

View File

@ -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;