| Index: webrtc/pc/channel.h
|
| diff --git a/webrtc/pc/channel.h b/webrtc/pc/channel.h
|
| index e4848b2334c444496e368f119b23f570d3094eb6..0c95d936e579ada24e0476fc2d85a54766d23882 100644
|
| --- a/webrtc/pc/channel.h
|
| +++ b/webrtc/pc/channel.h
|
| @@ -30,6 +30,8 @@
|
| #include "webrtc/media/base/streamparams.h"
|
| #include "webrtc/media/base/videosinkinterface.h"
|
| #include "webrtc/media/base/videosourceinterface.h"
|
| +#include "webrtc/p2p/base/dtlstransportinternal.h"
|
| +#include "webrtc/p2p/base/packettransportinterface.h"
|
| #include "webrtc/p2p/base/transportcontroller.h"
|
| #include "webrtc/p2p/client/socketmonitor.h"
|
| #include "webrtc/pc/audiomonitor.h"
|
| @@ -39,10 +41,6 @@
|
| #include "webrtc/pc/rtcpmuxfilter.h"
|
| #include "webrtc/pc/srtpfilter.h"
|
|
|
| -namespace rtc {
|
| -class PacketTransportInterface;
|
| -}
|
| -
|
| namespace webrtc {
|
| class AudioSinkInterface;
|
| } // namespace webrtc
|
| @@ -75,7 +73,6 @@ class BaseChannel
|
| public MediaChannel::NetworkInterface,
|
| public ConnectionStatsGetter {
|
| public:
|
| - // |rtcp| represents whether or not this channel uses RTCP.
|
| // If |srtp_required| is true, the channel will not send or receive any
|
| // RTP/RTCP packets without using SRTP (either using SDES or DTLS-SRTP).
|
| BaseChannel(rtc::Thread* worker_thread,
|
| @@ -87,7 +84,9 @@ class BaseChannel
|
| bool srtp_required);
|
| virtual ~BaseChannel();
|
| bool Init_w(DtlsTransportInternal* rtp_dtls_transport,
|
| - DtlsTransportInternal* rtcp_dtls_transport);
|
| + DtlsTransportInternal* rtcp_dtls_transport,
|
| + rtc::PacketTransportInterface* rtp_packet_transport,
|
| + rtc::PacketTransportInterface* rtcp_packet_transport);
|
| // Deinit may be called multiple times and is simply ignored if it's already
|
| // done.
|
| void Deinit();
|
| @@ -95,6 +94,7 @@ class BaseChannel
|
| rtc::Thread* worker_thread() const { return worker_thread_; }
|
| rtc::Thread* network_thread() const { return network_thread_; }
|
| const std::string& content_name() const { return content_name_; }
|
| + // TODO(deadbeef): This is redundant; remove this.
|
| const std::string& transport_name() const { return transport_name_; }
|
| bool enabled() const { return enabled_; }
|
|
|
| @@ -113,8 +113,12 @@ class BaseChannel
|
| // RTCP muxing is not fully active yet).
|
| // |rtp_transport| and |rtcp_transport| must share the same transport name as
|
| // well.
|
| + // Can not start with "rtc::PacketTransportInterface" and switch to
|
| + // "DtlsTransportInternal", or vice-versa.
|
| void SetTransports(DtlsTransportInternal* rtp_dtls_transport,
|
| DtlsTransportInternal* rtcp_dtls_transport);
|
| + void SetTransports(rtc::PacketTransportInterface* rtp_packet_transport,
|
| + rtc::PacketTransportInterface* rtcp_packet_transport);
|
| bool PushdownLocalDescription(const SessionDescription* local_desc,
|
| ContentAction action,
|
| std::string* error_desc);
|
| @@ -206,11 +210,15 @@ class BaseChannel
|
| virtual MediaChannel* media_channel() const { return media_channel_; }
|
|
|
| void SetTransports_n(DtlsTransportInternal* rtp_dtls_transport,
|
| - DtlsTransportInternal* rtcp_dtls_transport);
|
| + DtlsTransportInternal* rtcp_dtls_transport,
|
| + rtc::PacketTransportInterface* rtp_packet_transport,
|
| + rtc::PacketTransportInterface* rtcp_packet_transport);
|
|
|
| // This does not update writability or "ready-to-send" state; it just
|
| // disconnects from the old channel and connects to the new one.
|
| - void SetTransport_n(bool rtcp, DtlsTransportInternal* new_transport);
|
| + void SetTransport_n(bool rtcp,
|
| + DtlsTransportInternal* new_dtls_transport,
|
| + rtc::PacketTransportInterface* new_packet_transport);
|
|
|
| bool was_ever_writable() const { return was_ever_writable_; }
|
| void set_local_content_direction(MediaContentDirection direction) {
|
| @@ -233,8 +241,10 @@ class BaseChannel
|
| bool IsReadyToSendMedia_w() const;
|
| rtc::Thread* signaling_thread() { return signaling_thread_; }
|
|
|
| - void ConnectToTransport(DtlsTransportInternal* transport);
|
| - void DisconnectFromTransport(DtlsTransportInternal* transport);
|
| + void ConnectToDtlsTransport(DtlsTransportInternal* transport);
|
| + void DisconnectFromDtlsTransport(DtlsTransportInternal* transport);
|
| + void ConnectToPacketTransport(rtc::PacketTransportInterface* transport);
|
| + void DisconnectFromPacketTransport(rtc::PacketTransportInterface* transport);
|
|
|
| void FlushRtcpMessages_n();
|
|
|
| @@ -366,7 +376,9 @@ class BaseChannel
|
|
|
| private:
|
| bool InitNetwork_n(DtlsTransportInternal* rtp_dtls_transport,
|
| - DtlsTransportInternal* rtcp_dtls_transport);
|
| + DtlsTransportInternal* rtcp_dtls_transport,
|
| + rtc::PacketTransportInterface* rtp_packet_transport,
|
| + rtc::PacketTransportInterface* rtcp_packet_transport);
|
| void DisconnectTransportChannels_n();
|
| void SignalSentPacket_n(rtc::PacketTransportInterface* transport,
|
| const rtc::SentPacket& sent_packet);
|
| @@ -384,14 +396,20 @@ class BaseChannel
|
| const std::string content_name_;
|
| std::unique_ptr<ConnectionMonitor> connection_monitor_;
|
|
|
| + // Won't be set when using raw packet transports. SDP-specific thing.
|
| 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_;
|
|
|
| + // Separate DTLS/non-DTLS pointers to support using BaseChannel without DTLS.
|
| + // Temporary measure until more refactoring is done.
|
| + // If non-null, "X_dtls_transport_" will always equal "X_packet_transport_".
|
| DtlsTransportInternal* rtp_dtls_transport_ = nullptr;
|
| - std::vector<std::pair<rtc::Socket::Option, int> > socket_options_;
|
| DtlsTransportInternal* rtcp_dtls_transport_ = nullptr;
|
| + rtc::PacketTransportInterface* rtp_packet_transport_ = nullptr;
|
| + rtc::PacketTransportInterface* rtcp_packet_transport_ = nullptr;
|
| + std::vector<std::pair<rtc::Socket::Option, int> > socket_options_;
|
| std::vector<std::pair<rtc::Socket::Option, int> > rtcp_socket_options_;
|
| SrtpFilter srtp_filter_;
|
| RtcpMuxFilter rtcp_mux_filter_;
|
| @@ -433,8 +451,6 @@ class VoiceChannel : public BaseChannel {
|
| bool rtcp_mux_required,
|
| bool srtp_required);
|
| ~VoiceChannel();
|
| - bool Init_w(DtlsTransportInternal* rtp_dtls_transport,
|
| - DtlsTransportInternal* rtcp_dtls_transport);
|
|
|
| // Configure sending media on the stream with SSRC |ssrc|
|
| // If there is only one sending stream SSRC 0 can be used.
|
| @@ -552,8 +568,6 @@ class VideoChannel : public BaseChannel {
|
| bool rtcp_mux_required,
|
| bool srtp_required);
|
| ~VideoChannel();
|
| - bool Init_w(DtlsTransportInternal* rtp_dtls_transport,
|
| - DtlsTransportInternal* rtcp_dtls_transport);
|
|
|
| // downcasts a MediaChannel
|
| VideoMediaChannel* media_channel() const override {
|
| @@ -633,7 +647,9 @@ class RtpDataChannel : public BaseChannel {
|
| bool srtp_required);
|
| ~RtpDataChannel();
|
| bool Init_w(DtlsTransportInternal* rtp_dtls_transport,
|
| - DtlsTransportInternal* rtcp_dtls_transport);
|
| + DtlsTransportInternal* rtcp_dtls_transport,
|
| + rtc::PacketTransportInterface* rtp_packet_transport,
|
| + rtc::PacketTransportInterface* rtcp_packet_transport);
|
|
|
| virtual bool SendData(const SendDataParams& params,
|
| const rtc::CopyOnWriteBuffer& payload,
|
|
|