summaryrefslogtreecommitdiffstats
path: root/media/wmf-clearkey/WMFClearKeyCDMAccess.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/wmf-clearkey/WMFClearKeyCDMAccess.cpp')
-rw-r--r--media/wmf-clearkey/WMFClearKeyCDMAccess.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/media/wmf-clearkey/WMFClearKeyCDMAccess.cpp b/media/wmf-clearkey/WMFClearKeyCDMAccess.cpp
new file mode 100644
index 0000000000..709690e48f
--- /dev/null
+++ b/media/wmf-clearkey/WMFClearKeyCDMAccess.cpp
@@ -0,0 +1,53 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "WMFClearKeyCDMAccess.h"
+
+#include <Mferror.h>
+#include <oleauto.h>
+
+#include "WMFClearKeyCDM.h"
+#include "WMFClearKeyUtils.h"
+
+namespace mozilla {
+
+using Microsoft::WRL::ComPtr;
+using Microsoft::WRL::MakeAndInitialize;
+
+STDMETHODIMP WMFClearKeyCDMAccess::CreateContentDecryptionModule(
+ IPropertyStore* aProperties, IMFContentDecryptionModule** aCdm) {
+ ENTRY_LOG();
+ if (!aProperties) {
+ ENTRY_LOG_ARGS("Null properties!");
+ return MF_E_UNEXPECTED;
+ }
+
+ *aCdm = nullptr;
+ ComPtr<IMFContentDecryptionModule> cdm;
+ RETURN_IF_FAILED(
+ (MakeAndInitialize<WMFClearKeyCDM, IMFContentDecryptionModule>(
+ &cdm, aProperties)));
+ *aCdm = cdm.Detach();
+ ENTRY_LOG_ARGS("Created clearkey CDM!");
+ return S_OK;
+}
+
+STDMETHODIMP WMFClearKeyCDMAccess::GetConfiguration(IPropertyStore** aConfig) {
+ NOT_IMPLEMENTED();
+ return E_NOTIMPL;
+}
+
+STDMETHODIMP WMFClearKeyCDMAccess::GetKeySystem(LPWSTR* aKeySystem) {
+ ENTRY_LOG();
+ *aKeySystem = (LPWSTR)CoTaskMemAlloc((wcslen(kCLEARKEY_SYSTEM_NAME) + 1) *
+ sizeof(wchar_t));
+ if (*aKeySystem == NULL) {
+ return E_OUTOFMEMORY;
+ }
+ wcscpy_s(*aKeySystem, wcslen(kCLEARKEY_SYSTEM_NAME) + 1,
+ kCLEARKEY_SYSTEM_NAME);
+ return S_OK;
+}
+
+} // namespace mozilla