1/** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6#ifndef _INC_OPMAPI 7#define _INC_OPMAPI 8 9#include <dxva2api.h> 10 11#define OPM_OMAC_SIZE 16 12#define OPM_CONFIGURE_SETTING_DATA_SIZE 4056 13#define OPM_REQUESTED_INFORMATION_SIZE 4076 14#define OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE 256 15#define OPM_GET_INFORMATION_PARAMETERS_SIZE 4056 16#define OPM_HDCP_KEY_SELECTION_VECTOR_SIZE 5 17#define OPM_128_BIT_RANDOM_NUMBER_SIZE 16 18 19#define OPM_CGMSA_OFF 0x00 20#define OPM_CGMSA_COPY_FREELY 0x01 21#define OPM_CGMSA_COPY_NO_MORE 0x02 22#define OPM_CGMSA_COPY_ONE_GENERATION 0x03 23#define OPM_CGMSA_COPY_NEVER 0x04 24#define OPM_CGMSA_REDISTRIBUTION_CONTROL_REQUIRED 0x08 25 26#define OPM_PROTECTION_STANDARD_OTHER 0x80000000 27#define OPM_PROTECTION_STANDARD_NONE 0x00000000 28#define OPM_PROTECTION_STANDARD_IEC61880_525I 0x00000001 29#define OPM_PROTECTION_STANDARD_IEC61880_2_525I 0x00000002 30#define OPM_PROTECTION_STANDARD_IEC62375_625P 0x00000004 31#define OPM_PROTECTION_STANDARD_EIA608B_525 0x00000008 32#define OPM_PROTECTION_STANDARD_EN300294_625I 0x00000010 33#define OPM_PROTECTION_STANDARD_CEA805A_TYPEA_525P 0x00000020 34#define OPM_PROTECTION_STANDARD_CEA805A_TYPEA_750P 0x00000040 35#define OPM_PROTECTION_STANDARD_CEA805A_TYPEA_1125I 0x00000080 36#define OPM_PROTECTION_STANDARD_CEA805A_TYPEB_525P 0x00000100 37#define OPM_PROTECTION_STANDARD_CEA805A_TYPEB_750P 0x00000200 38#define OPM_PROTECTION_STANDARD_CEA805A_TYPEB_1125I 0x00000400 39#define OPM_PROTECTION_STANDARD_ARIBTRB15_525I 0x00000800 40#define OPM_PROTECTION_STANDARD_ARIBTRB15_525P 0x00001000 41#define OPM_PROTECTION_STANDARD_ARIBTRB15_750P 0x00002000 42#define OPM_PROTECTION_STANDARD_ARIBTRB15_1125I 0x00004000 43 44#ifdef __cplusplus 45extern "C" { 46#endif 47 48typedef enum _OPM_VIDEO_OUTPUT_SEMANTICS { 49 OPM_VOS_COPP_SEMANTICS = 0, 50 OPM_VOS_OPM_SEMANTICS = 1 51} OPM_VIDEO_OUTPUT_SEMANTICS; 52 53typedef enum _OPM_ACP_PROTECTION_LEVEL { 54 OPM_ACP_OFF = 0, 55 OPM_ACP_LEVEL_ONE = 1, 56 OPM_ACP_LEVEL_TWO = 2, 57 OPM_ACP_LEVEL_THREE = 3, 58 OPM_ACP_FORCE_ULONG = 0x7fffffff 59} OPM_ACP_PROTECTION_LEVEL; 60 61typedef enum _OPM_DPCP_PROTECTION_LEVEL { 62 OPM_DPCP_OFF = 0, 63 OPM_DPCP_ON = 1, 64 OPM_DPCP_FORCE_ULONG = 0x7fffffff 65} OPM_DPCP_PROTECTION_LEVEL; 66 67typedef enum _OPM_HDCP_PROTECTION_LEVEL { 68 OPM_HDCP_OFF = 0, 69 OPM_HDCP_ON = 1, 70 OPM_HDCP_FORCE_ULONG = 0x7fffffff 71} OPM_HDCP_PROTECTION_LEVEL; 72 73typedef enum _OPM_IMAGE_ASPECT_RATIO_EN300294 { 74 OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3 = 0, 75 OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_CENTER = 1, 76 OPM_ASPECT_RATIO_EN300294_BOX_14_BY_9_TOP = 2, 77 OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_CENTER = 3, 78 OPM_ASPECT_RATIO_EN300294_BOX_16_BY_9_TOP = 4, 79 OPM_ASPECT_RATIO_EN300294_BOX_GT_16_BY_9_CENTER = 5, 80 OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_4_BY_3_PROTECTED_CENTER = 6, 81 OPM_ASPECT_RATIO_EN300294_FULL_FORMAT_16_BY_9_ANAMORPHIC = 7, 82 OPM_ASPECT_RATIO_FORCE_ULONG = 0x7FFFFFFF 83} OPM_IMAGE_ASPECT_RATIO_EN300294; 84 85typedef struct _OPM_OMAC { 86 BYTE abOMAC[OPM_OMAC_SIZE]; 87} OPM_OMAC; 88 89typedef struct _OPM_REQUESTED_INFORMATION { 90 OPM_OMAC omac; 91 ULONG cbRequestedInformationSize; 92 BYTE abRequestedInformation[OPM_REQUESTED_INFORMATION_SIZE]; 93} OPM_REQUESTED_INFORMATION; 94 95typedef struct _OPM_ENCRYPTED_INITIALIZATION_PARAMETERS { 96 BYTE abEncryptedInitializationParameters[OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE]; 97} OPM_ENCRYPTED_INITIALIZATION_PARAMETERS; 98 99typedef struct _OPM_RANDOM_NUMBER { 100 BYTE abRandomNumber[OPM_128_BIT_RANDOM_NUMBER_SIZE]; 101} OPM_RANDOM_NUMBER; 102 103typedef struct _OPM_GET_INFO_PARAMETERS { 104 OPM_OMAC omac; 105 OPM_RANDOM_NUMBER rnRandomNumber; 106 GUID guidInformation; 107 ULONG ulSequenceNumber; 108 ULONG cbParametersSize; 109 BYTE abParameters[OPM_GET_INFORMATION_PARAMETERS_SIZE]; 110} OPM_GET_INFO_PARAMETERS; 111 112typedef struct _OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS { 113 OPM_RANDOM_NUMBER rnRandomNumber; 114 GUID guidInformation; 115 ULONG ulSequenceNumber; 116 ULONG cbParametersSize; 117 BYTE abParameters[OPM_GET_INFORMATION_PARAMETERS_SIZE]; 118} OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS; 119 120typedef struct _OPM_ACP_AND_CGMSA_SIGNALING { 121 OPM_RANDOM_NUMBER rnRandomNumber; 122 ULONG ulStatusFlags; 123 ULONG ulAvailableTVProtectionStandards; 124 ULONG ulActiveTVProtectionStandard; 125 ULONG ulReserved; 126 ULONG ulAspectRatioValidMask1; 127 ULONG ulAspectRatioData1; 128 ULONG ulAspectRatioValidMask2; 129 ULONG ulAspectRatioData2; 130 ULONG ulAspectRatioValidMask3; 131 ULONG ulAspectRatioData3; 132 ULONG ulReserved2[4]; 133 ULONG ulReserved3[4]; 134} OPM_ACP_AND_CGMSA_SIGNALING; 135 136typedef struct _OPM_ACTUAL_OUTPUT_FORMAT { 137 OPM_RANDOM_NUMBER rnRandomNumber; 138 ULONG ulStatusFlags; 139 ULONG ulDisplayWidth; 140 ULONG ulDisplayHeight; 141 DXVA2_SampleFormat dsfSampleInterleaveFormat; 142 D3DFORMAT d3dFormat; 143 ULONG ulFrequencyNumerator; 144 ULONG ulFrequencyDenominator; 145} OPM_ACTUAL_OUTPUT_FORMAT; 146 147typedef struct _OPM_CONFIGURE_PARAMETERS { 148 OPM_OMAC omac; 149 GUID guidSetting; 150 ULONG ulSequenceNumber; 151 ULONG cbParametersSize; 152 BYTE abParameters[OPM_CONFIGURE_SETTING_DATA_SIZE]; 153} OPM_CONFIGURE_PARAMETERS; 154 155typedef struct _OPM_HDCP_KEY_SELECTION_VECTOR { 156 BYTE abKeySelectionVector[OPM_HDCP_KEY_SELECTION_VECTOR_SIZE]; 157} OPM_HDCP_KEY_SELECTION_VECTOR; 158 159#define OPM_HDCP_FLAG_NONE 0x00 160#define OPM_HDCP_FLAG_REPEATER 0x01 161 162typedef struct _OPM_CONNECTED_HDCP_DEVICE_INFORMATION { 163 OPM_RANDOM_NUMBER rnRandomNumber; 164 ULONG ulStatusFlags; 165 ULONG ulHDCPFlags; 166 OPM_HDCP_KEY_SELECTION_VECTOR ksvB; 167 BYTE Reserved[11]; 168 BYTE Reserved2[16]; 169 BYTE Reserved3[16]; 170} OPM_CONNECTED_HDCP_DEVICE_INFORMATION; 171 172typedef struct _OPM_OUTPUT_ID_DATA { 173 OPM_RANDOM_NUMBER rnRandomNumber; 174 ULONG ulStatusFlags; 175 UINT64 OutputId; 176} OPM_OUTPUT_ID_DATA; 177 178typedef struct _OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS { 179 ULONG ulNewTVProtectionStandard; 180 ULONG ulAspectRatioChangeMask1; 181 ULONG ulAspectRatioData1; 182 ULONG ulAspectRatioChangeMask2; 183 ULONG ulAspectRatioData2; 184 ULONG ulAspectRatioChangeMask3; 185 ULONG ulAspectRatioData3; 186 ULONG ulReserved[4]; 187 ULONG ulReserved2[4]; 188 ULONG ulReserved3; 189} OPM_SET_ACP_AND_CGMSA_SIGNALING_PARAMETERS; 190 191typedef struct _OPM_SET_HDCP_SRM_PARAMETERS { 192 ULONG ulSRMVersion; 193} OPM_SET_HDCP_SRM_PARAMETERS; 194 195typedef struct _OPM_SET_PROTECTION_LEVEL_PARAMETERS { 196 ULONG ulProtectionType; 197 ULONG ulProtectionLevel; 198 ULONG Reserved; 199 ULONG Reserved2; 200} OPM_SET_PROTECTION_LEVEL_PARAMETERS; 201 202typedef struct _OPM_STANDARD_INFORMATION { 203 OPM_RANDOM_NUMBER rnRandomNumber; 204 ULONG ulStatusFlags; 205 ULONG ulInformation; 206 ULONG ulReserved; 207 ULONG ulReserved2; 208} OPM_STANDARD_INFORMATION; 209 210#ifdef __cplusplus 211} 212#endif 213 214#undef INTERFACE 215#define INTERFACE IOPMVideoOutput 216DECLARE_INTERFACE_(IOPMVideoOutput,IUnknown) 217{ 218 BEGIN_INTERFACE 219 220 /* IUnknown methods */ 221 STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; 222 STDMETHOD_(ULONG, AddRef)(THIS) PURE; 223 STDMETHOD_(ULONG, Release)(THIS) PURE; 224 225 /* IOPMVideoOutput methods */ 226 STDMETHOD_(HRESULT,StartInitialization)(THIS_ OPM_RANDOM_NUMBER *prnRandomNumber,BYTE **ppbCertificate,ULONG *pulCertificateLength) PURE; 227 STDMETHOD_(HRESULT,FinishInitialization)(THIS_ const OPM_ENCRYPTED_INITIALIZATION_PARAMETERS *pParameters) PURE; 228 STDMETHOD_(HRESULT,GetInformation)(THIS_ const OPM_GET_INFO_PARAMETERS *pParameters,OPM_REQUESTED_INFORMATION *pRequestedInformation) PURE; 229 STDMETHOD_(HRESULT,COPPCompatibleGetInformation)(THIS_ const OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS *pParameters,OPM_REQUESTED_INFORMATION *pRequestedInformation) PURE; 230 STDMETHOD_(HRESULT,Configure)(THIS_ const OPM_CONFIGURE_PARAMETERS *pParameters,ULONG ulAdditionalParametersSize,const BYTE *pbAdditionalParameters) PURE; 231 232 END_INTERFACE 233}; 234#ifdef COBJMACROS 235#define IOPMVideoOutput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) 236#define IOPMVideoOutput_AddRef(This) (This)->lpVtbl->AddRef(This) 237#define IOPMVideoOutput_Release(This) (This)->lpVtbl->Release(This) 238#define IOPMVideoOutput_Configure(This,pParameters,ulAdditionalParametersSize,pbAdditionalParameters) (This)->lpVtbl->Configure(This,pParameters,ulAdditionalParametersSize,pbAdditionalParameters) 239#define IOPMVideoOutput_COPPCompatibleGetInformation(This,pParameters,pRequestedInformation) (This)->lpVtbl->COPPCompatibleGetInformation(This,pParameters,pRequestedInformation) 240#define IOPMVideoOutput_FinishInitialization(This,pParameters) (This)->lpVtbl->FinishInitialization(This,pParameters) 241#define IOPMVideoOutput_GetInformation(This,pParameters,pRequestedInformation) (This)->lpVtbl->GetInformation(This,pParameters,pRequestedInformation) 242#define IOPMVideoOutput_StartInitialization(This,prnRandomNumber,ppbCertificate,pulCertificateLength) (This)->lpVtbl->StartInitialization(This,prnRandomNumber,ppbCertificate,pulCertificateLength) 243#endif /*COBJMACROS*/ 244 245#ifdef __cplusplus 246extern "C" { 247#endif 248 249HRESULT WINAPI OPMGetVideoOutputsFromHMONITOR( 250 HMONITOR hMonitor, 251 OPM_VIDEO_OUTPUT_SEMANTICS vos, 252 ULONG *pulNumVideoOutputs, 253 IOPMVideoOutput ***pppOPMVideoOutputArray 254); 255 256HRESULT WINAPI OPMGetVideoOutputsFromIDirect3DDevice9Object( 257 IDirect3DDevice9 *pDirect3DDevice9, 258 OPM_VIDEO_OUTPUT_SEMANTICS vos, 259 ULONG *pulNumVideoOutputs, 260 IOPMVideoOutput ***pppOPMVideoOutputArray 261); 262 263typedef struct _OPM_GET_CODEC_INFO_INFORMATION { 264 OPM_RANDOM_NUMBER rnRandomNumber; 265 DWORD Merit; 266} OPM_GET_CODEC_INFO_INFORMATION; 267 268typedef struct _OPM_GET_CODEC_INFO_PARAMETERS { 269 DWORD cbVerifier; 270 BYTE Verifier[OPM_GET_INFORMATION_PARAMETERS_SIZE - 4]; 271} OPM_GET_CODEC_INFO_PARAMETERS; 272 273#ifdef __cplusplus 274} 275#endif 276 277#endif /*_INC_OPMAPI*/ 278 279