Index: webrtc/pc/channel.h |
diff --git a/webrtc/pc/channel.h b/webrtc/pc/channel.h |
index c7749a97156e2165a18a22d8217d199b28d580b9..e5180ca26f6cb3cad13406be27a7b22f1fa3eb61 100644 |
--- a/webrtc/pc/channel.h |
+++ b/webrtc/pc/channel.h |
@@ -83,7 +83,7 @@ |
rtc::Thread* signaling_thread, |
MediaChannel* channel, |
const std::string& content_name, |
- bool rtcp_mux_required, |
+ bool rtcp, |
bool srtp_required); |
virtual ~BaseChannel(); |
bool Init_w(TransportChannel* rtp_transport, |
@@ -107,6 +107,11 @@ |
bool writable() const { return writable_; } |
+ // Activate RTCP mux, regardless of the state so far. Once |
+ // activated, it can not be deactivated, and if the remote |
+ // description doesn't support RTCP mux, setting the remote |
+ // description will fail. |
+ void ActivateRtcpMux(); |
bool SetTransport(TransportChannel* rtp_transport, |
TransportChannel* rtcp_transport); |
bool PushdownLocalDescription(const SessionDescription* local_desc, |
@@ -156,10 +161,9 @@ |
// Forward TransportChannel SignalSentPacket to worker thread. |
sigslot::signal1<const rtc::SentPacket&> SignalSentPacket; |
- // Emitted whenever rtcp-mux is fully negotiated and the rtcp-transport can |
- // be destroyed. |
- // Fired on the network thread. |
- sigslot::signal1<const std::string&> SignalRtcpMuxFullyActive; |
+ // Emitted whenever the rtcp-mux is active and the rtcp-transport can be |
+ // destroyed. |
+ sigslot::signal1<const std::string&> SignalDestroyRtcpTransport; |
TransportChannel* rtp_transport() const { return rtp_transport_; } |
TransportChannel* rtcp_transport() const { return rtcp_transport_; } |
@@ -331,6 +335,7 @@ |
ContentAction action, |
ContentSource src, |
std::string* error_desc); |
+ void ActivateRtcpMux_n(); |
bool SetRtcpMux_n(bool enable, |
ContentAction action, |
ContentSource src, |
@@ -377,9 +382,10 @@ |
std::unique_ptr<ConnectionMonitor> connection_monitor_; |
std::string transport_name_; |
- // True if RTCP-multiplexing is required. In other words, no standalone RTCP |
- // transport will ever be used for this channel. |
- const bool rtcp_mux_required_; |
+ // Is RTCP used at all by this type of channel? |
+ // Expected to be true (as of typing this) for everything except data |
+ // channels. |
+ const bool rtcp_enabled_; |
// TODO(johan): Replace TransportChannel* with rtc::PacketTransportInterface*. |
TransportChannel* rtp_transport_ = nullptr; |
std::vector<std::pair<rtc::Socket::Option, int> > socket_options_; |
@@ -422,7 +428,7 @@ |
MediaEngineInterface* media_engine, |
VoiceMediaChannel* channel, |
const std::string& content_name, |
- bool rtcp_mux_required, |
+ bool rtcp, |
bool srtp_required); |
~VoiceChannel(); |
bool Init_w(TransportChannel* rtp_transport, |
@@ -541,7 +547,7 @@ |
rtc::Thread* signaling_thread, |
VideoMediaChannel* channel, |
const std::string& content_name, |
- bool rtcp_mux_required, |
+ bool rtcp, |
bool srtp_required); |
~VideoChannel(); |
bool Init_w(TransportChannel* rtp_transport, |
@@ -621,7 +627,7 @@ |
rtc::Thread* signaling_thread, |
DataMediaChannel* channel, |
const std::string& content_name, |
- bool rtcp_mux_required, |
+ bool rtcp, |
bool srtp_required); |
~RtpDataChannel(); |
bool Init_w(TransportChannel* rtp_transport, |