summaryrefslogtreecommitdiffstats
path: root/media/wmf-clearkey/WMFPMPServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/wmf-clearkey/WMFPMPServer.cpp')
-rw-r--r--media/wmf-clearkey/WMFPMPServer.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/media/wmf-clearkey/WMFPMPServer.cpp b/media/wmf-clearkey/WMFPMPServer.cpp
new file mode 100644
index 0000000000..86036cc0c0
--- /dev/null
+++ b/media/wmf-clearkey/WMFPMPServer.cpp
@@ -0,0 +1,68 @@
+/* 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 "WMFPMPServer.h"
+
+#include <mfapi.h>
+#include <mferror.h>
+
+#include "WMFClearKeyUtils.h"
+
+namespace mozilla {
+
+using Microsoft::WRL::ComPtr;
+using Microsoft::WRL::MakeAndInitialize;
+
+HRESULT WMFPMPServer::RuntimeClassInitialize(
+ ABI::Windows::Foundation::Collections::IPropertySet* aPropertyPmp) {
+ ENTRY_LOG();
+ mPropertyPmp = aPropertyPmp;
+ RETURN_IF_FAILED(MFCreatePMPMediaSession(MFPMPSESSION_IN_PROCESS, nullptr,
+ &mMediaSession, nullptr));
+ RETURN_IF_FAILED(MFGetService(mMediaSession.Get(), MF_PMP_SERVER_CONTEXT,
+ IID_PPV_ARGS(&mPmpServer)));
+ RETURN_IF_FAILED(MFGetService(mMediaSession.Get(), MF_PMP_SERVICE,
+ IID_PPV_ARGS(&mPmpHost)));
+ return S_OK;
+}
+
+STDMETHODIMP WMFPMPServer::GetIids(ULONG* aIidCount, IID** aIids) {
+ NOT_IMPLEMENTED();
+ return E_NOTIMPL;
+}
+
+STDMETHODIMP WMFPMPServer::GetRuntimeClassName(
+ _COM_Outptr_ HSTRING* aClassName) {
+ NOT_IMPLEMENTED();
+ return E_NOTIMPL;
+}
+
+STDMETHODIMP WMFPMPServer::GetTrustLevel(TrustLevel* aTrustLevel) {
+ NOT_IMPLEMENTED();
+ return E_NOTIMPL;
+}
+STDMETHODIMP WMFPMPServer::get_Properties(
+ ABI::Windows::Foundation::Collections::IPropertySet** aPpProperties) {
+ ENTRY_LOG();
+ RETURN_IF_FAILED(mPropertyPmp.CopyTo(aPpProperties));
+ return S_OK;
+}
+
+STDMETHODIMP WMFPMPServer::GetService(REFGUID aGuidService, REFIID aRiid,
+ LPVOID* aObject) {
+ ENTRY_LOG();
+ if (!aObject) {
+ return E_POINTER;
+ }
+ if (aGuidService == MF_PMP_SERVER_CONTEXT) {
+ RETURN_IF_FAILED(mPmpServer.CopyTo(aRiid, aObject));
+ } else if (aGuidService == MF_PMP_SERVICE && aRiid == IID_IMFPMPHost) {
+ RETURN_IF_FAILED(mPmpHost.CopyTo(aRiid, aObject));
+ } else {
+ RETURN_IF_FAILED(MF_E_UNSUPPORTED_SERVICE);
+ }
+ return S_OK;
+}
+
+} // namespace mozilla