| Index: content/renderer/render_frame_impl.cc
|
| diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
|
| index a41cdb260b8e4372543204bdd996cae5d36ee182..5c6b3aa77dbf49fcac774ff2773db90487d463d8 100644
|
| --- a/content/renderer/render_frame_impl.cc
|
| +++ b/content/renderer/render_frame_impl.cc
|
| @@ -214,8 +214,10 @@
|
| #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
|
|
|
| @@ -225,8 +227,6 @@
|
|
|
| #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,17 +760,13 @@ 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(blink::WebMediaPlayer::LoadType load_type,
|
| - const GURL& url) {
|
| - if (load_type == blink::WebMediaPlayer::LoadTypeMediaSource)
|
| - return media::IsUnifiedMediaPipelineEnabledForMse();
|
| -
|
| +bool UseWebMediaPlayerImpl(const GURL& url) {
|
| // 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 hardware decoders are not available.
|
| + // software and platform decoders are not available.
|
| if (base::EndsWith(url.path(), ".mp4",
|
| base::CompareCase::INSENSITIVE_ASCII) &&
|
| !media::HasPlatformDecoderSupport()) {
|
| @@ -782,6 +778,24 @@ bool UseWebMediaPlayerImpl(blink::WebMediaPlayer::LoadType load_type,
|
| }
|
| #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
|
| @@ -2382,7 +2396,6 @@ blink::WebPlugin* RenderFrameImpl::createPlugin(
|
| }
|
|
|
| blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
|
| - blink::WebMediaPlayer::LoadType load_type,
|
| const blink::WebURL& url,
|
| WebMediaPlayerClient* client,
|
| WebMediaPlayerEncryptedMediaClient* encrypted_client,
|
| @@ -2429,7 +2442,7 @@ blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
|
| initial_cdm, media_surface_manager_, media_session);
|
|
|
| #if defined(OS_ANDROID)
|
| - if (!UseWebMediaPlayerImpl(load_type, url))
|
| + if (!UseWebMediaPlayerImpl(url))
|
| return CreateAndroidWebMediaPlayer(client, encrypted_client, params);
|
| #endif // defined(OS_ANDROID)
|
|
|
| @@ -5904,26 +5917,25 @@ bool RenderFrameImpl::AreSecureCodecsSupported() {
|
| }
|
|
|
| media::CdmFactory* RenderFrameImpl::GetCdmFactory() {
|
| -#if defined(ENABLE_BROWSER_CDMS)
|
| - if (!cdm_manager_)
|
| - cdm_manager_ = new RendererCdmManager(this);
|
| -#endif // defined(ENABLE_BROWSER_CDMS)
|
| -
|
| - if (!cdm_factory_) {
|
| - DCHECK(frame_);
|
| + if (cdm_factory_)
|
| + return cdm_factory_.get();
|
|
|
| #if defined(ENABLE_MOJO_CDM)
|
| + if (UseMojoCdm()) {
|
| cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider()));
|
| -#else
|
| - cdm_factory_.reset(new RenderCdmFactory(
|
| + return cdm_factory_.get();
|
| + }
|
| +#endif // defined(ENABLE_MOJO_CDM)
|
| +
|
| #if defined(ENABLE_PEPPER_CDMS)
|
| - base::Bind(&PepperCdmWrapperImpl::Create, frame_)
|
| + DCHECK(frame_);
|
| + cdm_factory_.reset(
|
| + new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_)));
|
| #elif defined(ENABLE_BROWSER_CDMS)
|
| - cdm_manager_
|
| -#endif
|
| - ));
|
| -#endif // defined(ENABLE_MOJO_CDM)
|
| - }
|
| + if (!cdm_manager_)
|
| + cdm_manager_ = new RendererCdmManager(this);
|
| + cdm_factory_.reset(new RenderCdmFactory(cdm_manager_));
|
| +#endif // defined(ENABLE_PEPPER_CDMS)
|
|
|
| return cdm_factory_.get();
|
| }
|
|
|