| Index: webrtc/pc/channel.cc
|
| diff --git a/webrtc/pc/channel.cc b/webrtc/pc/channel.cc
|
| index d07126b9b18f4661d6069f7253ce5909a99436aa..80fd75b5e8441d2a93aa895481195e4c5d1c8bc7 100644
|
| --- a/webrtc/pc/channel.cc
|
| +++ b/webrtc/pc/channel.cc
|
| @@ -24,6 +24,7 @@
|
| #include "webrtc/rtc_base/dscp.h"
|
| #include "webrtc/rtc_base/logging.h"
|
| #include "webrtc/rtc_base/networkroute.h"
|
| +#include "webrtc/rtc_base/ptr_util.h"
|
| #include "webrtc/rtc_base/trace_event.h"
|
| // Adding 'nogncheck' to disable the gn include headers check to support modular
|
| // WebRTC build targets.
|
| @@ -155,7 +156,7 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread,
|
| signaling_thread_(signaling_thread),
|
| content_name_(content_name),
|
| rtcp_mux_required_(rtcp_mux_required),
|
| - rtp_transport_(rtcp_mux_required),
|
| + rtp_transport_(rtc::MakeUnique<webrtc::RtpTransport>(rtcp_mux_required)),
|
| srtp_required_(srtp_required),
|
| media_channel_(media_channel),
|
| selected_candidate_pair_(nullptr) {
|
| @@ -163,12 +164,12 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread,
|
| #if defined(ENABLE_EXTERNAL_AUTH)
|
| srtp_filter_.EnableExternalAuth();
|
| #endif
|
| - rtp_transport_.SignalReadyToSend.connect(
|
| + rtp_transport_->SignalReadyToSend.connect(
|
| this, &BaseChannel::OnTransportReadyToSend);
|
| // TODO(zstein): RtpTransport::SignalPacketReceived will probably be replaced
|
| // with a callback interface later so that the demuxer can select which
|
| // channel to signal.
|
| - rtp_transport_.SignalPacketReceived.connect(this,
|
| + rtp_transport_->SignalPacketReceived.connect(this,
|
| &BaseChannel::OnPacketReceived);
|
| LOG(LS_INFO) << "Created channel for " << content_name;
|
| }
|
| @@ -196,17 +197,17 @@ void BaseChannel::DisconnectTransportChannels_n() {
|
| // media_channel may use them from a different thread.
|
| if (rtp_dtls_transport_) {
|
| DisconnectFromDtlsTransport(rtp_dtls_transport_);
|
| - } else if (rtp_transport_.rtp_packet_transport()) {
|
| - DisconnectFromPacketTransport(rtp_transport_.rtp_packet_transport());
|
| + } else if (rtp_transport_->rtp_packet_transport()) {
|
| + DisconnectFromPacketTransport(rtp_transport_->rtp_packet_transport());
|
| }
|
| if (rtcp_dtls_transport_) {
|
| DisconnectFromDtlsTransport(rtcp_dtls_transport_);
|
| - } else if (rtp_transport_.rtcp_packet_transport()) {
|
| - DisconnectFromPacketTransport(rtp_transport_.rtcp_packet_transport());
|
| + } else if (rtp_transport_->rtcp_packet_transport()) {
|
| + DisconnectFromPacketTransport(rtp_transport_->rtcp_packet_transport());
|
| }
|
|
|
| - rtp_transport_.SetRtpPacketTransport(nullptr);
|
| - rtp_transport_.SetRtcpPacketTransport(nullptr);
|
| + rtp_transport_->SetRtpPacketTransport(nullptr);
|
| + rtp_transport_->SetRtcpPacketTransport(nullptr);
|
|
|
| // Clear pending read packets/messages.
|
| network_thread_->Clear(&invoker_);
|
| @@ -285,7 +286,7 @@ void BaseChannel::SetTransports_n(
|
| RTC_DCHECK(rtp_dtls_transport == rtp_packet_transport);
|
| RTC_DCHECK(rtcp_dtls_transport == rtcp_packet_transport);
|
| // Can't go from non-DTLS to DTLS.
|
| - RTC_DCHECK(!rtp_transport_.rtp_packet_transport() || rtp_dtls_transport_);
|
| + RTC_DCHECK(!rtp_transport_->rtp_packet_transport() || rtp_dtls_transport_);
|
| } else {
|
| // Can't go from DTLS to non-DTLS.
|
| RTC_DCHECK(!rtp_dtls_transport_);
|
| @@ -302,7 +303,7 @@ void BaseChannel::SetTransports_n(
|
| } else {
|
| debug_name = rtp_packet_transport->debug_name();
|
| }
|
| - if (rtp_packet_transport == rtp_transport_.rtp_packet_transport()) {
|
| + if (rtp_packet_transport == rtp_transport_->rtp_packet_transport()) {
|
| // Nothing to do if transport isn't changing.
|
| return;
|
| }
|
| @@ -342,8 +343,8 @@ void BaseChannel::SetTransport_n(
|
| DtlsTransportInternal*& old_dtls_transport =
|
| rtcp ? rtcp_dtls_transport_ : rtp_dtls_transport_;
|
| rtc::PacketTransportInternal* old_packet_transport =
|
| - rtcp ? rtp_transport_.rtcp_packet_transport()
|
| - : rtp_transport_.rtp_packet_transport();
|
| + rtcp ? rtp_transport_->rtcp_packet_transport()
|
| + : rtp_transport_->rtp_packet_transport();
|
|
|
| if (!old_packet_transport && !new_packet_transport) {
|
| // Nothing to do.
|
| @@ -358,9 +359,9 @@ void BaseChannel::SetTransport_n(
|
| }
|
|
|
| if (rtcp) {
|
| - rtp_transport_.SetRtcpPacketTransport(new_packet_transport);
|
| + rtp_transport_->SetRtcpPacketTransport(new_packet_transport);
|
| } else {
|
| - rtp_transport_.SetRtpPacketTransport(new_packet_transport);
|
| + rtp_transport_->SetRtpPacketTransport(new_packet_transport);
|
| }
|
| old_dtls_transport = new_dtls_transport;
|
|
|
| @@ -549,12 +550,12 @@ int BaseChannel::SetOption_n(SocketType type,
|
| rtc::PacketTransportInternal* transport = nullptr;
|
| switch (type) {
|
| case ST_RTP:
|
| - transport = rtp_transport_.rtp_packet_transport();
|
| + transport = rtp_transport_->rtp_packet_transport();
|
| socket_options_.push_back(
|
| std::pair<rtc::Socket::Option, int>(opt, value));
|
| break;
|
| case ST_RTCP:
|
| - transport = rtp_transport_.rtcp_packet_transport();
|
| + transport = rtp_transport_->rtcp_packet_transport();
|
| rtcp_socket_options_.push_back(
|
| std::pair<rtc::Socket::Option, int>(opt, value));
|
| break;
|
| @@ -563,8 +564,8 @@ int BaseChannel::SetOption_n(SocketType type,
|
| }
|
|
|
| void BaseChannel::OnWritableState(rtc::PacketTransportInternal* transport) {
|
| - RTC_DCHECK(transport == rtp_transport_.rtp_packet_transport() ||
|
| - transport == rtp_transport_.rtcp_packet_transport());
|
| + RTC_DCHECK(transport == rtp_transport_->rtp_packet_transport() ||
|
| + transport == rtp_transport_->rtcp_packet_transport());
|
| RTC_DCHECK(network_thread_->IsCurrent());
|
| UpdateWritableState_n();
|
| }
|
| @@ -643,7 +644,7 @@ bool BaseChannel::SendPacket(bool rtcp,
|
| // packet before doing anything. (We might get RTCP packets that we don't
|
| // intend to send.) If we've negotiated RTCP mux, send RTCP over the RTP
|
| // transport.
|
| - if (!rtp_transport_.IsWritable(rtcp)) {
|
| + if (!rtp_transport_->IsWritable(rtcp)) {
|
| return false;
|
| }
|
|
|
| @@ -739,11 +740,11 @@ bool BaseChannel::SendPacket(bool rtcp,
|
|
|
| // Bon voyage.
|
| int flags = (secure() && secure_dtls()) ? PF_SRTP_BYPASS : PF_NORMAL;
|
| - return rtp_transport_.SendPacket(rtcp, packet, updated_options, flags);
|
| + return rtp_transport_->SendPacket(rtcp, packet, updated_options, flags);
|
| }
|
|
|
| bool BaseChannel::HandlesPayloadType(int packet_type) const {
|
| - return rtp_transport_.HandlesPayloadType(packet_type);
|
| + return rtp_transport_->HandlesPayloadType(packet_type);
|
| }
|
|
|
| void BaseChannel::OnPacketReceived(bool rtcp,
|
| @@ -871,9 +872,9 @@ void BaseChannel::DisableMedia_w() {
|
|
|
| void BaseChannel::UpdateWritableState_n() {
|
| rtc::PacketTransportInternal* rtp_packet_transport =
|
| - rtp_transport_.rtp_packet_transport();
|
| + rtp_transport_->rtp_packet_transport();
|
| rtc::PacketTransportInternal* rtcp_packet_transport =
|
| - rtp_transport_.rtcp_packet_transport();
|
| + rtp_transport_->rtcp_packet_transport();
|
| if (rtp_packet_transport && rtp_packet_transport->writable() &&
|
| (!rtcp_packet_transport || rtcp_packet_transport->writable())) {
|
| ChannelWritable_n();
|
| @@ -1202,12 +1203,12 @@ bool BaseChannel::SetRtcpMux_n(bool enable,
|
| // the RTCP transport.
|
| std::string debug_name =
|
| transport_name_.empty()
|
| - ? rtp_transport_.rtp_packet_transport()->debug_name()
|
| + ? rtp_transport_->rtp_packet_transport()->debug_name()
|
| : transport_name_;
|
| ;
|
| LOG(LS_INFO) << "Enabling rtcp-mux for " << content_name()
|
| << "; no longer need RTCP transport for " << debug_name;
|
| - if (rtp_transport_.rtcp_packet_transport()) {
|
| + if (rtp_transport_->rtcp_packet_transport()) {
|
| SetTransport_n(true, nullptr, nullptr);
|
| SignalRtcpMuxFullyActive(transport_name_);
|
| }
|
| @@ -1225,13 +1226,13 @@ bool BaseChannel::SetRtcpMux_n(bool enable,
|
| SafeSetError("Failed to setup RTCP mux filter.", error_desc);
|
| return false;
|
| }
|
| - rtp_transport_.SetRtcpMuxEnabled(rtcp_mux_filter_.IsActive());
|
| + rtp_transport_->SetRtcpMuxEnabled(rtcp_mux_filter_.IsActive());
|
| // |rtcp_mux_filter_| can be active if |action| is CA_PRANSWER or
|
| // CA_ANSWER, but we only want to tear down the RTCP transport if we received
|
| // a final answer.
|
| if (rtcp_mux_filter_.IsActive()) {
|
| // If the RTP transport is already writable, then so are we.
|
| - if (rtp_transport_.rtp_packet_transport()->writable()) {
|
| + if (rtp_transport_->rtp_packet_transport()->writable()) {
|
| ChannelWritable_n();
|
| }
|
| }
|
| @@ -1457,7 +1458,7 @@ void BaseChannel::OnMessage(rtc::Message *pmsg) {
|
| }
|
|
|
| void BaseChannel::AddHandledPayloadType(int payload_type) {
|
| - rtp_transport_.AddHandledPayloadType(payload_type);
|
| + rtp_transport_->AddHandledPayloadType(payload_type);
|
| }
|
|
|
| void BaseChannel::FlushRtcpMessages_n() {
|
|
|