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 e0bf0a1c984e8892bd1f87d2559e0103b170c030..041522ac1a23e7c56525095e9b3b6cbca9015b77 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/time.h" |
#include "cc/layers/video_frame_provider.h" |
@@ -70,7 +71,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|. |
@@ -196,6 +198,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(); |
@@ -282,6 +287,8 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer, |
void DrawRemotePlaybackText(const std::string& remote_playback_message); |
void ReallocateVideoFrame(); |
void SetCurrentFrameInternal(scoped_refptr<media::VideoFrame>& frame); |
+ void BindStreamTextureProxyOnCompositorThread( |
+ base::WaitableEvent* completion); |
void DidLoadMediaInfo(MediaInfoLoader::Status status, |
const GURL& redirected_url, |
const GURL& first_party_for_cookies, |
@@ -411,6 +418,8 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer, |
bool needs_establish_peer_; |
// Whether |stream_texture_proxy_| is initialized. |
+ // Accessed on main thread and on compositor thread when main thread is |
+ // blocked. |
bool stream_texture_proxy_initialized_; |
// Whether the video size info is available. |
@@ -421,6 +430,8 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer, |
// Object for calling back the compositor thread to repaint the video when a |
// frame available. It should be initialized on the compositor thread. |
+ // Accessed on main thread and on compositor thread when main thread is |
+ // blocked. |
ScopedStreamTextureProxy stream_texture_proxy_; |
// Whether media player needs external surface. |
@@ -432,6 +443,8 @@ class WebMediaPlayerAndroid : public blink::WebMediaPlayer, |
// A pointer back to the compositor to inform it about state changes. This is |
// not NULL while the compositor is actively using this webmediaplayer. |
+ // Accessed on main thread and on compositor thread when main thread is |
+ // blocked. |
cc::VideoFrameProvider::Client* video_frame_provider_client_; |
scoped_ptr<cc_blink::WebLayerImpl> video_weblayer_; |