| Index: webkit/media/android/webmediaplayer_android.h
|
| diff --git a/webkit/media/android/webmediaplayer_android.h b/webkit/media/android/webmediaplayer_android.h
|
| index c8935faa85ffb4a7c2631bc41223feab9ef8157b..b948d362f6f4ced83d07cb6a3417f6e5ebf2bc96 100644
|
| --- a/webkit/media/android/webmediaplayer_android.h
|
| +++ b/webkit/media/android/webmediaplayer_android.h
|
| @@ -4,6 +4,7 @@
|
|
|
| #ifndef WEBKIT_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_
|
| #define WEBKIT_MEDIA_ANDROID_WEBMEDIAPLAYER_ANDROID_H_
|
| +#pragma once
|
|
|
| #include <jni.h>
|
|
|
| @@ -18,6 +19,7 @@
|
|
|
| namespace WebKit {
|
| class WebCookieJar;
|
| +class WebFrame;
|
| }
|
|
|
| namespace media {
|
| @@ -26,6 +28,9 @@ class MediaPlayerBridge;
|
|
|
| namespace webkit_media {
|
|
|
| +class StreamTextureFactory;
|
| +class StreamTextureProxy;
|
| +class WebMediaPlayerManagerAndroid;
|
| class WebMediaPlayerProxyAndroid;
|
|
|
| // This class serves as the android implementation of WebKit::WebMediaPlayer.
|
| @@ -35,8 +40,11 @@ class WebMediaPlayerAndroid :
|
| public WebKit::WebMediaPlayer,
|
| public base::SupportsWeakPtr<WebMediaPlayerAndroid> {
|
| public:
|
| - WebMediaPlayerAndroid(WebKit::WebMediaPlayerClient* client,
|
| - WebKit::WebCookieJar* cookie_jar);
|
| + WebMediaPlayerAndroid(WebKit::WebFrame* frame,
|
| + WebKit::WebMediaPlayerClient* client,
|
| + WebKit::WebCookieJar* cookie_jar,
|
| + webkit_media::WebMediaPlayerManagerAndroid* manager,
|
| + webkit_media::StreamTextureFactory* factory);
|
| virtual ~WebMediaPlayerAndroid();
|
|
|
| // Set |incognito_mode_| to true if in incognito mode.
|
| @@ -105,6 +113,8 @@ class WebMediaPlayerAndroid :
|
| // compositor thread.
|
| virtual WebKit::WebVideoFrame* getCurrentFrame();
|
| virtual void putCurrentFrame(WebKit::WebVideoFrame*);
|
| + virtual void setStreamTextureClient(
|
| + WebKit::WebStreamTextureClient* client);
|
|
|
| // Media player callback handlers.
|
| void OnMediaPrepared();
|
| @@ -115,8 +125,10 @@ class WebMediaPlayerAndroid :
|
| void OnMediaInfo(int info_type);
|
| void OnVideoSizeChanged(int width, int height);
|
|
|
| - // Method to set the video surface for android media player.
|
| - void SetVideoSurface(jobject j_surface);
|
| + // This function is called by WebMediaPlayerManagerAndroid to pause the video
|
| + // and release |media_player_| and its surface texture when we switch tabs.
|
| + // However, the actual GlTexture is not released to keep the video screenshot.
|
| + void ReleaseMediaResources();
|
|
|
| private:
|
| // Create a media player to load the |url_| and prepare for playback.
|
| @@ -134,9 +146,15 @@ class WebMediaPlayerAndroid :
|
| void UpdateNetworkState(WebKit::WebMediaPlayer::NetworkState state);
|
| void UpdateReadyState(WebKit::WebMediaPlayer::ReadyState state);
|
|
|
| + // Methods for creation and deletion of stream texture.
|
| + void CreateStreamTexture();
|
| + void DestroyStreamTexture();
|
| +
|
| // whether the current process is incognito mode
|
| static bool incognito_mode_;
|
|
|
| + WebKit::WebFrame* frame_;
|
| +
|
| WebKit::WebMediaPlayerClient* const client_;
|
|
|
| // Save the list of buffered time ranges.
|
| @@ -188,6 +206,12 @@ class WebMediaPlayerAndroid :
|
| // Pointer to the cookie jar to get the cookie for the media url.
|
| WebKit::WebCookieJar* cookie_jar_;
|
|
|
| + // Manager for managing this media player.
|
| + webkit_media::WebMediaPlayerManagerAndroid* manager_;
|
| +
|
| + // Player ID assigned by the media player manager.
|
| + int player_id_;
|
| +
|
| // Whether the user has clicked the play button while media player
|
| // is preparing.
|
| bool pending_play_event_;
|
| @@ -196,6 +220,22 @@ class WebMediaPlayerAndroid :
|
| WebKit::WebMediaPlayer::NetworkState network_state_;
|
| WebKit::WebMediaPlayer::ReadyState ready_state_;
|
|
|
| + // GL texture ID allocated to the video.
|
| + unsigned int texture_id_;
|
| +
|
| + // Stream texture ID allocated to the video.
|
| + unsigned int stream_id_;
|
| +
|
| + // Whether |media_player_| needs to re-establish the surface texture peer.
|
| + bool needs_establish_peer_;
|
| +
|
| + // Object for allocating stream textures.
|
| + scoped_ptr<webkit_media::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.
|
| + scoped_ptr<webkit_media::StreamTextureProxy> stream_texture_proxy_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerAndroid);
|
| };
|
|
|
|
|