| Index: talk/app/webrtc/rtpsender.h
 | 
| diff --git a/talk/app/webrtc/rtpsender.h b/talk/app/webrtc/rtpsender.h
 | 
| index aee77e173c9c438fed345afcd68adc0e7331e955..a0eae5dd6add152d29e51164e6635846fb3d3448 100644
 | 
| --- a/talk/app/webrtc/rtpsender.h
 | 
| +++ b/talk/app/webrtc/rtpsender.h
 | 
| @@ -25,4 +25,116 @@
 | 
|   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
|   */
 | 
|  
 | 
| -// This file is currently stubbed so that Chromium's build files can be updated.
 | 
| +// This file contains classes that implement RtpSenderInterface.
 | 
| +// An RtpSender associates a MediaStreamTrackInterface with an underlying
 | 
| +// transport (provided by AudioProviderInterface/VideoProviderInterface)
 | 
| +
 | 
| +#ifndef TALK_APP_WEBRTC_RTPSENDER_H_
 | 
| +#define TALK_APP_WEBRTC_RTPSENDER_H_
 | 
| +
 | 
| +#include <string>
 | 
| +
 | 
| +#include "talk/app/webrtc/mediastreamprovider.h"
 | 
| +#include "talk/app/webrtc/rtpsenderinterface.h"
 | 
| +#include "talk/media/base/audiorenderer.h"
 | 
| +#include "webrtc/base/basictypes.h"
 | 
| +#include "webrtc/base/criticalsection.h"
 | 
| +#include "webrtc/base/scoped_ptr.h"
 | 
| +
 | 
| +namespace webrtc {
 | 
| +
 | 
| +// LocalAudioSinkAdapter receives data callback as a sink to the local
 | 
| +// AudioTrack, and passes the data to the sink of AudioRenderer.
 | 
| +class LocalAudioSinkAdapter : public AudioTrackSinkInterface,
 | 
| +                              public cricket::AudioRenderer {
 | 
| + public:
 | 
| +  LocalAudioSinkAdapter();
 | 
| +  virtual ~LocalAudioSinkAdapter();
 | 
| +
 | 
| + private:
 | 
| +  // AudioSinkInterface implementation.
 | 
| +  void OnData(const void* audio_data,
 | 
| +              int bits_per_sample,
 | 
| +              int sample_rate,
 | 
| +              int number_of_channels,
 | 
| +              size_t number_of_frames) override;
 | 
| +
 | 
| +  // cricket::AudioRenderer implementation.
 | 
| +  void SetSink(cricket::AudioRenderer::Sink* sink) override;
 | 
| +
 | 
| +  cricket::AudioRenderer::Sink* sink_;
 | 
| +  // Critical section protecting |sink_|.
 | 
| +  rtc::CriticalSection lock_;
 | 
| +};
 | 
| +
 | 
| +class AudioRtpSender : public ObserverInterface,
 | 
| +                       public rtc::RefCountedObject<RtpSenderInterface> {
 | 
| + public:
 | 
| +  AudioRtpSender(AudioTrackInterface* track,
 | 
| +                 uint32 ssrc,
 | 
| +                 AudioProviderInterface* provider);
 | 
| +
 | 
| +  virtual ~AudioRtpSender();
 | 
| +
 | 
| +  // ObserverInterface implementation
 | 
| +  void OnChanged() override;
 | 
| +
 | 
| +  // RtpSenderInterface implementation
 | 
| +  bool SetTrack(MediaStreamTrackInterface* track) override;
 | 
| +  rtc::scoped_refptr<MediaStreamTrackInterface> track() const override {
 | 
| +    return track_.get();
 | 
| +  }
 | 
| +
 | 
| +  std::string id() const override { return id_; }
 | 
| +
 | 
| +  void Stop() override;
 | 
| +
 | 
| + private:
 | 
| +  void Reconfigure();
 | 
| +
 | 
| +  std::string id_;
 | 
| +  rtc::scoped_refptr<AudioTrackInterface> track_;
 | 
| +  uint32 ssrc_;
 | 
| +  AudioProviderInterface* provider_;
 | 
| +  bool cached_track_enabled_;
 | 
| +
 | 
| +  // Used to pass the data callback from the |track_| to the other end of
 | 
| +  // cricket::AudioRenderer.
 | 
| +  rtc::scoped_ptr<LocalAudioSinkAdapter> sink_adapter_;
 | 
| +};
 | 
| +
 | 
| +class VideoRtpSender : public ObserverInterface,
 | 
| +                       public rtc::RefCountedObject<RtpSenderInterface> {
 | 
| + public:
 | 
| +  VideoRtpSender(VideoTrackInterface* track,
 | 
| +                 uint32 ssrc,
 | 
| +                 VideoProviderInterface* provider);
 | 
| +
 | 
| +  virtual ~VideoRtpSender();
 | 
| +
 | 
| +  // ObserverInterface implementation
 | 
| +  void OnChanged() override;
 | 
| +
 | 
| +  // RtpSenderInterface implementation
 | 
| +  bool SetTrack(MediaStreamTrackInterface* track) override;
 | 
| +  rtc::scoped_refptr<MediaStreamTrackInterface> track() const override {
 | 
| +    return track_.get();
 | 
| +  }
 | 
| +
 | 
| +  std::string id() const override { return id_; }
 | 
| +
 | 
| +  void Stop() override;
 | 
| +
 | 
| + private:
 | 
| +  void Reconfigure();
 | 
| +
 | 
| +  std::string id_;
 | 
| +  rtc::scoped_refptr<VideoTrackInterface> track_;
 | 
| +  uint32 ssrc_;
 | 
| +  VideoProviderInterface* provider_;
 | 
| +  bool cached_track_enabled_;
 | 
| +};
 | 
| +
 | 
| +}  // namespace webrtc
 | 
| +
 | 
| +#endif  // TALK_APP_WEBRTC_RTPSENDER_H_
 | 
| 
 |