diff options
Diffstat (limited to 'media/wmf-clearkey/WMFClearKeyCDMAccess.cpp')
-rw-r--r-- | media/wmf-clearkey/WMFClearKeyCDMAccess.cpp | 53 |
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 |