| Index: webrtc/common_video/include/incoming_video_stream.h
 | 
| diff --git a/webrtc/common_video/include/incoming_video_stream.h b/webrtc/common_video/include/incoming_video_stream.h
 | 
| index 9368cc4154ffbe05158b31c2bb7a087db1eb9b64..32e3184ce97ba83e501dcaa770b8457f3241c42f 100644
 | 
| --- a/webrtc/common_video/include/incoming_video_stream.h
 | 
| +++ b/webrtc/common_video/include/incoming_video_stream.h
 | 
| @@ -17,34 +17,25 @@
 | 
|  #include "webrtc/base/platform_thread.h"
 | 
|  #include "webrtc/base/thread_annotations.h"
 | 
|  #include "webrtc/common_video/video_render_frames.h"
 | 
| +#include "webrtc/media/base/videosinkinterface.h"
 | 
|  
 | 
|  namespace webrtc {
 | 
|  class EventTimerWrapper;
 | 
|  
 | 
| -class VideoRenderCallback {
 | 
| - public:
 | 
| -  virtual int32_t RenderFrame(const uint32_t streamId,
 | 
| -                              const VideoFrame& videoFrame) = 0;
 | 
| -
 | 
| - protected:
 | 
| -  virtual ~VideoRenderCallback() {}
 | 
| -};
 | 
|  
 | 
| -class IncomingVideoStream : public VideoRenderCallback {
 | 
| +class IncomingVideoStream : public rtc::VideoSinkInterface<VideoFrame> {
 | 
|   public:
 | 
| -  IncomingVideoStream(uint32_t stream_id, bool disable_prerenderer_smoothing);
 | 
| +  explicit IncomingVideoStream(bool disable_prerenderer_smoothing);
 | 
|    ~IncomingVideoStream();
 | 
|  
 | 
| -  // Get callback to deliver frames to the module.
 | 
| -  VideoRenderCallback* ModuleCallback();
 | 
| -  virtual int32_t RenderFrame(const uint32_t stream_id,
 | 
| -                              const VideoFrame& video_frame);
 | 
| +  // Overrides VideoSinkInterface
 | 
| +  void OnFrame(const VideoFrame& video_frame) override;
 | 
|  
 | 
|    // Set callback to the platform dependent code.
 | 
| -  void SetRenderCallback(VideoRenderCallback* render_callback);
 | 
| +  void SetRenderCallback(rtc::VideoSinkInterface<VideoFrame>* render_callback);
 | 
|  
 | 
|    // Callback for file recording, snapshot, ...
 | 
| -  void SetExternalCallback(VideoRenderCallback* render_object);
 | 
| +  void SetExternalCallback(rtc::VideoSinkInterface<VideoFrame>* render_object);
 | 
|  
 | 
|    // Start/Stop.
 | 
|    int32_t Start();
 | 
| @@ -54,7 +45,6 @@ class IncomingVideoStream : public VideoRenderCallback {
 | 
|    int32_t Reset();
 | 
|  
 | 
|    // Properties.
 | 
| -  uint32_t StreamId() const;
 | 
|    uint32_t IncomingRate() const;
 | 
|  
 | 
|    int32_t SetExpectedRenderDelay(int32_t delay_ms);
 | 
| @@ -70,7 +60,6 @@ class IncomingVideoStream : public VideoRenderCallback {
 | 
|  
 | 
|    void DeliverFrame(const VideoFrame& video_frame);
 | 
|  
 | 
| -  uint32_t const stream_id_;
 | 
|    const bool disable_prerenderer_smoothing_;
 | 
|    // Critsects in allowed to enter order.
 | 
|    rtc::CriticalSection stream_critsect_;
 | 
| @@ -83,8 +72,10 @@ class IncomingVideoStream : public VideoRenderCallback {
 | 
|    std::unique_ptr<EventTimerWrapper> deliver_buffer_event_;
 | 
|  
 | 
|    bool running_ GUARDED_BY(stream_critsect_);
 | 
| -  VideoRenderCallback* external_callback_ GUARDED_BY(thread_critsect_);
 | 
| -  VideoRenderCallback* render_callback_ GUARDED_BY(thread_critsect_);
 | 
| +  rtc::VideoSinkInterface<VideoFrame>* external_callback_
 | 
| +      GUARDED_BY(thread_critsect_);
 | 
| +  rtc::VideoSinkInterface<VideoFrame>* render_callback_
 | 
| +      GUARDED_BY(thread_critsect_);
 | 
|    const std::unique_ptr<VideoRenderFrames> render_buffers_
 | 
|        GUARDED_BY(buffer_critsect_);
 | 
|  
 | 
| 
 |