| Index: webrtc/api/rtpsender.h
 | 
| diff --git a/webrtc/api/rtpsender.h b/webrtc/api/rtpsender.h
 | 
| index a0bcc9407abf10bba024cf625f880a6bf8ee5885..067ae5e5b8720219c268b182292f287e5f0ecd3d 100644
 | 
| --- a/webrtc/api/rtpsender.h
 | 
| +++ b/webrtc/api/rtpsender.h
 | 
| @@ -18,12 +18,13 @@
 | 
|  #include <memory>
 | 
|  #include <string>
 | 
|  
 | 
| -#include "webrtc/api/mediastreamprovider.h"
 | 
| +#include "webrtc/api/mediastreaminterface.h"
 | 
|  #include "webrtc/api/rtpsenderinterface.h"
 | 
|  #include "webrtc/api/statscollector.h"
 | 
|  #include "webrtc/base/basictypes.h"
 | 
|  #include "webrtc/base/criticalsection.h"
 | 
|  #include "webrtc/media/base/audiosource.h"
 | 
| +#include "webrtc/pc/channel.h"
 | 
|  
 | 
|  namespace webrtc {
 | 
|  
 | 
| @@ -72,18 +73,21 @@ class AudioRtpSender : public ObserverInterface,
 | 
|   public:
 | 
|    // StatsCollector provided so that Add/RemoveLocalAudioTrack can be called
 | 
|    // at the appropriate times.
 | 
| +  // |channel| can be null if one does not exist yet.
 | 
|    AudioRtpSender(AudioTrackInterface* track,
 | 
|                   const std::string& stream_id,
 | 
| -                 AudioProviderInterface* provider,
 | 
| +                 cricket::VoiceChannel* channel,
 | 
|                   StatsCollector* stats);
 | 
|  
 | 
|    // Randomly generates stream_id.
 | 
| +  // |channel| can be null if one does not exist yet.
 | 
|    AudioRtpSender(AudioTrackInterface* track,
 | 
| -                 AudioProviderInterface* provider,
 | 
| +                 cricket::VoiceChannel* channel,
 | 
|                   StatsCollector* stats);
 | 
|  
 | 
|    // Randomly generates id and stream_id.
 | 
| -  AudioRtpSender(AudioProviderInterface* provider, StatsCollector* stats);
 | 
| +  // |channel| can be null if one does not exist yet.
 | 
| +  AudioRtpSender(cricket::VoiceChannel* channel, StatsCollector* stats);
 | 
|  
 | 
|    virtual ~AudioRtpSender();
 | 
|  
 | 
| @@ -122,6 +126,10 @@ class AudioRtpSender : public ObserverInterface,
 | 
|  
 | 
|    void Stop() override;
 | 
|  
 | 
| +  // Does not take ownership.
 | 
| +  // Should call SetChannel(nullptr) before |channel| is destroyed.
 | 
| +  void SetChannel(cricket::VoiceChannel* channel) { channel_ = channel; }
 | 
| +
 | 
|   private:
 | 
|    // TODO(nisse): Since SSRC == 0 is technically valid, figure out
 | 
|    // some other way to test if we have a valid SSRC.
 | 
| @@ -129,10 +137,12 @@ class AudioRtpSender : public ObserverInterface,
 | 
|    // Helper function to construct options for
 | 
|    // AudioProviderInterface::SetAudioSend.
 | 
|    void SetAudioSend();
 | 
| +  // Helper function to call SetAudioSend with "stop sending" parameters.
 | 
| +  void ClearAudioSend();
 | 
|  
 | 
|    std::string id_;
 | 
|    std::string stream_id_;
 | 
| -  AudioProviderInterface* provider_;
 | 
| +  cricket::VoiceChannel* channel_ = nullptr;
 | 
|    StatsCollector* stats_;
 | 
|    rtc::scoped_refptr<AudioTrackInterface> track_;
 | 
|    uint32_t ssrc_ = 0;
 | 
| @@ -147,15 +157,18 @@ class AudioRtpSender : public ObserverInterface,
 | 
|  class VideoRtpSender : public ObserverInterface,
 | 
|                         public rtc::RefCountedObject<RtpSenderInternal> {
 | 
|   public:
 | 
| +  // |channel| can be null if one does not exist yet.
 | 
|    VideoRtpSender(VideoTrackInterface* track,
 | 
|                   const std::string& stream_id,
 | 
| -                 VideoProviderInterface* provider);
 | 
| +                 cricket::VideoChannel* channel);
 | 
|  
 | 
|    // Randomly generates stream_id.
 | 
| -  VideoRtpSender(VideoTrackInterface* track, VideoProviderInterface* provider);
 | 
| +  // |channel| can be null if one does not exist yet.
 | 
| +  VideoRtpSender(VideoTrackInterface* track, cricket::VideoChannel* channel);
 | 
|  
 | 
|    // Randomly generates id and stream_id.
 | 
| -  explicit VideoRtpSender(VideoProviderInterface* provider);
 | 
| +  // |channel| can be null if one does not exist yet.
 | 
| +  explicit VideoRtpSender(cricket::VideoChannel* channel);
 | 
|  
 | 
|    virtual ~VideoRtpSender();
 | 
|  
 | 
| @@ -194,6 +207,10 @@ class VideoRtpSender : public ObserverInterface,
 | 
|  
 | 
|    void Stop() override;
 | 
|  
 | 
| +  // Does not take ownership.
 | 
| +  // Should call SetChannel(nullptr) before |channel| is destroyed.
 | 
| +  void SetChannel(cricket::VideoChannel* channel) { channel_ = channel; }
 | 
| +
 | 
|   private:
 | 
|    bool can_send_track() const { return track_ && ssrc_; }
 | 
|    // Helper function to construct options for
 | 
| @@ -204,7 +221,7 @@ class VideoRtpSender : public ObserverInterface,
 | 
|  
 | 
|    std::string id_;
 | 
|    std::string stream_id_;
 | 
| -  VideoProviderInterface* provider_;
 | 
| +  cricket::VideoChannel* channel_ = nullptr;
 | 
|    rtc::scoped_refptr<VideoTrackInterface> track_;
 | 
|    uint32_t ssrc_ = 0;
 | 
|    bool cached_track_enabled_ = false;
 | 
| 
 |