diff options
author | Markus Handell <handellm@webrtc.org> | 2020-06-24 01:06:10 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-24 10:38:30 +0000 |
commit | 755c65d8b5cc5a82fbf1674db49c5d7c4c33aca2 (patch) | |
tree | 1ee7747fe4fd2d2736bc123da4c5958f0574b3b9 /api | |
parent | 96115cfcddff5a4e47c67092740caccef6cadda0 (diff) | |
download | webrtc-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.h | 2 | ||||
-rw-r--r-- | api/rtp_transceiver_interface.cc | 6 | ||||
-rw-r--r-- | api/rtp_transceiver_interface.h | 7 |
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; }; |