123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- /**
- * 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*/
|