Index: media/blink/webmediaplayer_impl.h |
diff --git a/media/blink/webmediaplayer_impl.h b/media/blink/webmediaplayer_impl.h |
index d97a0b4c4a5429f5b1e8be09ced5e34e0600c9eb..c94c0cf6f4715d55ffe3a393961b324033c41fc9 100644 |
--- a/media/blink/webmediaplayer_impl.h |
+++ b/media/blink/webmediaplayer_impl.h |
@@ -36,6 +36,11 @@ |
#include "third_party/WebKit/public/platform/WebMediaPlayer.h" |
#include "url/gurl.h" |
+#if defined(OS_ANDROID) // WMPI_CAST |
+// Delete this file when WMPI_CAST is no longer needed. |
+#include "media/blink/renderer_media_player_interface.h" |
+#endif |
+ |
namespace blink { |
class WebGraphicsContext3D; |
class WebLocalFrame; |
@@ -70,6 +75,9 @@ class WebTextTrackImpl; |
class MEDIA_BLINK_EXPORT WebMediaPlayerImpl |
: public NON_EXPORTED_BASE(blink::WebMediaPlayer), |
public NON_EXPORTED_BASE(WebMediaPlayerDelegate::Observer), |
+#if defined(OS_ANDROID) // WMPI_CAST |
+ public RendererMediaPlayerInterface, |
+#endif |
public base::SupportsWeakPtr<WebMediaPlayerImpl> { |
public: |
// Constructs a WebMediaPlayer implementation using Chromium's media stack. |
@@ -190,6 +198,64 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl |
void OnHidden() override; |
void OnShown() override; |
+#if defined(OS_ANDROID) // WMPI_CAST |
+ void requestRemotePlayback() override; |
+ void requestRemotePlaybackControl() override; |
+ |
+ void set_media_player_manager( |
+ RendererMediaPlayerManagerInterface* media_player_manager); |
+ |
+ // RendererMediaPlayerInterface implementation |
+ void OnMediaMetadataChanged(base::TimeDelta duration, |
+ int width, |
+ int height, |
+ bool success) override; |
+ void OnPlaybackComplete() override; |
+ void OnBufferingUpdate(int percentage) override; |
+ void OnSeekRequest(const base::TimeDelta& time_to_seek) override; |
+ void OnSeekComplete(const base::TimeDelta& current_time) override; |
+ void OnMediaError(int error_type) override; |
+ void OnVideoSizeChanged(int width, int height) override; |
+ |
+ // Called to update the current time. |
+ void OnTimeUpdate(base::TimeDelta current_timestamp, |
+ base::TimeTicks current_time_ticks) override; |
+ |
+ // void OnWaitingForDecryptionKey() override; |
+ void OnPlayerReleased() override; |
+ |
+ // Functions called when media player status changes. |
+ void OnConnectedToRemoteDevice( |
+ const std::string& remote_playback_message) override; |
+ void OnDisconnectedFromRemoteDevice() override; |
+ void OnDidExitFullscreen() override; |
+ void OnMediaPlayerPlay() override; |
+ void OnMediaPlayerPause() override; |
+ void OnRemoteRouteAvailabilityChanged(bool routes_available) override; |
+ |
+ // Getters of playback state. |
+ // bool paused() const override; |
+ |
+ // True if the loaded media has a playable video track. |
+ // bool hasVideo() const override; |
+ |
+ // This function is called by the RendererMediaPlayerManager to pause the |
+ // video and release the media player and surface texture when we switch tabs. |
+ // However, the actual GlTexture is not released to keep the video screenshot. |
+ void ReleaseMediaResources() override; |
+ |
+#if defined(VIDEO_HOLE) |
+ // Calculate the boundary rectangle of the media player (i.e. location and |
+ // size of the video frame). |
+ // Returns true if the geometry has been changed since the last call. |
+ bool UpdateBoundaryRectangle() override; |
+ |
+ const gfx::RectF GetBoundaryRectangle() override; |
+#endif |
+ |
+ void DrawRemotePlaybackText(const std::string& remote_playback_message); |
+#endif |
+ |
private: |
// Initiate suspending the pipeline. |
void Suspend(); |
@@ -242,7 +308,7 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl |
// Called when a decoder detects that the key needed to decrypt the stream |
// is not available. |
- void OnWaitingForDecryptionKey(); |
+ void OnWaitingForDecryptionKey() override; |
// Sets |cdm_context| on the pipeline and fires |cdm_attached_cb| when done. |
// Parameter order is reversed for easy binding. |
@@ -400,6 +466,25 @@ class MEDIA_BLINK_EXPORT WebMediaPlayerImpl |
scoped_ptr<RendererFactory> renderer_factory_; |
+#if defined(OS_ANDROID) // WMPI_CAST |
+ // Manages this object and delegates player calls to the browser process. |
+ // Owned by RenderFrameImpl. |
+ RendererMediaPlayerManagerInterface* player_manager_ = nullptr; |
+ |
+ // Player ID assigned by the |player_manager_|. |
+ int player_id_; |
+ |
+ // Whether the browser is currently connected to a remote media player. |
+ bool is_remote_ = false; |
+ |
+ // Last reported playout time. |
+ base::TimeDelta remote_time_; |
+ base::TimeTicks remote_time_at_; |
+ |
+ // Whether the media player has been initialized. |
+ bool is_player_initialized_ = false; |
+#endif |
+ |
DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); |
}; |