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_; |