| Index: webrtc/pc/channel.cc
 | 
| diff --git a/webrtc/pc/channel.cc b/webrtc/pc/channel.cc
 | 
| index f22bdc4ca41029155f2fe4fe511bb9c2765ee679..03f10b8ee2d6d6a51ee602eade9c0dc19908403a 100644
 | 
| --- a/webrtc/pc/channel.cc
 | 
| +++ b/webrtc/pc/channel.cc
 | 
| @@ -24,6 +24,7 @@
 | 
|  #include "webrtc/base/trace_event.h"
 | 
|  #include "webrtc/media/base/mediaconstants.h"
 | 
|  #include "webrtc/media/base/rtputils.h"
 | 
| +#include "webrtc/p2p/base/packettransportinterface.h"
 | 
|  #include "webrtc/p2p/base/transportchannel.h"
 | 
|  #include "webrtc/pc/channelmanager.h"
 | 
|  
 | 
| @@ -377,7 +378,7 @@ void BaseChannel::ConnectToTransportChannel(TransportChannel* tc) {
 | 
|    RTC_DCHECK(network_thread_->IsCurrent());
 | 
|  
 | 
|    tc->SignalWritableState.connect(this, &BaseChannel::OnWritableState);
 | 
| -  tc->SignalReadPacket.connect(this, &BaseChannel::OnChannelRead);
 | 
| +  tc->SignalReadPacket.connect(this, &BaseChannel::OnPacketRead);
 | 
|    tc->SignalReadyToSend.connect(this, &BaseChannel::OnReadyToSend);
 | 
|    tc->SignalDtlsState.connect(this, &BaseChannel::OnDtlsState);
 | 
|    tc->SignalSelectedCandidatePairChanged.connect(
 | 
| @@ -527,29 +528,32 @@ bool BaseChannel::SetCryptoOptions(const rtc::CryptoOptions& crypto_options) {
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| -void BaseChannel::OnWritableState(TransportChannel* channel) {
 | 
| +void BaseChannel::OnWritableState(rtc::PacketTransportInterface* transport) {
 | 
| +  TransportChannel* channel = static_cast<TransportChannel*>(transport);
 | 
|    RTC_DCHECK(channel == transport_channel_ ||
 | 
|               channel == rtcp_transport_channel_);
 | 
|    RTC_DCHECK(network_thread_->IsCurrent());
 | 
|    UpdateWritableState_n();
 | 
|  }
 | 
|  
 | 
| -void BaseChannel::OnChannelRead(TransportChannel* channel,
 | 
| -                                const char* data, size_t len,
 | 
| -                                const rtc::PacketTime& packet_time,
 | 
| -                                int flags) {
 | 
| -  TRACE_EVENT0("webrtc", "BaseChannel::OnChannelRead");
 | 
| -  // OnChannelRead gets called from P2PSocket; now pass data to MediaEngine
 | 
| +void BaseChannel::OnPacketRead(rtc::PacketTransportInterface* transport,
 | 
| +                               const char* data,
 | 
| +                               size_t len,
 | 
| +                               const rtc::PacketTime& packet_time,
 | 
| +                               int flags) {
 | 
| +  TRACE_EVENT0("webrtc", "BaseChannel::OnPacketRead");
 | 
| +  // OnPacketRead gets called from P2PSocket; now pass data to MediaEngine
 | 
|    RTC_DCHECK(network_thread_->IsCurrent());
 | 
|  
 | 
|    // When using RTCP multiplexing we might get RTCP packets on the RTP
 | 
|    // transport. We feed RTP traffic into the demuxer to determine if it is RTCP.
 | 
| -  bool rtcp = PacketIsRtcp(channel, data, len);
 | 
| +  bool rtcp = PacketIsRtcp(transport, data, len);
 | 
|    rtc::CopyOnWriteBuffer packet(data, len);
 | 
|    HandlePacket(rtcp, &packet, packet_time);
 | 
|  }
 | 
|  
 | 
| -void BaseChannel::OnReadyToSend(TransportChannel* channel) {
 | 
| +void BaseChannel::OnReadyToSend(rtc::PacketTransportInterface* transport) {
 | 
| +  TransportChannel* channel = static_cast<TransportChannel*>(transport);
 | 
|    RTC_DCHECK(channel == transport_channel_ ||
 | 
|               channel == rtcp_transport_channel_);
 | 
|    SetTransportChannelReadyToSend(channel == rtcp_transport_channel_, true);
 | 
| @@ -611,9 +615,11 @@ void BaseChannel::SetTransportChannelReadyToSend(bool rtcp, bool ready) {
 | 
|        Bind(&MediaChannel::OnReadyToSend, media_channel_, ready_to_send));
 | 
|  }
 | 
|  
 | 
| -bool BaseChannel::PacketIsRtcp(const TransportChannel* channel,
 | 
| -                               const char* data, size_t len) {
 | 
| -  return (channel == rtcp_transport_channel_ ||
 | 
| +bool BaseChannel::PacketIsRtcp(const rtc::PacketTransportInterface* transport,
 | 
| +                               const char* data,
 | 
| +                               size_t len) {
 | 
| +  return (static_cast<const TransportChannel*>(transport) ==
 | 
| +              rtcp_transport_channel_ ||
 | 
|            rtcp_mux_filter_.DemuxRtcp(data, static_cast<int>(len)));
 | 
|  }
 | 
|  
 | 
| @@ -1445,8 +1451,9 @@ void BaseChannel::FlushRtcpMessages_n() {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -void BaseChannel::SignalSentPacket_n(TransportChannel* /* channel */,
 | 
| -                                     const rtc::SentPacket& sent_packet) {
 | 
| +void BaseChannel::SignalSentPacket_n(
 | 
| +    rtc::PacketTransportInterface* /* transport */,
 | 
| +    const rtc::SentPacket& sent_packet) {
 | 
|    RTC_DCHECK(network_thread_->IsCurrent());
 | 
|    invoker_.AsyncInvoke<void>(
 | 
|        RTC_FROM_HERE, worker_thread_,
 | 
| @@ -1641,15 +1648,15 @@ void VoiceChannel::GetActiveStreams_w(AudioInfo::StreamList* actives) {
 | 
|    media_channel()->GetActiveStreams(actives);
 | 
|  }
 | 
|  
 | 
| -void VoiceChannel::OnChannelRead(TransportChannel* channel,
 | 
| -                                 const char* data, size_t len,
 | 
| -                                 const rtc::PacketTime& packet_time,
 | 
| +void VoiceChannel::OnPacketRead(rtc::PacketTransportInterface* transport,
 | 
| +                                const char* data,
 | 
| +                                size_t len,
 | 
| +                                const rtc::PacketTime& packet_time,
 | 
|                                  int flags) {
 | 
| -  BaseChannel::OnChannelRead(channel, data, len, packet_time, flags);
 | 
| -
 | 
| +  BaseChannel::OnPacketRead(transport, data, len, packet_time, flags);
 | 
|    // Set a flag when we've received an RTP packet. If we're waiting for early
 | 
|    // media, this will disable the timeout.
 | 
| -  if (!received_media_ && !PacketIsRtcp(channel, data, len)) {
 | 
| +  if (!received_media_ && !PacketIsRtcp(transport, data, len)) {
 | 
|      received_media_ = true;
 | 
|    }
 | 
|  }
 | 
| 
 |