| Index: webkit/media/webmediaplayer_ms.h
|
| diff --git a/webkit/media/webmediaplayer_ms.h b/webkit/media/webmediaplayer_ms.h
|
| index 9d2d43e33510e710d136d0e0612e2d3ae55ca6ad..f27a8145580dfe115e3bd28d2ce277e43b12cebe 100644
|
| --- a/webkit/media/webmediaplayer_ms.h
|
| +++ b/webkit/media/webmediaplayer_ms.h
|
| @@ -9,10 +9,12 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/synchronization/lock.h"
|
| +#include "cc/layers/video_frame_provider.h"
|
| #include "googleurl/src/gurl.h"
|
| #include "media/filters/skcanvas_video_renderer.h"
|
| #include "skia/ext/platform_canvas.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h"
|
| +#include "third_party/WebKit/Source/WebKit/chromium/public/WebStreamTextureClient.h"
|
|
|
| namespace WebKit {
|
| class WebFrame;
|
| @@ -47,6 +49,8 @@ class WebMediaPlayerDelegate;
|
| // WebKit client of this media player object.
|
| class WebMediaPlayerMS
|
| : public WebKit::WebMediaPlayer,
|
| + public cc::VideoFrameProvider,
|
| + public WebKit::WebStreamTextureClient,
|
| public base::SupportsWeakPtr<WebMediaPlayerMS> {
|
| public:
|
| // Construct a WebMediaPlayerMS with reference to the client, and
|
| @@ -120,8 +124,18 @@ class WebMediaPlayerMS
|
| virtual unsigned audioDecodedByteCount() const OVERRIDE;
|
| virtual unsigned videoDecodedByteCount() const OVERRIDE;
|
|
|
| - virtual WebKit::WebVideoFrame* getCurrentFrame() OVERRIDE;
|
| - virtual void putCurrentFrame(WebKit::WebVideoFrame* web_video_frame) OVERRIDE;
|
| + virtual WebKit::WebLayer* createCompositingLayer();
|
| +
|
| + // VideoFrameProvider imlpementation.
|
| + virtual void SetVideoFrameProviderClient(
|
| + cc::VideoFrameProvider::Client* client) OVERRIDE;
|
| + virtual scoped_refptr<media::VideoFrame> GetCurrentFrame() OVERRIDE;
|
| + virtual void PutCurrentFrame(const scoped_refptr<media::VideoFrame>& frame)
|
| + OVERRIDE;
|
| +
|
| + // WebStreamTextureClient implementation.
|
| + virtual void didReceiveFrame();
|
| + virtual void didUpdateMatrix(const float* matrix);
|
|
|
| private:
|
| // The callback for VideoFrameProvider to signal a new frame is available.
|
| @@ -155,16 +169,21 @@ class WebMediaPlayerMS
|
| base::WeakPtr<WebMediaPlayerDelegate> delegate_;
|
|
|
| MediaStreamClient* media_stream_client_;
|
| - scoped_refptr<VideoFrameProvider> video_frame_provider_;
|
| + scoped_refptr<webkit_media::VideoFrameProvider> video_frame_provider_;
|
| bool paused_;
|
| +
|
| + base::Lock current_frame_lock_;
|
| // |current_frame_| is updated only on main thread.
|
| scoped_refptr<media::VideoFrame> current_frame_;
|
| // |current_frame_used_| is updated on both main and compositing thread.
|
| // It's used to track whether |current_frame_| was painted for detecting
|
| // when to increase |dropped_frame_count_|.
|
| bool current_frame_used_;
|
| - base::Lock current_frame_lock_;
|
| bool pending_repaint_;
|
| +
|
| + base::Lock provider_lock_;
|
| + cc::VideoFrameProvider::Client* video_frame_provider_client_;
|
| +
|
| bool received_first_frame_;
|
| bool sequence_started_;
|
| base::TimeDelta start_time_;
|
|
|