| 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);
|
| };
|
|
|
|
|