summaryrefslogtreecommitdiffstats
path: root/content/renderer/render_frame_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/renderer/render_frame_impl.cc')
-rw-r--r--content/renderer/render_frame_impl.cc62
1 files changed, 25 insertions, 37 deletions
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index e1b14d9..d7eaf80 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -214,10 +214,8 @@
#endif
#if defined(ENABLE_PEPPER_CDMS)
-#include "content/renderer/media/cdm/render_cdm_factory.h"
#include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h"
#elif defined(ENABLE_BROWSER_CDMS)
-#include "content/renderer/media/cdm/render_cdm_factory.h"
#include "content/renderer/media/cdm/renderer_cdm_manager.h"
#endif
@@ -227,6 +225,8 @@
#if defined(ENABLE_MOJO_CDM)
#include "media/mojo/services/mojo_cdm_factory.h" // nogncheck
+#else
+#include "content/renderer/media/cdm/render_cdm_factory.h"
#endif
#if defined(ENABLE_MOJO_RENDERER)
@@ -755,13 +755,17 @@ bool IsContentWithCertificateErrorsRelevantToUI(
//
// Note that HLS and MP4 detection are pre-redirect and path-based. It is
// possible to load such a URL and find different content.
-bool UseWebMediaPlayerImpl(const GURL& url) {
+bool UseWebMediaPlayerImpl(blink::WebMediaPlayer::LoadType load_type,
+ const GURL& url) {
+ if (load_type == blink::WebMediaPlayer::LoadTypeMediaSource)
+ return media::IsUnifiedMediaPipelineEnabledForMse();
+
// WMPI does not support HLS.
if (media::MediaCodecUtil::IsHLSPath(url))
return false;
// Don't use WMPI if the container likely contains a codec we can't decode in
- // software and platform decoders are not available.
+ // software and hardware decoders are not available.
if (base::EndsWith(url.path(), ".mp4",
base::CompareCase::INSENSITIVE_ASCII) &&
!media::HasPlatformDecoderSupport()) {
@@ -773,24 +777,6 @@ bool UseWebMediaPlayerImpl(const GURL& url) {
}
#endif // defined(OS_ANDROID)
-#if defined(ENABLE_MOJO_CDM)
-// Returns whether mojo CDM should be used at runtime. Note that even when mojo
-// CDM is enabled at compile time (ENABLE_MOJO_CDM is defined), there are cases
-// where we want to choose other CDM types. For example, on Android when we use
-// WebMediaPlayerAndroid, we still want to use ProxyMediaKeys. In the future,
-// when we experiment mojo CDM on desktop, we will choose between mojo CDM and
-// pepper CDM at runtime.
-// TODO(xhwang): Remove this when we use mojo CDM for all remote CDM cases by
-// default.
-bool UseMojoCdm() {
-#if defined(OS_ANDROID)
- return media::IsUnifiedMediaPipelineEnabled();
-#else
- return true;
-#endif
-}
-#endif // defined(ENABLE_MOJO_CDM)
-
} // namespace
// static
@@ -2397,6 +2383,7 @@ blink::WebPlugin* RenderFrameImpl::createPlugin(
}
blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
+ blink::WebMediaPlayer::LoadType load_type,
const blink::WebURL& url,
WebMediaPlayerClient* client,
WebMediaPlayerEncryptedMediaClient* encrypted_client,
@@ -2443,7 +2430,7 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
initial_cdm, media_surface_manager_, media_session);
#if defined(OS_ANDROID)
- if (!UseWebMediaPlayerImpl(url))
+ if (!UseWebMediaPlayerImpl(load_type, url))
return CreateAndroidWebMediaPlayer(client, encrypted_client, params);
#endif // defined(OS_ANDROID)
@@ -5915,25 +5902,26 @@ bool RenderFrameImpl::AreSecureCodecsSupported() {
}
media::CdmFactory* RenderFrameImpl::GetCdmFactory() {
- if (cdm_factory_)
- return cdm_factory_.get();
+#if defined(ENABLE_BROWSER_CDMS)
+ if (!cdm_manager_)
+ cdm_manager_ = new RendererCdmManager(this);
+#endif // defined(ENABLE_BROWSER_CDMS)
+
+ if (!cdm_factory_) {
+ DCHECK(frame_);
#if defined(ENABLE_MOJO_CDM)
- if (UseMojoCdm()) {
cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider()));
- return cdm_factory_.get();
- }
-#endif // defined(ENABLE_MOJO_CDM)
-
+#else
+ cdm_factory_.reset(new RenderCdmFactory(
#if defined(ENABLE_PEPPER_CDMS)
- DCHECK(frame_);
- cdm_factory_.reset(
- new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_)));
+ base::Bind(&PepperCdmWrapperImpl::Create, frame_)
#elif defined(ENABLE_BROWSER_CDMS)
- if (!cdm_manager_)
- cdm_manager_ = new RendererCdmManager(this);
- cdm_factory_.reset(new RenderCdmFactory(cdm_manager_));
-#endif // defined(ENABLE_PEPPER_CDMS)
+ cdm_manager_
+#endif
+ ));
+#endif // defined(ENABLE_MOJO_CDM)
+ }
return cdm_factory_.get();
}