Chromium Code Reviews| Index: talk/app/webrtc/mediastreaminterface.h |
| diff --git a/talk/app/webrtc/mediastreaminterface.h b/talk/app/webrtc/mediastreaminterface.h |
| index 9b137d9f761006bc45477b455fc58b91236a7069..7ad5d7b94f64643f5f0f9bf93637aadcfba226fd 100644 |
| --- a/talk/app/webrtc/mediastreaminterface.h |
| +++ b/talk/app/webrtc/mediastreaminterface.h |
| @@ -40,6 +40,7 @@ |
| #include "webrtc/base/basictypes.h" |
| #include "webrtc/base/refcount.h" |
| #include "webrtc/base/scoped_ref_ptr.h" |
| +#include "webrtc/media/base/videosinkinterface.h" |
| namespace cricket { |
| @@ -116,12 +117,17 @@ class MediaStreamTrackInterface : public rtc::RefCountInterface, |
| }; |
| // Interface for rendering VideoFrames from a VideoTrack |
| -class VideoRendererInterface { |
| +class VideoRendererInterface |
| + : public rtc::VideoSinkInterface<cricket::VideoFrame> { |
| public: |
| // |frame| may have pending rotation. For clients which can't apply rotation, |
| // |frame|->GetCopyWithRotationApplied() will return a frame that has the |
| // rotation applied. |
| virtual void RenderFrame(const cricket::VideoFrame* frame) = 0; |
| + // Intended to replace RenderFrame. |
| + void OnFrame(const cricket::VideoFrame& frame) override { |
| + RenderFrame(&frame); |
| + } |
| protected: |
| // The destructor is protected to prevent deletion via the interface. |
| @@ -134,11 +140,19 @@ class VideoSourceInterface; |
| class VideoTrackInterface : public MediaStreamTrackInterface { |
| public: |
| - // Register a renderer that will render all frames received on this track. |
| - virtual void AddRenderer(VideoRendererInterface* renderer) = 0; |
| - // Deregister a renderer. |
| - virtual void RemoveRenderer(VideoRendererInterface* renderer) = 0; |
| - |
| + // Backwards compatibility wrappers |
| + virtual void AddRenderer(VideoRendererInterface* renderer) { |
| + AddSink(renderer); |
| + } |
| + virtual void RemoveRenderer(VideoRendererInterface* renderer) { |
| + RemoveSink(renderer); |
| + } |
| + // Register a sink that will receive all frames received on this |
| + // track. Tolerates sink == nullptr, and does nothing. |
|
perkj_webrtc
2016/01/28 13:45:16
I think we should try to be strict. Prefer to not
nisse-webrtc
2016/01/29 07:48:29
Added a RTC_DCHECK in AddSink, and hopefully made
|
| + virtual void AddSink(rtc::VideoSinkInterface<cricket::VideoFrame>* sink) = 0; |
| + // Deregister a sink. Tolerates sink == nullptr. |
| + virtual void RemoveSink( |
| + rtc::VideoSinkInterface<cricket::VideoFrame>* sink) = 0; |
| virtual VideoSourceInterface* GetSource() const = 0; |
| protected: |