zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

opmapi.h (10569B) - Raw


      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
     45 extern "C" {
     46 #endif
     47 
     48 typedef enum _OPM_VIDEO_OUTPUT_SEMANTICS {
     49   OPM_VOS_COPP_SEMANTICS   = 0,
     50   OPM_VOS_OPM_SEMANTICS    = 1
     51 } OPM_VIDEO_OUTPUT_SEMANTICS;
     52 
     53 typedef 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 
     61 typedef 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 
     67 typedef 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 
     73 typedef 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 
     85 typedef struct _OPM_OMAC {
     86   BYTE abOMAC[OPM_OMAC_SIZE];
     87 } OPM_OMAC;
     88 
     89 typedef struct _OPM_REQUESTED_INFORMATION {
     90   OPM_OMAC omac;
     91   ULONG    cbRequestedInformationSize;
     92   BYTE     abRequestedInformation[OPM_REQUESTED_INFORMATION_SIZE];
     93 } OPM_REQUESTED_INFORMATION;
     94 
     95 typedef struct _OPM_ENCRYPTED_INITIALIZATION_PARAMETERS {
     96   BYTE abEncryptedInitializationParameters[OPM_ENCRYPTED_INITIALIZATION_PARAMETERS_SIZE];
     97 } OPM_ENCRYPTED_INITIALIZATION_PARAMETERS;
     98 
     99 typedef struct _OPM_RANDOM_NUMBER {
    100   BYTE abRandomNumber[OPM_128_BIT_RANDOM_NUMBER_SIZE];
    101 } OPM_RANDOM_NUMBER;
    102 
    103 typedef 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 
    112 typedef 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 
    120 typedef 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 
    136 typedef 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 
    147 typedef 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 
    155 typedef 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 
    162 typedef 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 
    172 typedef struct _OPM_OUTPUT_ID_DATA {
    173   OPM_RANDOM_NUMBER rnRandomNumber;
    174   ULONG             ulStatusFlags;
    175   UINT64            OutputId;
    176 } OPM_OUTPUT_ID_DATA;
    177 
    178 typedef 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 
    191 typedef struct _OPM_SET_HDCP_SRM_PARAMETERS {
    192   ULONG ulSRMVersion;
    193 } OPM_SET_HDCP_SRM_PARAMETERS;
    194 
    195 typedef 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 
    202 typedef 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
    216 DECLARE_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
    246 extern "C" {
    247 #endif
    248 
    249 HRESULT WINAPI OPMGetVideoOutputsFromHMONITOR(
    250   HMONITOR hMonitor,
    251   OPM_VIDEO_OUTPUT_SEMANTICS vos,
    252   ULONG *pulNumVideoOutputs,
    253   IOPMVideoOutput ***pppOPMVideoOutputArray
    254 );
    255 
    256 HRESULT WINAPI OPMGetVideoOutputsFromIDirect3DDevice9Object(
    257   IDirect3DDevice9 *pDirect3DDevice9,
    258   OPM_VIDEO_OUTPUT_SEMANTICS vos,
    259   ULONG *pulNumVideoOutputs,
    260   IOPMVideoOutput ***pppOPMVideoOutputArray
    261 );
    262 
    263 typedef struct _OPM_GET_CODEC_INFO_INFORMATION {
    264   OPM_RANDOM_NUMBER rnRandomNumber;
    265   DWORD             Merit;
    266 } OPM_GET_CODEC_INFO_INFORMATION;
    267 
    268 typedef 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