diff options
Diffstat (limited to 'chromium/media/mojo/services/media_foundation_service.cc')
-rw-r--r-- | chromium/media/mojo/services/media_foundation_service.cc | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/chromium/media/mojo/services/media_foundation_service.cc b/chromium/media/mojo/services/media_foundation_service.cc index 892cbd96381..4410d231dc9 100644 --- a/chromium/media/mojo/services/media_foundation_service.cc +++ b/chromium/media/mojo/services/media_foundation_service.cc @@ -8,6 +8,7 @@ #include "base/bind.h" #include "base/check.h" +#include "media/cdm/win/media_foundation_cdm_module.h" #include "media/media_buildflags.h" #include "media/mojo/mojom/interface_factory.mojom.h" #include "media/mojo/services/interface_factory_impl.h" @@ -15,17 +16,28 @@ namespace media { MediaFoundationService::MediaFoundationService( - mojo::PendingReceiver<mojom::MediaFoundationService> receiver) - : receiver_(this, std::move(receiver)) { + mojo::PendingReceiver<mojom::MediaFoundationService> receiver, + const base::FilePath& user_data_dir, + base::OnceClosure ensure_sandboxed_cb) + : receiver_(this, std::move(receiver)), + ensure_sandboxed_cb_(std::move(ensure_sandboxed_cb)), + mojo_media_client_(user_data_dir) { mojo_media_client_.Initialize(); } MediaFoundationService::~MediaFoundationService() = default; void MediaFoundationService::Initialize(const base::FilePath& cdm_path) { - // TODO(xhwang): Support loading MediaFoundation CDM and activating - // IMFContentDecryptionModuleFactory. - NOTIMPLEMENTED(); + DVLOG(1) << __func__ << ": cdm_path=" << cdm_path; + + auto* instance = MediaFoundationCdmModule::GetInstance(); + if (instance->initialized()) { + DCHECK_EQ(cdm_path, instance->cdm_path()); + return; + } + + instance->Initialize(cdm_path); + std::move(ensure_sandboxed_cb_).Run(); } void MediaFoundationService::IsKeySystemSupported( @@ -34,6 +46,7 @@ void MediaFoundationService::IsKeySystemSupported( // TODO(crbug.com/1115687): Implement MediaFoundation-based key system support // query. NOTIMPLEMENTED(); + std::move(callback).Run(false, nullptr); } void MediaFoundationService::CreateInterfaceFactory( |