Wire up RTP keep-alive in ortc api.
[This CL is work in progress.]
Wire up the rtp keep-alive in webrtc::Call::Config using new
SetRtpTransportParameters() method on RtpTransportInterface.
BUG=webrtc:7907
Review-Url: https://codereview.webrtc.org/2981513002
Cr-Commit-Position: refs/heads/master@{#19287}
diff --git a/webrtc/api/ortc/rtptransportinterface.h b/webrtc/api/ortc/rtptransportinterface.h
index 119d662..165daad 100644
--- a/webrtc/api/ortc/rtptransportinterface.h
+++ b/webrtc/api/ortc/rtptransportinterface.h
@@ -15,13 +15,14 @@
#include "webrtc/api/ortc/packettransportinterface.h"
#include "webrtc/api/rtcerror.h"
+#include "webrtc/common_types.h"
#include "webrtc/rtc_base/optional.h"
namespace webrtc {
class RtpTransportAdapter;
-struct RtcpParameters {
+struct RtcpParameters final {
// The SSRC to be used in the "SSRC of packet sender" field. If not set, one
// will be chosen by the implementation.
// TODO(deadbeef): Not implemented.
@@ -34,7 +35,7 @@
// RtpTransports created by the same OrtcFactory will use the same generated
// CNAME.
//
- // If empty when passed into SetRtcpParameters, the CNAME simply won't be
+ // If empty when passed into SetParameters, the CNAME simply won't be
// modified.
std::string cname;
@@ -51,6 +52,21 @@
bool operator!=(const RtcpParameters& o) const { return !(*this == o); }
};
+struct RtpTransportParameters final {
+ RtcpParameters rtcp;
+
+ // Enabled periodic sending of keep-alive packets, that help prevent timeouts
+ // on the network level, such as NAT bindings. See RFC6263 section 4.6.
+ RtpKeepAliveConfig keepalive;
+
+ bool operator==(const RtpTransportParameters& o) const {
+ return rtcp == o.rtcp && keepalive == o.keepalive;
+ }
+ bool operator!=(const RtpTransportParameters& o) const {
+ return !(*this == o);
+ }
+};
+
// Base class for different types of RTP transports that can be created by an
// OrtcFactory. Used by RtpSenders/RtpReceivers.
//
@@ -74,16 +90,20 @@
// RTCP multiplexing is being used, returns null.
virtual PacketTransportInterface* GetRtcpPacketTransport() const = 0;
- // Set/get RTCP params. Can be used to enable RTCP muxing or reduced-size
- // RTCP if initially not enabled.
+ // Set/get RTP/RTCP transport params. Can be used to enable RTCP muxing or
+ // reduced-size RTCP if initially not enabled.
//
// Changing |mux| from "true" to "false" is not allowed, and changing the
// CNAME is currently unsupported.
- virtual RTCError SetRtcpParameters(const RtcpParameters& parameters) = 0;
+ // RTP keep-alive settings need to be set before before an RtpSender has
+ // started sending, altering the payload type or timeout interval after this
+ // point is not supported. The parameters must also match across all RTP
+ // transports for a given RTP transport controller.
+ virtual RTCError SetParameters(const RtpTransportParameters& parameters) = 0;
// Returns last set or constructed-with parameters. If |cname| was empty in
// construction, the generated CNAME will be present in the returned
// parameters (see above).
- virtual RtcpParameters GetRtcpParameters() const = 0;
+ virtual RtpTransportParameters GetParameters() const = 0;
protected:
// Only for internal use. Returns a pointer to an internal interface, for use