| /** |
| * This file has no copyright assigned and is placed in the Public Domain. |
| * This file is part of the mingw-w64 runtime package. |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| */ |
| #ifndef _INC_OPMAPI |
| #define _INC_OPMAPI |
| |
| #include <dxva2api.h> |
| |
| #define OPM_OMAC_SIZE 16 |
| #define OPM_CONFIGURE_SETTING_DATA_SIZE 4056 |
| #define OPM_REQUESTED_INFORMATION_SIZE 4076 |
| #define OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE 256 |
| #define OPM_GET_INFORMATION_PARAMETERS_SIZE 4056 |
| #define OPM_HDCP_KEY_SELECTION_VECTOR_SIZE 5 |
| #define OPM_128_BIT_RANDOM_NUMBER_SIZE 16 |
| |
| #define OPM_CGMSA_OFF 0x00 |
| #define OPM_CGMSA_COPY_FREELY 0x01 |
| #define OPM_CGMSA_COPY_NO_MORE 0x02 |
| #define OPM_CGMSA_COPY_ONE_GENERATION 0x03 |
| #define OPM_CGMSA_COPY_NEVER 0x04 |
| #define OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED 0x08 |
| |
| #define OPM_PROTECTION_STANDARD_OTHER 0x80000000 |
| #define OPM_PROTECTION_STANDARD_NONE 0x00000000 |
| #define OPM_PROTECTION_STANDARD_IEC61880_525I 0x00000001 |
| #define OPM_PROTECTION_STANDARD_IEC61880_2_525I 0x00000002 |
| #define OPM_PROTECTION_STANDARD_IEC62375_625P 0x00000004 |
| #define OPM_PROTECTION_STANDARD_EIA608B_525 0x00000008 |
| #define OPM_PROTECTION_STANDARD_EN300294_625I 0x00000010 |
| #define OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P 0x00000020 |
| #define OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P 0x00000040 |
| #define OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I 0x00000080 |
| #define OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P 0x00000100 |
| #define OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P 0x00000200 |
| #define OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I 0x00000400 |
| #define OPM_PROTECTION_STANDARD_ARIBTRB15_525I 0x00000800 |
| #define OPM_PROTECTION_STANDARD_ARIBTRB15_525P 0x00001000 |
| #define OPM_PROTECTION_STANDARD_ARIBTRB15_750P 0x00002000 |
| #define OPM_PROTECTION_STANDARD_ARIBTRB15_1125I 0x00004000 |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef enum _OPM_VIDEO_OUTPUT_SEMANTICS { |
| OPM_VOS_COPP_SEMANTICS = 0, |
| OPM_VOS_OPM_SEMANTICS = 1 |
| } OPM_VIDEO_OUTPUT_SEMANTICS; |
| |
| typedef enum _OPM_ACP_PROTECTION_LEVEL { |
| OPM_ACP_OFF = 0, |
| OPM_ACP_LEVEL_ONE = 1, |
| OPM_ACP_LEVEL_TWO = 2, |
| OPM_ACP_LEVEL_THREE = 3, |
| OPM_ACP_FORCE_ULONG = 0x7fffffff |
| } OPM_ACP_PROTECTION_LEVEL; |
| |
| typedef enum _OPM_DPCP_PROTECTION_LEVEL { |
| OPM_DPCP_OFF = 0, |
| OPM_DPCP_ON = 1, |
| OPM_DPCP_FORCE_ULONG = 0x7fffffff |
| } OPM_DPCP_PROTECTION_LEVEL; |
| |
| typedef enum _OPM_HDCP_PROTECTION_LEVEL { |
| OPM_HDCP_OFF = 0, |
| OPM_HDCP_ON = 1, |
| OPM_HDCP_FORCE_ULONG = 0x7fffffff |
| } OPM_HDCP_PROTECTION_LEVEL; |
| |
| typedef enum _OPM_IMAGE_ASPECT_RATIO_EN300294 { |
| OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3 = 0, |
| OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER = 1, |
| OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP = 2, |
| OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER = 3, |
| OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP = 4, |
| OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER = 5, |
| OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER = 6, |
| OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC = 7, |
| OPM_ASPECT_RATIO_FORCE_ULONG = 0x7FFFFFFF |
| } OPM_IMAGE_ASPECT_RATIO_EN300294; |
| |
| typedef struct _OPM_OMAC { |
| BYTE abOMAC[OPM_OMAC_SIZE]; |
| } OPM_OMAC; |
| |
| typedef struct _OPM_REQUESTED_INFORMATION { |
| OPM_OMAC omac; |
| ULONG cbRequestedInformationSize; |
| BYTE abRequestedInformation[OPM_REQUESTED_INFORMATION_SIZE]; |
| } OPM_REQUESTED_INFORMATION; |
| |
| typedef struct _OPM_ENCRYPTED_INITIALIZATION_PARAMETERS { |
| BYTE abEncryptedInitializationParameters[OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE]; |
| } OPM_ENCRYPTED_INITIALIZATION_PARAMETERS; |
| |
| typedef struct _OPM_RANDOM_NUMBER { |
| BYTE abRandomNumber[OPM_128_BIT_RANDOM_NUMBER_SIZE]; |
| } OPM_RANDOM_NUMBER; |
| |
| typedef struct _OPM_GET_INFO_PARAMETERS { |
| OPM_OMAC omac; |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| GUID guidInformation; |
| ULONG ulSequenceNumber; |
| ULONG cbParametersSize; |
| BYTE abParameters[OPM_GET_INFORMATION_PARAMETERS_SIZE]; |
| } OPM_GET_INFO_PARAMETERS; |
| |
| typedef struct _OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| GUID guidInformation; |
| ULONG ulSequenceNumber; |
| ULONG cbParametersSize; |
| BYTE abParameters[OPM_GET_INFORMATION_PARAMETERS_SIZE]; |
| } OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS; |
| |
| typedef struct _OPM_ACP_AND_CGMSA_SIGNALING { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| ULONG ulStatusFlags; |
| ULONG ulAvailableTVProtectionStandards; |
| ULONG ulActiveTVProtectionStandard; |
| ULONG ulReserved; |
| ULONG ulAspectRatioValidMask1; |
| ULONG ulAspectRatioData1; |
| ULONG ulAspectRatioValidMask2; |
| ULONG ulAspectRatioData2; |
| ULONG ulAspectRatioValidMask3; |
| ULONG ulAspectRatioData3; |
| ULONG ulReserved2[4]; |
| ULONG ulReserved3[4]; |
| } OPM_ACP_AND_CGMSA_SIGNALING; |
| |
| typedef struct _OPM_ACTUAL_OUTPUT_FORMAT { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| ULONG ulStatusFlags; |
| ULONG ulDisplayWidth; |
| ULONG ulDisplayHeight; |
| DXVA2_SampleFormat dsfSampleInterleaveFormat; |
| D3DFORMAT d3dFormat; |
| ULONG ulFrequencyNumerator; |
| ULONG ulFrequencyDenominator; |
| } OPM_ACTUAL_OUTPUT_FORMAT; |
| |
| typedef struct _OPM_CONFIGURE_PARAMETERS { |
| OPM_OMAC omac; |
| GUID guidSetting; |
| ULONG ulSequenceNumber; |
| ULONG cbParametersSize; |
| BYTE abParameters[OPM_CONFIGURE_SETTING_DATA_SIZE]; |
| } OPM_CONFIGURE_PARAMETERS; |
| |
| typedef struct _OPM_HDCP_KEY_SELECTION_VECTOR { |
| BYTE abKeySelectionVector[OPM_HDCP_KEY_SELECTION_VECTOR_SIZE]; |
| } OPM_HDCP_KEY_SELECTION_VECTOR; |
| |
| #define OPM_HDCP_FLAG_NONE 0x00 |
| #define OPM_HDCP_FLAG_REPEATER 0x01 |
| |
| typedef struct _OPM_CONNECTED_HDCP_DEVICE_INFORMATION { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| ULONG ulStatusFlags; |
| ULONG ulHDCPFlags; |
| OPM_HDCP_KEY_SELECTION_VECTOR ksvB; |
| BYTE Reserved[11]; |
| BYTE Reserved2[16]; |
| BYTE Reserved3[16]; |
| } OPM_CONNECTED_HDCP_DEVICE_INFORMATION; |
| |
| typedef struct _OPM_OUTPUT_ID_DATA { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| ULONG ulStatusFlags; |
| UINT64 OutputId; |
| } OPM_OUTPUT_ID_DATA; |
| |
| typedef struct _OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS { |
| ULONG ulNewTVProtectionStandard; |
| ULONG ulAspectRatioChangeMask1; |
| ULONG ulAspectRatioData1; |
| ULONG ulAspectRatioChangeMask2; |
| ULONG ulAspectRatioData2; |
| ULONG ulAspectRatioChangeMask3; |
| ULONG ulAspectRatioData3; |
| ULONG ulReserved[4]; |
| ULONG ulReserved2[4]; |
| ULONG ulReserved3; |
| } OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS; |
| |
| typedef struct _OPM_SET_HDCP_SRM_PARAMETERS { |
| ULONG ulSRMVersion; |
| } OPM_SET_HDCP_SRM_PARAMETERS; |
| |
| typedef struct _OPM_SET_PROTECTION_LEVEL_PARAMETERS { |
| ULONG ulProtectionType; |
| ULONG ulProtectionLevel; |
| ULONG Reserved; |
| ULONG Reserved2; |
| } OPM_SET_PROTECTION_LEVEL_PARAMETERS; |
| |
| typedef struct _OPM_STANDARD_INFORMATION { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| ULONG ulStatusFlags; |
| ULONG ulInformation; |
| ULONG ulReserved; |
| ULONG ulReserved2; |
| } OPM_STANDARD_INFORMATION; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #undef INTERFACE |
| #define INTERFACE IOPMVideoOutput |
| DECLARE_INTERFACE_(IOPMVideoOutput,IUnknown) |
| { |
| BEGIN_INTERFACE |
| |
| /* IUnknown methods */ |
| STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; |
| STDMETHOD_(ULONG, AddRef)(THIS) PURE; |
| STDMETHOD_(ULONG, Release)(THIS) PURE; |
| |
| /* IOPMVideoOutput methods */ |
| STDMETHOD_(HRESULT,StartInitialization)(THIS_ OPM_RANDOM_NUMBER *prnRandomNumber,BYTE **ppbCertificate,ULONG *pulCertificateLength) PURE; |
| STDMETHOD_(HRESULT,FinishInitialization)(THIS_ const OPM_ENCRYPTED_INITIALIZATION_PARAMETERS *pParameters) PURE; |
| STDMETHOD_(HRESULT,GetInformation)(THIS_ const OPM_GET_INFO_PARAMETERS *pParameters,OPM_REQUESTED_INFORMATION *pRequestedInformation) PURE; |
| STDMETHOD_(HRESULT,COPPCompatibleGetInformation)(THIS_ const OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS *pParameters,OPM_REQUESTED_INFORMATION *pRequestedInformation) PURE; |
| STDMETHOD_(HRESULT,Configure)(THIS_ const OPM_CONFIGURE_PARAMETERS *pParameters,ULONG ulAdditionalParametersSize,const BYTE *pbAdditionalParameters) PURE; |
| |
| END_INTERFACE |
| }; |
| #ifdef COBJMACROS |
| #define IOPMVideoOutput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) |
| #define IOPMVideoOutput_AddRef(This) (This)->lpVtbl->AddRef(This) |
| #define IOPMVideoOutput_Release(This) (This)->lpVtbl->Release(This) |
| #define IOPMVideoOutput_Configure(This,pParameters,ulAdditionalParametersSize,pbAdditionalParameters) (This)->lpVtbl->Configure(This,pParameters,ulAdditionalParametersSize,pbAdditionalParameters) |
| #define IOPMVideoOutput_COPPCompatibleGetInformation(This,pParameters,pRequestedInformation) (This)->lpVtbl->COPPCompatibleGetInformation(This,pParameters,pRequestedInformation) |
| #define IOPMVideoOutput_FinishInitialization(This,pParameters) (This)->lpVtbl->FinishInitialization(This,pParameters) |
| #define IOPMVideoOutput_GetInformation(This,pParameters,pRequestedInformation) (This)->lpVtbl->GetInformation(This,pParameters,pRequestedInformation) |
| #define IOPMVideoOutput_StartInitialization(This,prnRandomNumber,ppbCertificate,pulCertificateLength) (This)->lpVtbl->StartInitialization(This,prnRandomNumber,ppbCertificate,pulCertificateLength) |
| #endif /*COBJMACROS*/ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| HRESULT WINAPI OPMGetVideoOutputsFromHMONITOR( |
| HMONITOR hMonitor, |
| OPM_VIDEO_OUTPUT_SEMANTICS vos, |
| ULONG *pulNumVideoOutputs, |
| IOPMVideoOutput ***pppOPMVideoOutputArray |
| ); |
| |
| HRESULT WINAPI OPMGetVideoOutputsFromIDirect3DDevice9Object( |
| IDirect3DDevice9 *pDirect3DDevice9, |
| OPM_VIDEO_OUTPUT_SEMANTICS vos, |
| ULONG *pulNumVideoOutputs, |
| IOPMVideoOutput ***pppOPMVideoOutputArray |
| ); |
| |
| typedef struct _OPM_GET_CODEC_INFO_INFORMATION { |
| OPM_RANDOM_NUMBER rnRandomNumber; |
| DWORD Merit; |
| } OPM_GET_CODEC_INFO_INFORMATION; |
| |
| typedef struct _OPM_GET_CODEC_INFO_PARAMETERS { |
| DWORD cbVerifier; |
| BYTE Verifier[OPM_GET_INFORMATION_PARAMETERS_SIZE - 4]; |
| } OPM_GET_CODEC_INFO_PARAMETERS; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /*_INC_OPMAPI*/ |
| |