| Index: content/renderer/media/android/webmediaplayer_android.h
|
| diff --git a/content/renderer/media/android/webmediaplayer_android.h b/content/renderer/media/android/webmediaplayer_android.h
|
| index d338a4cc343c6b5fef57be40392a8d44f98f81c6..3415608773c19d7ac7c9d773fe42464aee2e3183 100644
|
| --- a/content/renderer/media/android/webmediaplayer_android.h
|
| +++ b/content/renderer/media/android/webmediaplayer_android.h
|
| @@ -13,6 +13,7 @@
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| +#include "base/synchronization/waitable_event.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "base/time/default_tick_clock.h"
|
| #include "base/time/time.h"
|
| @@ -72,7 +73,8 @@ class WebContentDecryptionModuleImpl;
|
| // player.
|
| class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
|
| public cc::VideoFrameProvider,
|
| - public RenderFrameObserver {
|
| + public RenderFrameObserver,
|
| + public StreamTextureFactoryContextObserver {
|
| public:
|
| // Construct a WebMediaPlayerAndroid object. This class communicates with the
|
| // MediaPlayerAndroid object in the browser process through |proxy|.
|
| @@ -199,6 +201,9 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
|
| void OnMediaPlayerPause();
|
| void OnRequestFullscreen();
|
|
|
| + // StreamTextureFactoryContextObserver implementation.
|
| + virtual void ResetStreamTextureProxy() OVERRIDE;
|
| +
|
| // Called when the player is released.
|
| virtual void OnPlayerReleased();
|
|
|
| @@ -404,28 +409,18 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
|
| // point for when the mailbox was produced.
|
| gpu::Mailbox texture_mailbox_;
|
|
|
| - // Stream texture ID allocated to the video.
|
| - unsigned int stream_id_;
|
| -
|
| // Whether the mediaplayer is playing.
|
| bool is_playing_;
|
|
|
| // Whether media player needs to re-establish the surface texture peer.
|
| bool needs_establish_peer_;
|
|
|
| - // Whether |stream_texture_proxy_| is initialized.
|
| - bool stream_texture_proxy_initialized_;
|
| -
|
| // Whether the video size info is available.
|
| bool has_size_info_;
|
|
|
| // Object for allocating stream textures.
|
| scoped_refptr<StreamTextureFactory> stream_texture_factory_;
|
|
|
| - // Object for calling back the compositor thread to repaint the video when a
|
| - // frame available. It should be initialized on the compositor thread.
|
| - ScopedStreamTextureProxy stream_texture_proxy_;
|
| -
|
| // Whether media player needs external surface.
|
| // Only used for the VIDEO_HOLE logic.
|
| bool needs_external_surface_;
|
| @@ -433,10 +428,21 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer,
|
| // Whether valid metadata are available
|
| bool has_valid_metadata_;
|
|
|
| + base::Lock client_lock_;
|
| +
|
| // A pointer back to the compositor to inform it about state changes. This is
|
| // not NULL while the compositor is actively using this webmediaplayer.
|
| + // Protected by |client_lock_|.
|
| cc::VideoFrameProvider::Client* video_frame_provider_client_;
|
|
|
| + // Object for calling back the compositor thread to repaint the video when a
|
| + // frame available. It should be initialized on the compositor thread.
|
| + // Protected by |client_lock_|.
|
| + ScopedStreamTextureProxy stream_texture_proxy_;
|
| +
|
| + // Stream texture ID allocated to the video. Protected by |client_lock_|.
|
| + unsigned int stream_id_;
|
| +
|
| scoped_ptr<cc_blink::WebLayerImpl> video_weblayer_;
|
|
|
| #if defined(VIDEO_HOLE)
|
|
|