| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index 5c6b3aa77dbf49fcac774ff2773db90487d463d8..a41cdb260b8e4372543204bdd996cae5d36ee182 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)
|
| @@ -760,13 +760,17 @@
|
| //
|
| // 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()) {
|
| @@ -777,24 +781,6 @@
|
| return media::IsUnifiedMediaPipelineEnabled();
|
| }
|
| #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
|
|
|
| @@ -2396,6 +2382,7 @@
|
| }
|
|
|
| blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
|
| + blink::WebMediaPlayer::LoadType load_type,
|
| const blink::WebURL& url,
|
| WebMediaPlayerClient* client,
|
| WebMediaPlayerEncryptedMediaClient* encrypted_client,
|
| @@ -2442,7 +2429,7 @@
|
| 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)
|
|
|
| @@ -5917,25 +5904,26 @@
|
| }
|
|
|
| media::CdmFactory* RenderFrameImpl::GetCdmFactory() {
|
| - if (cdm_factory_)
|
| - return cdm_factory_.get();
|
| -
|
| -#if defined(ENABLE_MOJO_CDM)
|
| - if (UseMojoCdm()) {
|
| - cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider()));
|
| - return cdm_factory_.get();
|
| - }
|
| -#endif // defined(ENABLE_MOJO_CDM)
|
| -
|
| -#if defined(ENABLE_PEPPER_CDMS)
|
| - DCHECK(frame_);
|
| - cdm_factory_.reset(
|
| - new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_)));
|
| -#elif defined(ENABLE_BROWSER_CDMS)
|
| +#if defined(ENABLE_BROWSER_CDMS)
|
| if (!cdm_manager_)
|
| cdm_manager_ = new RendererCdmManager(this);
|
| - cdm_factory_.reset(new RenderCdmFactory(cdm_manager_));
|
| -#endif // defined(ENABLE_PEPPER_CDMS)
|
| +#endif // defined(ENABLE_BROWSER_CDMS)
|
| +
|
| + if (!cdm_factory_) {
|
| + DCHECK(frame_);
|
| +
|
| +#if defined(ENABLE_MOJO_CDM)
|
| + cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider()));
|
| +#else
|
| + cdm_factory_.reset(new RenderCdmFactory(
|
| +#if defined(ENABLE_PEPPER_CDMS)
|
| + base::Bind(&PepperCdmWrapperImpl::Create, frame_)
|
| +#elif defined(ENABLE_BROWSER_CDMS)
|
| + cdm_manager_
|
| +#endif
|
| + ));
|
| +#endif // defined(ENABLE_MOJO_CDM)
|
| + }
|
|
|
| return cdm_factory_.get();
|
| }
|
|
|