Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: webkit/media/android/media_player_bridge_manager_impl.cc

Issue 10919075: Move android mediaplayer from render process to browser process. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressing comments and resolving merge conflicts Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/media/android/media_player_bridge_manager_impl.cc
diff --git a/webkit/media/android/media_player_bridge_manager_impl.cc b/webkit/media/android/media_player_bridge_manager_impl.cc
new file mode 100644
index 0000000000000000000000000000000000000000..acadb2d06d3b4fd7f9aa3c23bbffcf14c0831e3c
--- /dev/null
+++ b/webkit/media/android/media_player_bridge_manager_impl.cc
@@ -0,0 +1,64 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "webkit/media/android/media_player_bridge_manager_impl.h"
+
+#include "media/base/android/media_player_bridge.h"
+
+namespace webkit_media {
+
+MediaPlayerBridgeManagerImpl::MediaPlayerBridgeManagerImpl(
+ int threshold)
+ : active_player_threshold_(threshold) {
+}
+
+MediaPlayerBridgeManagerImpl::~MediaPlayerBridgeManagerImpl() {}
+
+void MediaPlayerBridgeManagerImpl::RequestMediaResources(
+ media::MediaPlayerBridge* player) {
+ if (!player)
+ return;
+
+ int num_active_player = 0;
+ std::vector<media::MediaPlayerBridge*>::iterator it;
+ for (it = players_.begin(); it != players_.end(); ++it) {
+ // The player is already active, ignore it.
+ if ((*it) == player)
+ return;
+
+ num_active_player++;
+ }
+
+ if (num_active_player < active_player_threshold_) {
+ players_.push_back(player);
+ return;
+ }
+
+ // Get a list of the players to free.
+ std::vector<media::MediaPlayerBridge*> players_to_release;
+ for (it = players_.begin(); it != players_.end(); ++it) {
+ if ((*it)->prepared() && !(*it)->IsPlaying())
+ players_to_release.push_back(*it);
+ }
+
+ // Calling release() will result in a call to ReleaseMediaResources(), so
+ // the player will be removed from |players_|.
+ for (it = players_to_release.begin(); it != players_to_release.end(); ++it)
+ (*it)->Release();
+
+ players_.push_back(player);
+}
+
+void MediaPlayerBridgeManagerImpl::ReleaseMediaResources(
+ media::MediaPlayerBridge* player) {
+ for (std::vector<media::MediaPlayerBridge*>::iterator it = players_.begin();
+ it != players_.end(); ++it) {
+ if ((*it) == player) {
+ players_.erase(it);
+ return;
+ }
+ }
+}
+
+} // namespace webkit_media
« no previous file with comments | « webkit/media/android/media_player_bridge_manager_impl.h ('k') | webkit/media/android/webmediaplayer_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698