summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/services/media_foundation_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/mojo/services/media_foundation_service.cc')
-rw-r--r--chromium/media/mojo/services/media_foundation_service.cc23
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(