aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorMarkus Handell <handellm@webrtc.org>2020-06-24 01:06:10 +0200
committerCommit Bot <commit-bot@chromium.org>2020-06-24 10:38:30 +0000
commit755c65d8b5cc5a82fbf1674db49c5d7c4c33aca2 (patch)
tree1ee7747fe4fd2d2736bc123da4c5958f0574b3b9 /api
parent96115cfcddff5a4e47c67092740caccef6cadda0 (diff)
downloadwebrtc-755c65d8b5cc5a82fbf1674db49c5d7c4c33aca2.tar.gz
Reland RtpTransceiverInterface: introduce SetOfferedRtpHeaderExtensions.
This change adds exposure of a new transceiver method for modifying the extensions offered in the next SDP negotiation, following spec details in https://w3c.github.io/webrtc-extensions/#rtcrtptransceiver-interface. Features: - The interface allows to control the negotiated direction as per https://tools.ietf.org/html/rfc5285#page-7. - The interface allows to remove an extension from SDP negotiation by modifying the direction to RtpTransceiverDirection::kStopped. Note: support for signalling directionality of header extensions in the SDP isn't implemented yet. https://chromestatus.com/feature/5680189201711104. Intent to prototype: https://groups.google.com/a/chromium.org/g/blink-dev/c/65YdUi02yZk Tested: new unit tests in CL and manual tests with downstream project. Bug: chromium:1051821 Change-Id: I7a4c2f979a5e50e88d49598eacb76d24e81c7c7a Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177348 Commit-Queue: Markus Handell <handellm@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31554}
Diffstat (limited to 'api')
-rw-r--r--api/rtp_parameters.h2
-rw-r--r--api/rtp_transceiver_interface.cc6
-rw-r--r--api/rtp_transceiver_interface.h7
3 files changed, 14 insertions, 1 deletions
diff --git a/api/rtp_parameters.h b/api/rtp_parameters.h
index addd406385..11335e92ed 100644
--- a/api/rtp_parameters.h
+++ b/api/rtp_parameters.h
@@ -222,7 +222,7 @@ struct RTC_EXPORT RtpHeaderExtensionCapability {
bool preferred_encrypt = false;
// The direction of the extension. The kStopped value is only used with
- // RtpTransceiverInterface::header_extensions_offered() and
+ // RtpTransceiverInterface::HeaderExtensionsToOffer() and
// SetOfferedRtpHeaderExtensions().
RtpTransceiverDirection direction = RtpTransceiverDirection::kSendRecv;
diff --git a/api/rtp_transceiver_interface.cc b/api/rtp_transceiver_interface.cc
index d4e2b26e33..e795e51dfb 100644
--- a/api/rtp_transceiver_interface.cc
+++ b/api/rtp_transceiver_interface.cc
@@ -41,4 +41,10 @@ RtpTransceiverInterface::HeaderExtensionsToOffer() const {
return {};
}
+webrtc::RTCError RtpTransceiverInterface::SetOfferedRtpHeaderExtensions(
+ rtc::ArrayView<const RtpHeaderExtensionCapability>
+ header_extensions_to_offer) {
+ return webrtc::RTCError(webrtc::RTCErrorType::UNSUPPORTED_OPERATION);
+}
+
} // namespace webrtc
diff --git a/api/rtp_transceiver_interface.h b/api/rtp_transceiver_interface.h
index 9dbafd46ec..13277d9a50 100644
--- a/api/rtp_transceiver_interface.h
+++ b/api/rtp_transceiver_interface.h
@@ -133,6 +133,13 @@ class RTC_EXPORT RtpTransceiverInterface : public rtc::RefCountInterface {
virtual std::vector<RtpHeaderExtensionCapability> HeaderExtensionsToOffer()
const;
+ // The SetOfferedRtpHeaderExtensions method modifies the next SDP negotiation
+ // so that it negotiates use of header extensions which are not kStopped.
+ // https://w3c.github.io/webrtc-extensions/#rtcrtptransceiver-interface
+ virtual webrtc::RTCError SetOfferedRtpHeaderExtensions(
+ rtc::ArrayView<const RtpHeaderExtensionCapability>
+ header_extensions_to_offer);
+
protected:
~RtpTransceiverInterface() override = default;
};