Index: webrtc/api/ortc/rtptransportinterface.h |
diff --git a/webrtc/api/ortc/rtptransportinterface.h b/webrtc/api/ortc/rtptransportinterface.h |
index 119d662edde283815170dbab234103ea8c763f7b..165daada6bc59bab1daccce89235e7207dc78f91 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 @@ struct RtcpParameters { |
// 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 @@ struct RtcpParameters { |
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 @@ class RtpTransportInterface { |
// 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 |