summaryrefslogtreecommitdiffstats
path: root/content/renderer/media
diff options
context:
space:
mode:
authorycheo@chromium.org <ycheo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-24 08:34:41 +0000
committerycheo@chromium.org <ycheo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-24 08:34:41 +0000
commit2fa4711ec562e9ae4e439d6afc574b98248fc690 (patch)
tree672ad61fc580e8779af03757262f72803ec27bb4 /content/renderer/media
parent2919a5ecdce9555550f675bd8715c01259a43d79 (diff)
downloadchromium_src-2fa4711ec562e9ae4e439d6afc574b98248fc690.zip
chromium_src-2fa4711ec562e9ae4e439d6afc574b98248fc690.tar.gz
chromium_src-2fa4711ec562e9ae4e439d6afc574b98248fc690.tar.bz2
[Android WebView] Add an api to control the hole punching.
- Add a method to AwSettings. - Add a flag to RendererPreferences. - Make WebMediaPlayerAndroid to punch the hole depends on the flag. BUG=329447 Review URL: https://codereview.chromium.org/236133010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265885 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/media')
-rw-r--r--content/renderer/media/android/renderer_media_player_manager.cc9
-rw-r--r--content/renderer/media/android/renderer_media_player_manager.h4
-rw-r--r--content/renderer/media/android/webmediaplayer_android.cc3
3 files changed, 15 insertions, 1 deletions
diff --git a/content/renderer/media/android/renderer_media_player_manager.cc b/content/renderer/media/android/renderer_media_player_manager.cc
index f99cb2b..37815eb 100644
--- a/content/renderer/media/android/renderer_media_player_manager.cc
+++ b/content/renderer/media/android/renderer_media_player_manager.cc
@@ -8,9 +8,11 @@
#include "base/message_loop/message_loop.h"
#include "content/common/media/cdm_messages.h"
#include "content/common/media/media_player_messages_android.h"
+#include "content/public/common/renderer_preferences.h"
#include "content/renderer/media/android/proxy_media_keys.h"
#include "content/renderer/media/android/renderer_media_player_manager.h"
#include "content/renderer/media/android/webmediaplayer_android.h"
+#include "content/renderer/render_view_impl.h"
#include "ui/gfx/rect_f.h"
namespace content {
@@ -438,6 +440,13 @@ void RendererMediaPlayerManager::RetrieveGeometryChanges(
}
}
}
+
+bool
+RendererMediaPlayerManager::ShouldUseVideoOverlayForEmbeddedEncryptedVideo() {
+ const RendererPreferences& prefs = static_cast<RenderViewImpl*>(
+ render_view())->renderer_preferences();
+ return prefs.use_video_overlay_for_embedded_encrypted_video;
+}
#endif // defined(VIDEO_HOLE)
} // namespace content
diff --git a/content/renderer/media/android/renderer_media_player_manager.h b/content/renderer/media/android/renderer_media_player_manager.h
index 4efab8a..9fb5e44 100644
--- a/content/renderer/media/android/renderer_media_player_manager.h
+++ b/content/renderer/media/android/renderer_media_player_manager.h
@@ -93,6 +93,10 @@ class RendererMediaPlayerManager : public RenderViewObserver {
// RenderViewObserver overrides.
virtual void DidCommitCompositorFrame() OVERRIDE;
+
+ // Returns true if a media player should use video-overlay for the embedded
+ // encrypted video.
+ bool ShouldUseVideoOverlayForEmbeddedEncryptedVideo();
#endif // defined(VIDEO_HOLE)
// Encrypted media related methods.
diff --git a/content/renderer/media/android/webmediaplayer_android.cc b/content/renderer/media/android/webmediaplayer_android.cc
index ff4f62f..165828c 100644
--- a/content/renderer/media/android/webmediaplayer_android.cc
+++ b/content/renderer/media/android/webmediaplayer_android.cc
@@ -676,7 +676,8 @@ void WebMediaPlayerAndroid::OnVideoSizeChanged(int width, int height) {
// Use H/W surface for encrypted video.
// TODO(qinmin): Change this so that only EME needs the H/W surface
if (force_use_overlay_embedded_video_ ||
- (media_source_delegate_ && media_source_delegate_->IsVideoEncrypted())) {
+ (media_source_delegate_ && media_source_delegate_->IsVideoEncrypted() &&
+ manager_->ShouldUseVideoOverlayForEmbeddedEncryptedVideo())) {
needs_external_surface_ = true;
if (!paused() && !manager_->IsInFullscreen(frame_))
manager_->RequestExternalSurface(player_id_, last_computed_rect_);