Chromium Code Reviews| Index: content/public/renderer/media_stream_video_sink.h |
| diff --git a/content/public/renderer/media_stream_video_sink.h b/content/public/renderer/media_stream_video_sink.h |
| index b1dda9c46fa42c59f371efc1e966906642c5a68f..e7313afd7126b841dc2aed9b2b449a6933a71e27 100644 |
| --- a/content/public/renderer/media_stream_video_sink.h |
| +++ b/content/public/renderer/media_stream_video_sink.h |
| @@ -13,10 +13,7 @@ |
| #include "content/common/media/video_capture.h" |
| #include "content/public/renderer/media_stream_sink.h" |
| #include "media/base/video_capturer_source.h" |
| - |
| -namespace blink { |
| -class WebMediaStreamTrack; |
| -} |
| +#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h" |
| namespace content { |
| @@ -25,25 +22,37 @@ namespace content { |
| // http://dev.w3.org/2011/webrtc/editor/getusermedia.html |
| // All methods calls will be done from the main render thread. |
| class CONTENT_EXPORT MediaStreamVideoSink : public MediaStreamSink { |
| - public: |
| - // An implementation of MediaStreamVideoSink should call AddToVideoTrack when |
| + protected: |
| + MediaStreamVideoSink(); |
| + ~MediaStreamVideoSink() override; |
| + |
| + // An implementation of MediaStreamVideoSink should call ConnectToTrack when |
| // it is ready to receive data from a video track. Before the implementation |
| - // is destroyed, RemoveFromVideoTrack must be called. |
| + // is destroyed, DisconnectFromTrack must be called. This MediaStreamVideoSink |
| + // base class holds a reference to the WebMediaStreamTrack until |
| + // DisconnectFromTrack is called. |
| // |
| // Calls to these methods must be done on the main render thread. |
| // Note that |callback| for frame delivery happens on the IO thread. |
| // |
| - // Calling RemoveFromVideoTrack also not stop frame delivery through the |
| - // callback immediately because it may happen on another thread. |
| - // The added callback will be reset on the render thread. |
| - static void AddToVideoTrack(MediaStreamVideoSink* sink, |
| - const VideoCaptureDeliverFrameCB& callback, |
| - const blink::WebMediaStreamTrack& track); |
| - static void RemoveFromVideoTrack(MediaStreamVideoSink* sink, |
| - const blink::WebMediaStreamTrack& track); |
| - |
| - protected: |
| - ~MediaStreamVideoSink() override {} |
| + // Warning: Calling DisconnectFromTrack does not immediately stop frame |
| + // delivery through the |callback|, since frames are being delivered on a |
| + // different thread. |
| + void ConnectToTrack(const blink::WebMediaStreamTrack& track, |
| + const VideoCaptureDeliverFrameCB& callback); |
| + void DisconnectFromTrack(); |
| + |
| + // Returns true after ConnectToTrack() is called, and false after |
| + // DisconnectFromTrack(). |
| + bool is_connected() const { return !connected_track_.isNull(); } |
| + |
| + // Requests the source a send a frame "soon" (e.g., to resolve picture loss or |
|
xjz
2016/04/01 19:10:04
s/a send/send
miu
2016/04/01 23:24:27
Done.
|
| + // quality issues). |
| + void RequestRefreshFrame(); |
| + |
| + private: |
| + // Set by ConnectToTrack() and cleared by DisconnectFromTrack(). |
| + blink::WebMediaStreamTrack connected_track_; |
| }; |