diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/media/platforms/wmf/MFCDMExtra.h | |
parent | Initial commit. (diff) | |
download | firefox-esr-upstream.tar.xz firefox-esr-upstream.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | dom/media/platforms/wmf/MFCDMExtra.h | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/dom/media/platforms/wmf/MFCDMExtra.h b/dom/media/platforms/wmf/MFCDMExtra.h new file mode 100644 index 0000000000..04e625d854 --- /dev/null +++ b/dom/media/platforms/wmf/MFCDMExtra.h @@ -0,0 +1,307 @@ +/* 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/. */ + +#ifndef DOM_MEDIA_PLATFORM_WMF_MFCDMEXTRA_H +#define DOM_MEDIA_PLATFORM_WMF_MFCDMEXTRA_H + +// Currently, we build with WINVER=0x601 (Win7), which means the declarations in +// mfcontentdecryptionmodule.h will not be visible, which is only available on +// Win10 (0x0A00). Also, we don't yet have the Fall Creators Update SDK +// available on build machines, so even with updated WINVER, some of the +// interfaces we need would not be present. To work around this, until the build +// environment is updated, we include copies of the relevant classes/interfaces +// we need. +#if defined(WINVER) && WINVER >= 0x0A00 +# include <mfcontentdecryptionmodule.h> +#else +// For `IMFCdmSuspendNotify` +# include "MFMediaEngineExtra.h" + +typedef enum MF_MEDIAKEYS_REQUIREMENT { + MF_MEDIAKEYS_REQUIREMENT_REQUIRED = 1, + MF_MEDIAKEYS_REQUIREMENT_OPTIONAL = 2, + MF_MEDIAKEYS_REQUIREMENT_NOT_ALLOWED = 3 +} MF_MEDIAKEYS_REQUIREMENT; + +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY + MF_CONTENTDECRYPTIONMODULE_STOREPATH = { + {0x77d993b9, + 0xba61, + 0x4bb7, + {0x92, 0xc6, 0x18, 0xc8, 0x6a, 0x18, 0x9c, 0x06}}, + 0x02}; +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MF_EME_INITDATATYPES = { + {0x497d231b, + 0x4eb9, + 0x4df0, + {0xb4, 0x74, 0xb9, 0xaf, 0xeb, 0x0a, 0xdf, 0x38}}, + PID_FIRST_USABLE + 0x00000001}; +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MF_EME_DISTINCTIVEID = { + {0x7dc9c4a5, + 0x12be, + 0x497e, + {0x8b, 0xff, 0x9b, 0x60, 0xb2, 0xdc, 0x58, 0x45}}, + PID_FIRST_USABLE + 0x00000002}; +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MF_EME_PERSISTEDSTATE = { + {0x5d4df6ae, + 0x9af1, + 0x4e3d, + {0x95, 0x5b, 0x0e, 0x4b, 0xd2, 0x2f, 0xed, 0xf0}}, + PID_FIRST_USABLE + 0x00000003}; +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MF_EME_AUDIOCAPABILITIES = { + {0x980fbb84, + 0x297d, + 0x4ea7, + {0x89, 0x5f, 0xbc, 0xf2, 0x8a, 0x46, 0x28, 0x81}}, + PID_FIRST_USABLE + 0x00000004}; +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MF_EME_VIDEOCAPABILITIES = { + {0xb172f83d, + 0x30dd, + 0x4c10, + {0x80, 0x06, 0xed, 0x53, 0xda, 0x4d, 0x3b, 0xdb}}, + PID_FIRST_USABLE + 0x00000005}; +EXTERN_C const DECLSPEC_SELECTANY PROPERTYKEY MF_EME_ROBUSTNESS = { + {0x9d3d2b9e, + 0x7023, + 0x4944, + {0xa8, 0xf5, 0xec, 0xca, 0x52, 0xa4, 0x69, 0x90}}, + PID_FIRST_USABLE + 0x00000001}; + +typedef enum MF_MEDIAKEYSESSION_TYPE { + MF_MEDIAKEYSESSION_TYPE_TEMPORARY = 0, + MF_MEDIAKEYSESSION_TYPE_PERSISTENT_LICENSE = + (MF_MEDIAKEYSESSION_TYPE_TEMPORARY + 1), + MF_MEDIAKEYSESSION_TYPE_PERSISTENT_RELEASE_MESSAGE = + (MF_MEDIAKEYSESSION_TYPE_PERSISTENT_LICENSE + 1), + MF_MEDIAKEYSESSION_TYPE_PERSISTENT_USAGE_RECORD = + (MF_MEDIAKEYSESSION_TYPE_PERSISTENT_RELEASE_MESSAGE + 1) +} MF_MEDIAKEYSESSION_TYPE; + +typedef enum MF_MEDIAKEYSESSION_MESSAGETYPE { + MF_MEDIAKEYSESSION_MESSAGETYPE_LICENSE_REQUEST = 0, + MF_MEDIAKEYSESSION_MESSAGETYPE_LICENSE_RENEWAL = 1, + MF_MEDIAKEYSESSION_MESSAGETYPE_LICENSE_RELEASE = 2, + MF_MEDIAKEYSESSION_MESSAGETYPE_INDIVIDUALIZATION_REQUEST = 3 +} MF_MEDIAKEYSESSION_MESSAGETYPE; + +typedef enum MF_MEDIAKEY_STATUS { + MF_MEDIAKEY_STATUS_USABLE = 0, + MF_MEDIAKEY_STATUS_EXPIRED = (MF_MEDIAKEY_STATUS_USABLE + 1), + MF_MEDIAKEY_STATUS_OUTPUT_DOWNSCALED = (MF_MEDIAKEY_STATUS_EXPIRED + 1), + MF_MEDIAKEY_STATUS_OUTPUT_NOT_ALLOWED = + (MF_MEDIAKEY_STATUS_OUTPUT_DOWNSCALED + 1), + MF_MEDIAKEY_STATUS_STATUS_PENDING = + (MF_MEDIAKEY_STATUS_OUTPUT_NOT_ALLOWED + 1), + MF_MEDIAKEY_STATUS_INTERNAL_ERROR = (MF_MEDIAKEY_STATUS_STATUS_PENDING + 1), + MF_MEDIAKEY_STATUS_RELEASED = (MF_MEDIAKEY_STATUS_INTERNAL_ERROR + 1), + MF_MEDIAKEY_STATUS_OUTPUT_RESTRICTED = (MF_MEDIAKEY_STATUS_RELEASED + 1) +} MF_MEDIAKEY_STATUS; + +typedef struct MFMediaKeyStatus { + BYTE* pbKeyId; + UINT cbKeyId; + MF_MEDIAKEY_STATUS eMediaKeyStatus; +} MFMediaKeyStatus; + +EXTERN_GUID(MF_CONTENTDECRYPTIONMODULE_SERVICE, 0x15320c45, 0xff80, 0x484a, + 0x9d, 0xcb, 0xd, 0xf8, 0x94, 0xe6, 0x9a, 0x1); +EXTERN_GUID(GUID_ObjectStream, 0x3e73735c, 0xe6c0, 0x481d, 0x82, 0x60, 0xee, + 0x5d, 0xb1, 0x34, 0x3b, 0x5f); +EXTERN_GUID(GUID_ClassName, 0x77631a31, 0xe5e7, 0x4785, 0xbf, 0x17, 0x20, 0xf5, + 0x7b, 0x22, 0x48, 0x02); +EXTERN_GUID(CLSID_EMEStoreActivate, 0x2df7b51e, 0x797b, 0x4d06, 0xbe, 0x71, + 0xd1, 0x4a, 0x52, 0xcf, 0x84, 0x21); + +# ifndef __IMFContentDecryptionModuleSessionCallbacks_INTERFACE_DEFINED__ +# define __IMFContentDecryptionModuleSessionCallbacks_INTERFACE_DEFINED__ + +/* interface IMFContentDecryptionModuleSessionCallbacks */ +/* [unique][uuid][object] */ + +EXTERN_C const IID IID_IMFContentDecryptionModuleSessionCallbacks; + +MIDL_INTERFACE("3f96ee40-ad81-4096-8470-59a4b770f89a") +IMFContentDecryptionModuleSessionCallbacks : public IUnknown { + public: + virtual HRESULT STDMETHODCALLTYPE KeyMessage( + /* [in] */ MF_MEDIAKEYSESSION_MESSAGETYPE messageType, + /* [size_is][in] */ + __RPC__in_ecount_full(messageSize) const BYTE* message, + /* [in] */ DWORD messageSize, + /* [optional][in] */ __RPC__in LPCWSTR destinationURL) = 0; + + virtual HRESULT STDMETHODCALLTYPE KeyStatusChanged(void) = 0; +}; + +# endif /* __IMFContentDecryptionModuleSessionCallbacks_INTERFACE_DEFINED__ \ + */ + +# ifndef __IMFContentDecryptionModuleSession_INTERFACE_DEFINED__ +# define __IMFContentDecryptionModuleSession_INTERFACE_DEFINED__ + +/* interface IMFContentDecryptionModuleSession */ +/* [unique][uuid][object] */ + +EXTERN_C const IID IID_IMFContentDecryptionModuleSession; + +MIDL_INTERFACE("4e233efd-1dd2-49e8-b577-d63eee4c0d33") +IMFContentDecryptionModuleSession : public IUnknown { + public: + virtual HRESULT STDMETHODCALLTYPE GetSessionId( + /* [out] */ __RPC__deref_out_opt LPWSTR * sessionId) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetExpiration( + /* [out] */ __RPC__out double* expiration) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetKeyStatuses( + /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt( + *numKeyStatuses) MFMediaKeyStatus * + *keyStatuses, + /* [out] */ __RPC__out UINT * numKeyStatuses) = 0; + + virtual HRESULT STDMETHODCALLTYPE Load( + /* [in] */ __RPC__in LPCWSTR sessionId, + /* [out] */ __RPC__out BOOL * loaded) = 0; + + virtual HRESULT STDMETHODCALLTYPE GenerateRequest( + /* [in] */ __RPC__in LPCWSTR initDataType, + /* [size_is][in] */ + __RPC__in_ecount_full(initDataSize) const BYTE* initData, + /* [in] */ DWORD initDataSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE Update( + /* [size_is][in] */ __RPC__in_ecount_full(responseSize) + const BYTE* response, + /* [in] */ DWORD responseSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE Close(void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Remove(void) = 0; +}; + +# endif /* __IMFContentDecryptionModuleSession_INTERFACE_DEFINED__ */ + +# ifndef __IMFPMPHostApp_INTERFACE_DEFINED__ +# define __IMFPMPHostApp_INTERFACE_DEFINED__ + +/* interface IMFPMPHostApp */ +/* [uuid][object] */ + +EXTERN_C const IID IID_IMFPMPHostApp; + +MIDL_INTERFACE("84d2054a-3aa1-4728-a3b0-440a418cf49c") +IMFPMPHostApp : public IUnknown { + public: + virtual HRESULT STDMETHODCALLTYPE LockProcess(void) = 0; + + virtual HRESULT STDMETHODCALLTYPE UnlockProcess(void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ActivateClassById( + /* [in] */ __RPC__in LPCWSTR id, + /* [unique][in] */ __RPC__in_opt IStream * pStream, + /* [in] */ __RPC__in REFIID riid, + /* [iid_is][out] */ __RPC__deref_out_opt void** ppv) = 0; +}; + +# endif /* __IMFPMPHostApp_INTERFACE_DEFINED__ */ + +# ifndef __IMFContentDecryptionModule_INTERFACE_DEFINED__ +# define __IMFContentDecryptionModule_INTERFACE_DEFINED__ + +/* interface IMFContentDecryptionModule */ +/* [unique][uuid][object] */ + +EXTERN_C const IID IID_IMFContentDecryptionModule; + +MIDL_INTERFACE("87be986c-10be-4943-bf48-4b54ce1983a2") +IMFContentDecryptionModule : public IUnknown { + public: + virtual HRESULT STDMETHODCALLTYPE SetContentEnabler( + /* [in] */ __RPC__in_opt IMFContentEnabler * contentEnabler, + /* [in] */ __RPC__in_opt IMFAsyncResult * result) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSuspendNotify( + /* [out] */ __RPC__deref_out_opt IMFCdmSuspendNotify * *notify) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPMPHostApp( + /* [in] */ __RPC__in_opt IMFPMPHostApp * pmpHostApp) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateSession( + /* [in] */ MF_MEDIAKEYSESSION_TYPE sessionType, + /* [in] */ __RPC__in_opt IMFContentDecryptionModuleSessionCallbacks * + callbacks, + /* [out] */ __RPC__deref_out_opt IMFContentDecryptionModuleSession * + *session) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetServerCertificate( + /* [size_is][in] */ __RPC__in_ecount_full(certificateSize) + const BYTE* certificate, + /* [in] */ DWORD certificateSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateTrustedInput( + /* [size_is][in] */ __RPC__in_ecount_full(contentInitDataSize) + const BYTE* contentInitData, + /* [in] */ DWORD contentInitDataSize, + /* [out] */ __RPC__deref_out_opt IMFTrustedInput** trustedInput) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProtectionSystemIds( + /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*count) + GUID * + *systemIds, + /* [out] */ __RPC__out DWORD * count) = 0; +}; + +# endif /* __IMFContentDecryptionModule_INTERFACE_DEFINED__ */ + +# ifndef __IMFContentDecryptionModuleAccess_INTERFACE_DEFINED__ +# define __IMFContentDecryptionModuleAccess_INTERFACE_DEFINED__ + +/* interface IMFContentDecryptionModuleAccess */ +/* [unique][uuid][object] */ + +EXTERN_C const IID IID_IMFContentDecryptionModuleAccess; + +MIDL_INTERFACE("a853d1f4-e2a0-4303-9edc-f1a68ee43136") +IMFContentDecryptionModuleAccess : public IUnknown { + public: + virtual HRESULT STDMETHODCALLTYPE CreateContentDecryptionModule( + /* [in] */ __RPC__in_opt IPropertyStore * + contentDecryptionModuleProperties, + /* [out] */ __RPC__deref_out_opt IMFContentDecryptionModule * + *contentDecryptionModule) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetConfiguration( + /* [out] */ __RPC__deref_out_opt IPropertyStore * *configuration) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetKeySystem( + /* [out] */ __RPC__deref_out_opt LPWSTR * keySystem) = 0; +}; +# endif /* __IMFContentDecryptionModuleAccess_INTERFACE_DEFINED__ */ + +# ifndef __IMFContentDecryptionModuleFactory_INTERFACE_DEFINED__ +# define __IMFContentDecryptionModuleFactory_INTERFACE_DEFINED__ + +/* interface IMFContentDecryptionModuleFactory */ +/* [local][uuid][object] */ + +EXTERN_C const IID IID_IMFContentDecryptionModuleFactory; +MIDL_INTERFACE("7d5abf16-4cbb-4e08-b977-9ba59049943e") +IMFContentDecryptionModuleFactory : public IUnknown { + public: + virtual BOOL STDMETHODCALLTYPE IsTypeSupported( + /* [in] */ LPCWSTR keySystem, + /* [optional][in] */ LPCWSTR contentType) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateContentDecryptionModuleAccess( + /* [in] */ LPCWSTR keySystem, + /* [size_is][size_is][in] */ IPropertyStore * *configurations, + /* [in] */ DWORD numConfigurations, + /* [out] */ IMFContentDecryptionModuleAccess * + *contentDecryptionModuleAccess) = 0; +}; +# endif /* __IMFContentDecryptionModuleFactory_INTERFACE_DEFINED__ */ + +#endif // defined(WINVER) && WINVER >= 0x0A00 + +#endif // DOM_MEDIA_PLATFORM_WMF_MFCDMEXTRA_H |