| Index: webkit/media/android/webmediaplayer_android.h
|
| diff --git a/webkit/media/android/webmediaplayer_android.h b/webkit/media/android/webmediaplayer_android.h
|
| index ef535204edb9e3584e65e44b6bd42cc459e23d1f..fb5fae1adcf08368e30f8489b3e0ec9803d0373e 100644
|
| --- a/webkit/media/android/webmediaplayer_android.h
|
| +++ b/webkit/media/android/webmediaplayer_android.h
|
| @@ -8,9 +8,11 @@
|
| #include <jni.h>
|
|
|
| #include "base/basictypes.h"
|
| -#include "base/message_loop.h"
|
| +#include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/message_loop.h"
|
| #include "base/time.h"
|
| +#include "cc/layers/video_frame_provider.h"
|
| #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
|
| #include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h"
|
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayer.h"
|
| @@ -19,6 +21,10 @@ namespace WebKit {
|
| class WebVideoFrame;
|
| }
|
|
|
| +namespace webkit {
|
| +class WebLayerImpl;
|
| +}
|
| +
|
| namespace webkit_media {
|
|
|
| class StreamTextureFactory;
|
| @@ -30,6 +36,9 @@ class WebVideoFrameImpl;
|
| // WebKit::WebMediaPlayer on Android.
|
| class WebMediaPlayerAndroid
|
| : public WebKit::WebMediaPlayer,
|
| +#ifdef REMOVE_WEBVIDEOFRAME
|
| + public cc::VideoFrameProvider,
|
| +#endif
|
| public MessageLoop::DestructionObserver {
|
| public:
|
| // Resource loading.
|
| @@ -94,6 +103,7 @@ class WebMediaPlayerAndroid
|
| virtual unsigned audioDecodedByteCount() const;
|
| virtual unsigned videoDecodedByteCount() const;
|
|
|
| +#ifndef REMOVE_WEBVIDEOFRAME
|
| // Methods called from VideoLayerChromium. These methods are running on the
|
| // compositor thread.
|
| virtual WebKit::WebVideoFrame* getCurrentFrame();
|
| @@ -102,6 +112,15 @@ class WebMediaPlayerAndroid
|
| // This gets called both on compositor and main thread to set the callback
|
| // target when a frame is produced.
|
| virtual void setStreamTextureClient(WebKit::WebStreamTextureClient* client);
|
| +#else
|
| + // cc::VideoFrameProvider implementation. These methods are running on the
|
| + // compositor thread.
|
| + 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;
|
| +#endif
|
|
|
| // Media player callback handlers.
|
| virtual void OnMediaPrepared(base::TimeDelta duration);
|
| @@ -195,8 +214,8 @@ class WebMediaPlayerAndroid
|
| // Size of the video.
|
| WebKit::WebSize natural_size_;
|
|
|
| - // The video frame object used for renderering by WebKit.
|
| - scoped_ptr<WebVideoFrameImpl> web_video_frame_;
|
| + // The video frame object used for rendering by the compositor.
|
| + scoped_refptr<media::VideoFrame> current_frame_;
|
|
|
| // Message loop for main renderer thread.
|
| MessageLoop* main_loop_;
|
| @@ -251,6 +270,12 @@ class WebMediaPlayerAndroid
|
| // Whether media player needs external surface.
|
| bool needs_external_surface_;
|
|
|
| + // A pointer back to the compositor to inform it about state changes. This is
|
| + // not NULL while the compositor is actively using this webmediaplayer.
|
| + cc::VideoFrameProvider::Client* video_frame_provider_client_;
|
| +
|
| + scoped_ptr<webkit::WebLayerImpl> video_weblayer_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerAndroid);
|
| };
|
|
|
|
|