diff options
author | ycheo@chromium.org <ycheo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-24 08:34:41 +0000 |
---|---|---|
committer | ycheo@chromium.org <ycheo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-24 08:34:41 +0000 |
commit | 2fa4711ec562e9ae4e439d6afc574b98248fc690 (patch) | |
tree | 672ad61fc580e8779af03757262f72803ec27bb4 /content/renderer/media | |
parent | 2919a5ecdce9555550f675bd8715c01259a43d79 (diff) | |
download | chromium_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')
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_); |