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_; |