Chromium Code Reviews| Index: content/browser/media/android/browser_media_player_manager.h |
| diff --git a/content/browser/media/android/browser_media_player_manager.h b/content/browser/media/android/browser_media_player_manager.h |
| index cb0ce381f8669f7a5f9ae75be661872f9672745f..0130e7f5feb72ea4247763a7b9a9bd683eb57530 100644 |
| --- a/content/browser/media/android/browser_media_player_manager.h |
| +++ b/content/browser/media/android/browser_media_player_manager.h |
| @@ -5,6 +5,8 @@ |
| #ifndef CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_ |
| #define CONTENT_BROWSER_MEDIA_ANDROID_BROWSER_MEDIA_PLAYER_MANAGER_H_ |
| +#include <map> |
| + |
| #include "base/basictypes.h" |
| #include "base/callback.h" |
| #include "base/memory/scoped_ptr.h" |
| @@ -160,22 +162,29 @@ class CONTENT_EXPORT BrowserMediaPlayerManager |
| bool hide_url_log, |
| BrowserDemuxerAndroid* demuxer); |
| - // MediaPlayerAndroid must call this before it is going to decode |
| - // media streams. This helps the manager object maintain an array |
| - // of active MediaPlayerAndroid objects and release the resources |
| - // when needed. Currently we only count video resources as they are |
| - // constrained by hardware and memory limits. |
| - virtual void OnMediaResourcesRequested(int player_id); |
| + // Called to request decoder resources. Returns true if the request is |
| + // permitted, or false otherwise. The manager object maintain an array |
|
Ted C
2015/09/28 22:42:29
maintain[s]
qinmin
2015/09/29 23:16:22
Done.
|
| + // of active MediaPlayerAndroid objects and release the inactive resources |
|
Ted C
2015/09/28 22:42:29
release[s]
qinmin
2015/09/29 23:16:22
Done.
|
| + // when needed. |
| + virtual bool RequestDecoderResources(int player_id, bool temporary); |
|
Ted C
2015/09/28 22:42:29
Can you describe what temporary means and why you
qinmin
2015/09/29 23:16:22
Done.
|
| - // Called when a player releases all decoding resources. |
| - void ReleaseMediaResources(int player_id); |
| + // MediaPlayerAndroid must call this to inform the manager that it is about |
| + // to release itself. |
|
Ted C
2015/09/28 22:42:29
What is the difference between this and ReleasePla
qinmin
2015/09/29 23:16:22
Renamed OnPlayerReleased to OnDecoderResourcesRele
|
| + virtual void OnPlayerReleased(int player_id); |
| // Releases the player. However, don't remove it from |players_|. |
| void ReleasePlayer(media::MediaPlayerAndroid* player); |
| + // Called when user approves media playback after being throttled. |
| + void OnPlaybackPermissionGranted(int player_id, bool granted); |
| + |
| + // Helper method to start playback. |
| + void StartInternal(int player_id); |
| + |
| #if defined(VIDEO_HOLE) |
| void ReleasePlayerOfExternalVideoSurfaceIfNeeded(int future_player); |
| void OnRequestExternalSurface(int player_id, const gfx::RectF& rect); |
| + void ReleaseExternalSurface(int player_id); |
| #endif // defined(VIDEO_HOLE) |
| RenderFrameHost* const render_frame_host_; |
| @@ -183,6 +192,12 @@ class CONTENT_EXPORT BrowserMediaPlayerManager |
| // An array of managed players. |
| ScopedVector<media::MediaPlayerAndroid> players_; |
| + typedef std::map<int, bool> ActivePlayerMap; |
| + // Players that have requested decoding resources. Even though resource is |
| + // requested, a player may be in a paused or error state and the manager |
| + // will release its resources later. |
| + ActivePlayerMap active_players_; |
| + |
| // The fullscreen video view object or NULL if video is not played in |
| // fullscreen. |
| scoped_ptr<ContentVideoView> video_view_; |