Re: [PATCH] d3d11.idl: add the interfaces necessary to use the D3D11 video decoder
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This patch still shows plenty of signs that it was copypasted from Microsoft's headers. Am 2015-05-11 um 11:00 schrieb Steve Lhomme:
From: Steve Lhomme <slhomme(a)matroska.org>
--- include/d3d11.idl | 878 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 870 insertions(+), 8 deletions(-)
diff --git a/include/d3d11.idl b/include/d3d11.idl index 3726d32..70afbd5 100644 --- a/include/d3d11.idl +++ b/include/d3d11.idl @@ -2125,16 +2125,878 @@ interface ID3D11Device : IUnknown UINT GetExceptionMode(); }
+cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_MOCOMP_NOFGT, 0x1b81be64, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_MOCOMP_FGT, 0x1b81be65, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_IDCT_NOFGT, 0x1b81be66, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_IDCT_FGT, 0x1b81be67, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_NOFGT, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_FGT, 0x1b81be69, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_WITHFMOASO_NOFGT, 0xd5f04ff9, 0x3418, 0x45d8, 0x95, 0x61, 0x32, 0xa7, 0x6a, 0xae, 0x2d, 0xdd);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_STEREO_PROGRESSIVE_NOFGT, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_STEREO_NOFGT, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_MULTIVIEW_NOFGT, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV8_POSTPROC, 0x1b81be80, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV8_MOCOMP, 0x1b81be81, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV9_POSTPROC, 0x1b81be90, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV9_MOCOMP, 0x1b81be91, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV9_IDCT, 0x1b81be94, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_POSTPROC, 0x1b81beA0, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_MOCOMP, 0x1b81beA1, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_IDCT, 0x1b81beA2, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_VLD, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG4PT2_VLD_SIMPLE, 0xefd64d74, 0xc9e8, 0x41d7, 0xa5, 0xe9, 0xe9, 0xb0, 0xe3, 0x9f, 0xa3, 0x19);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_GMC, 0xab998b5b, 0x4258, 0x44a9, 0x9f, 0xeb, 0x94, 0xe5, 0x97, 0xa6, 0xba, 0xae);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_HEVC_VLD_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_HEVC_VLD_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_MOCOMP, 0xe6a9f44b, 0x61b0, 0x4563, 0x9e, 0xa4, 0x63, 0xd2, 0xa3, 0xc6, 0xfe, 0x66);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_IDCT, 0xbf22ad00, 0x03ea, 0x4690, 0x80, 0x77, 0x47, 0x33, 0x46, 0x20, 0x9b, 0x7e);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_VLD, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG1_VLD, 0x6f3ec719, 0x3735, 0x42cc, 0x80, 0x63, 0x65, 0xcc, 0x3c, 0xb3, 0x66, 0x16);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2and1_VLD, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);") + +typedef struct D3D11_VIDEO_DECODER_DESC +{ + GUID Guid; + UINT SampleWidth; + UINT SampleHeight; + DXGI_FORMAT OutputFormat; +} D3D11_VIDEO_DECODER_DESC; + +typedef struct D3D11_VIDEO_DECODER_CONFIG +{ + GUID guidConfigBitstreamEncryption; + GUID guidConfigMBcontrolEncryption; + GUID guidConfigResidDiffEncryption; + UINT ConfigBitstreamRaw; + UINT ConfigMBcontrolRasterOrder; + UINT ConfigResidDiffHost; + UINT ConfigSpatialResid8; + UINT ConfigResid8Subtraction; + UINT ConfigSpatialHost8or9Clipping; + UINT ConfigSpatialResidInterleaved; + UINT ConfigIntraResidUnsigned; + UINT ConfigResidDiffAccelerator; + UINT ConfigHostInverseScan; + UINT ConfigSpecificIDCT; + UINT Config4GroupedCoefs; + USHORT ConfigMinRenderTargetBuffCount; + USHORT ConfigDecoderSpecific; +} D3D11_VIDEO_DECODER_CONFIG; + +typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE +{ + D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0, + D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1, + D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2, + D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3, + D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4, + D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5, + D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6, + D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7, + D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8 +} D3D11_VIDEO_DECODER_BUFFER_TYPE; + +typedef struct D3D11_ENCRYPTED_BLOCK_INFO +{ + UINT NumEncryptedBytesAtBeginning; + UINT NumBytesInSkipPattern; + UINT NumBytesInEncryptPattern; +} D3D11_ENCRYPTED_BLOCK_INFO; + +typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC +{ + D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType; + UINT BufferIndex; + UINT DataOffset; + UINT DataSize; + UINT FirstMBaddress; + UINT NumMBsInBuffer; + UINT Width; + UINT Height; + UINT Stride; + UINT ReservedBits; + void *pIV; + UINT IVSize; + BOOL PartialEncryption; + D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo; +} D3D11_VIDEO_DECODER_BUFFER_DESC; + +typedef struct D3D11_VIDEO_DECODER_EXTENSION +{ + UINT Function; + void *pPrivateInputData; + UINT PrivateInputDataSize; + void *pPrivateOutputData; + UINT PrivateOutputDataSize; + UINT ResourceCount; + ID3D11Resource **ppResourceList; +} D3D11_VIDEO_DECODER_EXTENSION; + +typedef enum D3D11_VIDEO_FRAME_FORMAT +{ + D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0, + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1, + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2 +} D3D11_VIDEO_FRAME_FORMAT; + +typedef enum D3D11_VIDEO_USAGE +{ + D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0, + D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1, + D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2 +} D3D11_VIDEO_USAGE; + +typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC +{ + D3D11_VIDEO_FRAME_FORMAT InputFrameFormat; + DXGI_RATIONAL InputFrameRate; + UINT InputWidth; + UINT InputHeight; + DXGI_RATIONAL OutputFrameRate; + UINT OutputWidth; + UINT OutputHeight; + D3D11_VIDEO_USAGE Usage; +} D3D11_VIDEO_PROCESSOR_CONTENT_DESC; + +typedef struct D3D11_VIDEO_PROCESSOR_CAPS +{ + UINT DeviceCaps; + UINT FeatureCaps; + UINT FilterCaps; + UINT InputFormatCaps; + UINT AutoStreamCaps; + UINT StereoCaps; + UINT RateConversionCapsCount; + UINT MaxInputStreams; + UINT MaxStreamStates; +} D3D11_VIDEO_PROCESSOR_CAPS; + +typedef struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS +{ + UINT PastFrames; + UINT FutureFrames; + UINT ProcessorCaps; + UINT ITelecineCaps; + UINT CustomRateCount; +} D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS; + +typedef struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE +{ + DXGI_RATIONAL CustomRate; + UINT OutputFrames; + BOOL InputInterlaced; + UINT InputFramesOrFields; +} D3D11_VIDEO_PROCESSOR_CUSTOM_RATE; + +typedef enum D3D11_VIDEO_PROCESSOR_FILTER +{ + D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0, + D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1, + D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2, + D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3, + D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4, + D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5, + D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6, + D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7 +} D3D11_VIDEO_PROCESSOR_FILTER; + +typedef struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS +{ + UINT Caps; + UINT KeyExchangeTypeCount; + UINT BlockAlignmentSize; + ULONGLONG ProtectedMemorySize; +} D3D11_VIDEO_CONTENT_PROTECTION_CAPS; + +typedef struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE +{ + int Minimum; + int Maximum; + int Default; + float Multiplier; +} D3D11_VIDEO_PROCESSOR_FILTER_RANGE; + +typedef struct D3D11_VIDEO_COLOR_RGBA +{ + float R; + float G; + float B; + float A; +} D3D11_VIDEO_COLOR_RGBA; + +typedef struct D3D11_VIDEO_COLOR_YCbCrA +{ + float Y; + float Cb; + float Cr; + float A; +} D3D11_VIDEO_COLOR_YCbCrA; + +typedef struct D3D11_VIDEO_COLOR +{ + union + { + D3D11_VIDEO_COLOR_YCbCrA YCbCr; + D3D11_VIDEO_COLOR_RGBA RGBA; + }; +} D3D11_VIDEO_COLOR; + +typedef struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE +{ + UINT Usage :1; + UINT RGB_Range :1; + UINT YCbCr_Matrix :1; + UINT YCbCr_xvYCC :1; + UINT Nominal_Range :2; + UINT Reserved : 26; +} D3D11_VIDEO_PROCESSOR_COLOR_SPACE; + +typedef enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE +{ + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0, + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1, + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2, + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3 +} D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE; + +typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE +{ + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0, + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1, + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2 +} D3D11_VIDEO_PROCESSOR_OUTPUT_RATE; + +typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT +{ + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7 +} D3D11_VIDEO_PROCESSOR_STEREO_FORMAT; + +typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE +{ + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0, + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1, + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2 +} D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE; + +typedef enum D3D11_VIDEO_PROCESSOR_ROTATION +{ + D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0, + D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1, + D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2, + D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3 +} D3D11_VIDEO_PROCESSOR_ROTATION; + +[ + object, + local, + uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c) +] +interface ID3D11VideoDecoder : ID3D11DeviceChild +{ + HRESULT GetCreationParameters( + [out] D3D11_VIDEO_DECODER_DESC *pVideoDesc, + [out] D3D11_VIDEO_DECODER_CONFIG *pConfig); + HRESULT GetDriverHandle( + [out] HANDLE *pDriverHandle); +} + +[ + object, + local, + uuid(1d7b0652-185f-41c6-85ce-0c5be3d4ae6c) +] +interface ID3D11VideoProcessor : ID3D11DeviceChild +{ + void GetContentDesc( + [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc); + void GetRateConversionCaps( + [out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps); +} + +typedef enum D3D11_VPOV_DIMENSION +{ + D3D11_VPOV_DIMENSION_UNKNOWN = 0, + D3D11_VPOV_DIMENSION_TEXTURE2D = 1, + D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2 +} D3D11_VPOV_DIMENSION; + +typedef struct D3D11_TEX2D_VPOV +{ + UINT MipSlice; +} D3D11_TEX2D_VPOV; + +typedef struct D3D11_TEX2D_ARRAY_VPOV +{ + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; +} D3D11_TEX2D_ARRAY_VPOV; + +typedef struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC +{ + D3D11_VPOV_DIMENSION ViewDimension; + + union + { + D3D11_TEX2D_VPOV Texture2D; + D3D11_TEX2D_ARRAY_VPOV Texture2DArray; + }; +} D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC; + +[ + object, + local, + uuid(a048285e-25a9-4527-bd93-d68b68c44254) +] +interface ID3D11VideoProcessorOutputView : ID3D11View +{ + void GetDesc( [out] D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc); +} + +[ + object, + local, + uuid(9b32f9ad-bdcc-40a6-a39d-d5c865845720) +] +interface ID3D11CryptoSession : ID3D11DeviceChild +{ + void GetCryptoType( + [out] GUID *pCryptoType); + void GetDecoderProfile( + [out] GUID *pDecoderProfile); + HRESULT GetCertificateSize( + [out] UINT *pCertificateSize); + HRESULT GetCertificate( + [in] UINT CertificateSize, + [out] BYTE *pCertificate); + void GetCryptoSessionHandle( + [out] HANDLE *pCryptoSessionHandle); +} + +#define D3D11_OMAC_SIZE 16 + +typedef struct D3D11_OMAC +{ + BYTE Omac[D3D11_OMAC_SIZE]; +} D3D11_OMAC; + +typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE +{ + D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1, + D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2, + D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3 +} D3D11_AUTHENTICATED_CHANNEL_TYPE; + +typedef struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT +{ + D3D11_OMAC omac; + GUID ConfigureType; + HANDLE hChannel; + UINT SequenceNumber; + HRESULT ReturnCode; +} D3D11_AUTHENTICATED_CONFIGURE_OUTPUT; + +[ + object, + local, + uuid(3015a308-dcbd-47aa-a747-192486d14d4a) +] +interface ID3D11AuthenticatedChannel : ID3D11DeviceChild +{ + HRESULT GetCertificateSize( + [out] UINT *pCertificateSize); + HRESULT GetCertificate( + [in] UINT CertificateSize, + [out] BYTE *pCertificate); + void GetChannelHandle( + [out] HANDLE *pChannelHandle); +} + +typedef enum D3D11_VPIV_DIMENSION +{ + D3D11_VPIV_DIMENSION_UNKNOWN = 0, + D3D11_VPIV_DIMENSION_TEXTURE2D = 1 +} D3D11_VPIV_DIMENSION; + +typedef struct D3D11_TEX2D_VPIV +{ + UINT MipSlice; + UINT ArraySlice; +} D3D11_TEX2D_VPIV; + +typedef struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC +{ + UINT FourCC; + D3D11_VPIV_DIMENSION ViewDimension; + + union + { + D3D11_TEX2D_VPIV Texture2D; + }; +} D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC; + +[ + object, + local, + uuid(11ec5a5f-51dc-4945-ab34-6e8c21300ea5) +] +interface ID3D11VideoProcessorInputView : ID3D11View +{ + void GetDesc( [out] D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc); +} + +typedef enum D3D11_VDOV_DIMENSION +{ + D3D11_VDOV_DIMENSION_UNKNOWN = 0, + D3D11_VDOV_DIMENSION_TEXTURE2D = 1 +} D3D11_VDOV_DIMENSION; + +typedef struct D3D11_TEX2D_VDOV +{ + UINT ArraySlice; +} D3D11_TEX2D_VDOV; + +typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC +{ + GUID DecodeProfile; + D3D11_VDOV_DIMENSION ViewDimension; + + union + { + D3D11_TEX2D_VDOV Texture2D; + }; +} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC; + +[ + object, + local, + uuid(c2931aea-2a85-4f20-860f-fba1fd256e18) +] +interface ID3D11VideoDecoderOutputView : ID3D11View +{ + void GetDesc( [out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc); +} + +typedef struct D3D11_VIDEO_PROCESSOR_STREAM +{ + BOOL Enable; + UINT OutputIndex; + UINT InputFrameOrField; + UINT PastFrames; + UINT FutureFrames; + ID3D11VideoProcessorInputView **ppPastSurfaces; + ID3D11VideoProcessorInputView *pInputSurface; + ID3D11VideoProcessorInputView **ppFutureSurfaces; + ID3D11VideoProcessorInputView **ppPastSurfacesRight; + ID3D11VideoProcessorInputView *pInputSurfaceRight; + ID3D11VideoProcessorInputView **ppFutureSurfacesRight; +} D3D11_VIDEO_PROCESSOR_STREAM; + +[ + object, + local, + uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4) +] +interface ID3D11VideoContext : ID3D11DeviceChild +{ + HRESULT GetDecoderBuffer( + [in] ID3D11VideoDecoder *pDecoder, + [in] D3D11_VIDEO_DECODER_BUFFER_TYPE Type, + [out] UINT *pBufferSize, + [out] void **ppBuffer); + HRESULT ReleaseDecoderBuffer( + [in] ID3D11VideoDecoder *pDecoder, + [in] D3D11_VIDEO_DECODER_BUFFER_TYPE Type); + HRESULT DecoderBeginFrame( + [in] ID3D11VideoDecoder *pDecoder, + [in] ID3D11VideoDecoderOutputView *pView, + [in] UINT ContentKeySize, + [in] const void *pContentKey); + HRESULT DecoderEndFrame( + [in] ID3D11VideoDecoder *pDecoder); + HRESULT SubmitDecoderBuffers( + [in] ID3D11VideoDecoder *pDecoder, + [in] UINT NumBuffers, + [in] const D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc); + HRESULT DecoderExtension( + [in] ID3D11VideoDecoder *pDecoder, + [in] const D3D11_VIDEO_DECODER_EXTENSION *pExtensionData); + void VideoProcessorSetOutputTargetRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL Enable, + [in] const RECT *pRect); + void VideoProcessorSetOutputBackgroundColor( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL YCbCr, + [in] const D3D11_VIDEO_COLOR *pColor); + void VideoProcessorSetOutputColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorSetOutputAlphaFillMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE AlphaFillMode, + [in] UINT StreamIndex); + void VideoProcessorSetOutputConstriction( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL Enable, + [in] SIZE Size); + void VideoProcessorSetOutputStereoMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL Enable); + HRESULT VideoProcessorSetOutputExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [in] void *pData); + void VideoProcessorGetOutputTargetRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *Enabled, + [out] RECT *pRect); + void VideoProcessorGetOutputBackgroundColor( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *pYCbCr, + [out] D3D11_VIDEO_COLOR *pColor); + void VideoProcessorGetOutputColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorGetOutputAlphaFillMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *pAlphaFillMode, + [out] UINT *pStreamIndex); + void VideoProcessorGetOutputConstriction( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *pEnabled, + [out] SIZE *pSize); + void VideoProcessorGetOutputStereoMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *pEnabled); + HRESULT VideoProcessorGetOutputExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [out] void *pData); + void VideoProcessorSetStreamFrameFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_FRAME_FORMAT FrameFormat); + void VideoProcessorSetStreamColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorSetStreamOutputRate( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE OutputRate, + [in] BOOL RepeatFrame, + [in] const DXGI_RATIONAL *pCustomRate); + void VideoProcessorSetStreamSourceRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] const RECT *pRect); + void VideoProcessorSetStreamDestRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] const RECT *pRect); + void VideoProcessorSetStreamAlpha( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] FLOAT Alpha); + void VideoProcessorSetStreamPalette( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] UINT Count, + [in] const UINT *pEntries); + void VideoProcessorSetStreamPixelAspectRatio( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] const DXGI_RATIONAL *pSourceAspectRatio, + [in] const DXGI_RATIONAL *pDestinationAspectRatio); + void VideoProcessorSetStreamLumaKey( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] FLOAT Lower, + [in] FLOAT Upper); + void VideoProcessorSetStreamStereoFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT Format, + [in] BOOL LeftViewFrame0, + [in] BOOL BaseViewFrame0, + [in] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE FlipMode, + [in] int MonoOffset); + void VideoProcessorSetStreamAutoProcessingMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable); + void VideoProcessorSetStreamFilter( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_PROCESSOR_FILTER Filter, + [in] BOOL Enable, + [in] int Level); + HRESULT VideoProcessorSetStreamExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [in] void *pData); + void VideoProcessorGetStreamFrameFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] D3D11_VIDEO_FRAME_FORMAT *pFrameFormat); + void VideoProcessorGetStreamColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorGetStreamOutputRate( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *pOutputRate, + [out] BOOL *pRepeatFrame, + [out] DXGI_RATIONAL *pCustomRate); + void VideoProcessorGetStreamSourceRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] RECT *pRect); + void VideoProcessorGetStreamDestRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] RECT *pRect); + void VideoProcessorGetStreamAlpha( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] FLOAT *pAlpha); + void VideoProcessorGetStreamPalette( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] UINT Count, + [out] UINT *pEntries); + void VideoProcessorGetStreamPixelAspectRatio( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] DXGI_RATIONAL *pSourceAspectRatio, + [out] DXGI_RATIONAL *pDestinationAspectRatio); + void VideoProcessorGetStreamLumaKey( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] FLOAT *pLower, + [out] FLOAT *pUpper); + void VideoProcessorGetStreamStereoFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnable, + [out] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *pFormat, + [out] BOOL *pLeftViewFrame0, + [out] BOOL *pBaseViewFrame0, + [out] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *pFlipMode, + [out] int *MonoOffset); + void VideoProcessorGetStreamAutoProcessingMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled); + void VideoProcessorGetStreamFilter( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_PROCESSOR_FILTER Filter, + [out] BOOL *pEnabled, + [out] int *pLevel); + HRESULT VideoProcessorGetStreamExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [out] void *pData); + HRESULT VideoProcessorBlt( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] ID3D11VideoProcessorOutputView *pView, + [in] UINT OutputFrame, + [in] UINT StreamCount, + [in] const D3D11_VIDEO_PROCESSOR_STREAM *pStreams); + HRESULT NegotiateCryptoSessionKeyExchange( + [in] ID3D11CryptoSession *pCryptoSession, + [in] UINT DataSize, + [in,out] void *pData); + void EncryptionBlt( + [in] ID3D11CryptoSession *pCryptoSession, + [in] ID3D11Texture2D *pSrcSurface, + [in] ID3D11Texture2D *pDstSurface, + [in] UINT IVSize, + [in,out] void *pIV); + void DecryptionBlt( + [in] ID3D11CryptoSession *pCryptoSession, + [in] ID3D11Texture2D *pSrcSurface, + [in] ID3D11Texture2D *pDstSurface, + [in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo, + [in] UINT ContentKeySize, + [in] const void *pContentKey, + [in] UINT IVSize, + [in,out] void *pIV); + void StartSessionKeyRefresh( + [in] ID3D11CryptoSession *pCryptoSession, + [in] UINT RandomNumberSize, + [out] void *pRandomNumber); + void FinishSessionKeyRefresh( + [in] ID3D11CryptoSession *pCryptoSession); + HRESULT GetEncryptionBltKey( + [in] ID3D11CryptoSession *pCryptoSession, + [in] UINT KeySize, + [out] void *pReadbackKey); + HRESULT NegotiateAuthenticatedChannelKeyExchange( + [in] ID3D11AuthenticatedChannel *pChannel, + [in] UINT DataSize, + [in,out] void *pData); + HRESULT QueryAuthenticatedChannel( + [in] ID3D11AuthenticatedChannel *pChannel, + [in] UINT InputSize, + [in] const void *pInput, + [in] UINT OutputSize, + [out] void *pOutput); + HRESULT ConfigureAuthenticatedChannel( + [in] ID3D11AuthenticatedChannel *pChannel, + [in] UINT InputSize, + [in] const void *pInput, + [out] D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *pOutput); + void VideoProcessorSetStreamRotation( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] D3D11_VIDEO_PROCESSOR_ROTATION Rotation); + void VideoProcessorGetStreamRotation( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnable, + [out] D3D11_VIDEO_PROCESSOR_ROTATION *pRotation); +} + +[ + object, + local, + uuid(31627037-53ab-4200-9061-05faa9ab45f9) +] +interface ID3D11VideoProcessorEnumerator : ID3D11DeviceChild +{ + HRESULT GetVideoProcessorContentDesc( + [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc); + HRESULT CheckVideoProcessorFormat( + [in] DXGI_FORMAT Format, + [out] UINT *pFlags); + HRESULT GetVideoProcessorCaps( + [out] D3D11_VIDEO_PROCESSOR_CAPS *pCaps); + HRESULT GetVideoProcessorRateConversionCaps( + [in] UINT TypeIndex, + [out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps); + HRESULT GetVideoProcessorCustomRate( + [in] UINT TypeIndex, + [in] UINT CustomRateIndex, + [out] D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate); + HRESULT GetVideoProcessorFilterRange( + [in] D3D11_VIDEO_PROCESSOR_FILTER Filter, + [out] D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange); +} + +[ + object, + local, + uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333) +] +interface ID3D11VideoDevice : IUnknown +{ + HRESULT CreateVideoDecoder( + [in] const D3D11_VIDEO_DECODER_DESC *pVideoDesc, + [in] const D3D11_VIDEO_DECODER_CONFIG *pConfig, + [out] ID3D11VideoDecoder **ppDecoder); + HRESULT CreateVideoProcessor( + [in] ID3D11VideoProcessorEnumerator *pEnum, + [in] UINT RateConversionIndex, + [out] ID3D11VideoProcessor **ppVideoProcessor); + HRESULT CreateAuthenticatedChannel( + [in] D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType, + [out] ID3D11AuthenticatedChannel **ppAuthenticatedChannel); + HRESULT CreateCryptoSession( + [in] const GUID *pCryptoType, + [in] const GUID *pDecoderProfile, + [in] const GUID *pKeyExchangeType, + [out] ID3D11CryptoSession **ppCryptoSession); + HRESULT CreateVideoDecoderOutputView( + [in] ID3D11Resource *pResource, + [in] const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc, + [out] ID3D11VideoDecoderOutputView **ppVDOVView); + HRESULT CreateVideoProcessorInputView( + [in] ID3D11Resource *pResource, + [in] ID3D11VideoProcessorEnumerator *pEnum, + [in] const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc, + [out] ID3D11VideoProcessorInputView **ppVPIView); + HRESULT CreateVideoProcessorOutputView( + [in] ID3D11Resource *pResource, + [in] ID3D11VideoProcessorEnumerator *pEnum, + [in] const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc, + [out] ID3D11VideoProcessorOutputView **ppVPOView); + HRESULT CreateVideoProcessorEnumerator( + [in] const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc, + [out] ID3D11VideoProcessorEnumerator **ppEnum); + UINT GetVideoDecoderProfileCount(void); + HRESULT GetVideoDecoderProfile( + [in] UINT Index, + [out] GUID *pDecoderProfile); + HRESULT CheckVideoDecoderFormat( + [in] const GUID *pDecoderProfile, + [in] DXGI_FORMAT Format, + [out] BOOL *pSupported); + HRESULT GetVideoDecoderConfigCount( + [in] const D3D11_VIDEO_DECODER_DESC *pDesc, + [out] UINT *pCount); + HRESULT GetVideoDecoderConfig( + [in] const D3D11_VIDEO_DECODER_DESC *pDesc, + [in] UINT Index, + [out] D3D11_VIDEO_DECODER_CONFIG *pConfig); + HRESULT GetContentProtectionCaps( + [in] const GUID *pCryptoType, + [in] const GUID *pDecoderProfile, + [out] D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps); + HRESULT CheckCryptoKeyExchange( + [in] const GUID *pCryptoType, + [in] const GUID *pDecoderProfile, + [in] UINT Index, + [out] GUID *pKeyExchangeType); + HRESULT SetPrivateData( + [in] REFGUID guid, + [in] UINT DataSize, + [in] const void *pData); + HRESULT SetPrivateDataInterface( + [in] REFGUID guid, + [in] const IUnknown *pData); +} + typedef enum D3D11_CREATE_DEVICE_FLAG { - D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001, - D3D11_CREATE_DEVICE_DEBUG = 0x0002, - D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x0004, - D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x0008, - D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x0020, - D3D11_CREATE_DEVICE_DEBUGGABLE = 0x0040, + D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001, + D3D11_CREATE_DEVICE_DEBUG = 0x0002, + D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x0004, + D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x0008, + D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x0020, + D3D11_CREATE_DEVICE_DEBUGGABLE = 0x0040, D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x0080, - D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x0100, - D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x0800 + D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x0100, + D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x0800 } D3D11_CREATE_DEVICE_FLAG;
const UINT D3D11_SDK_VERSION = 7;
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBAgAGBQJVUHHsAAoJEN0/YqbEcdMwt5IP/RQUorEad9xeKijd+ylUAZNH k9W6EpbcMUcwd8bWEE95XQadiG+NQ/IpQDrVAanqX8yW5rA9ldfVZmX5AzgQDY1b 2+z6DZ41S8AqUQFkjakJmlAJu9KAEh+jbDFEl5742ZRu0XARF1cQkJ8tDuNKOmUY dPetkbiPVNoP3wbfTr5PaQD5Ti4IgzkoPXP2ZEnLw//BGbqvj8zODN3KEEPrXW4X Vx9lGihijOiSbCs225sBCA9gV5qGdtAZaDRaYBhcBhssL79/zfe+IhRgSlFDfN9G DVu7MhCbJpC4ZhMiJq7XwywBFDFmRKRJ6ppOi5luUHOuowooG1OV71j+zkiTcId0 xkKiwz7hvRn634rbP8MO7jShVGJczYJRCECNYa8UcIz1IFJm/jas1lj3fNt0mZlw DWzOv5MxvNVyI61IgQs2kgJhOjKmya62Wsz1f7W4TFWazMg2/QKN4K97P2GH3B4L sypDv7Zgszds4kZDnihVzbJY115XlrbEEjyC2/wTzLr07ThwaFQGs1xlOkIYFiJY GrRdouYJlfGmg1vCV7BOgNkeQrOdEXWOgmD9lw3cDWqnBMvabVBPYWPUGk62yzNQ F9o0hktsMOAN+eHqD1kH5EcZX5qICIb+ys0SWWpROAkfnS3cbJfdBHeNYiRAFMfZ TVNEg78wDgXDA8MmxhAQ =efTb -----END PGP SIGNATURE-----
On Mon, May 11, 2015 at 11:10 AM, Stefan Dösinger <stefandoesinger(a)gmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
This patch still shows plenty of signs that it was copypasted from Microsoft's headers.
Care to elaborate ?
Am 2015-05-11 um 11:00 schrieb Steve Lhomme:
From: Steve Lhomme <slhomme(a)matroska.org>
--- include/d3d11.idl | 878 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 870 insertions(+), 8 deletions(-)
diff --git a/include/d3d11.idl b/include/d3d11.idl index 3726d32..70afbd5 100644 --- a/include/d3d11.idl +++ b/include/d3d11.idl @@ -2125,16 +2125,878 @@ interface ID3D11Device : IUnknown UINT GetExceptionMode(); }
+cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_MOCOMP_NOFGT, 0x1b81be64, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_MOCOMP_FGT, 0x1b81be65, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_IDCT_NOFGT, 0x1b81be66, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_IDCT_FGT, 0x1b81be67, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_NOFGT, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_FGT, 0x1b81be69, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_WITHFMOASO_NOFGT, 0xd5f04ff9, 0x3418, 0x45d8, 0x95, 0x61, 0x32, 0xa7, 0x6a, 0xae, 0x2d, 0xdd);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_STEREO_PROGRESSIVE_NOFGT, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_STEREO_NOFGT, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_H264_VLD_MULTIVIEW_NOFGT, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV8_POSTPROC, 0x1b81be80, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV8_MOCOMP, 0x1b81be81, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV9_POSTPROC, 0x1b81be90, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV9_MOCOMP, 0x1b81be91, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_WMV9_IDCT, 0x1b81be94, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_POSTPROC, 0x1b81beA0, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_MOCOMP, 0x1b81beA1, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_IDCT, 0x1b81beA2, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_VLD, 0x1b81beA3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_VC1_D2010, 0x1b81beA4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG4PT2_VLD_SIMPLE, 0xefd64d74, 0xc9e8, 0x41d7, 0xa5, 0xe9, 0xe9, 0xb0, 0xe3, 0x9f, 0xa3, 0x19);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_NOGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG4PT2_VLD_ADVSIMPLE_GMC, 0xab998b5b, 0x4258, 0x44a9, 0x9f, 0xeb, 0x94, 0xe5, 0x97, 0xa6, 0xba, 0xae);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_HEVC_VLD_MAIN, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_HEVC_VLD_MAIN10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_MOCOMP, 0xe6a9f44b, 0x61b0, 0x4563, 0x9e, 0xa4, 0x63, 0xd2, 0xa3, 0xc6, 0xfe, 0x66);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_IDCT, 0xbf22ad00, 0x03ea, 0x4690, 0x80, 0x77, 0x47, 0x33, 0x46, 0x20, 0x9b, 0x7e);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2_VLD, 0xee27417f, 0x5e28, 0x4e65, 0xbe, 0xea, 0x1d, 0x26, 0xb5, 0x08, 0xad, 0xc9);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG1_VLD, 0x6f3ec719, 0x3735, 0x42cc, 0x80, 0x63, 0x65, 0xcc, 0x3c, 0xb3, 0x66, 0x16);") +cpp_quote("DEFINE_GUID(D3D11_DECODER_PROFILE_MPEG2and1_VLD, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);") + +typedef struct D3D11_VIDEO_DECODER_DESC +{ + GUID Guid; + UINT SampleWidth; + UINT SampleHeight; + DXGI_FORMAT OutputFormat; +} D3D11_VIDEO_DECODER_DESC; + +typedef struct D3D11_VIDEO_DECODER_CONFIG +{ + GUID guidConfigBitstreamEncryption; + GUID guidConfigMBcontrolEncryption; + GUID guidConfigResidDiffEncryption; + UINT ConfigBitstreamRaw; + UINT ConfigMBcontrolRasterOrder; + UINT ConfigResidDiffHost; + UINT ConfigSpatialResid8; + UINT ConfigResid8Subtraction; + UINT ConfigSpatialHost8or9Clipping; + UINT ConfigSpatialResidInterleaved; + UINT ConfigIntraResidUnsigned; + UINT ConfigResidDiffAccelerator; + UINT ConfigHostInverseScan; + UINT ConfigSpecificIDCT; + UINT Config4GroupedCoefs; + USHORT ConfigMinRenderTargetBuffCount; + USHORT ConfigDecoderSpecific; +} D3D11_VIDEO_DECODER_CONFIG; + +typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE +{ + D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0, + D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL = 1, + D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE = 2, + D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL = 3, + D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX = 4, + D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL = 5, + D3D11_VIDEO_DECODER_BUFFER_BITSTREAM = 6, + D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR = 7, + D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN = 8 +} D3D11_VIDEO_DECODER_BUFFER_TYPE; + +typedef struct D3D11_ENCRYPTED_BLOCK_INFO +{ + UINT NumEncryptedBytesAtBeginning; + UINT NumBytesInSkipPattern; + UINT NumBytesInEncryptPattern; +} D3D11_ENCRYPTED_BLOCK_INFO; + +typedef struct D3D11_VIDEO_DECODER_BUFFER_DESC +{ + D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType; + UINT BufferIndex; + UINT DataOffset; + UINT DataSize; + UINT FirstMBaddress; + UINT NumMBsInBuffer; + UINT Width; + UINT Height; + UINT Stride; + UINT ReservedBits; + void *pIV; + UINT IVSize; + BOOL PartialEncryption; + D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo; +} D3D11_VIDEO_DECODER_BUFFER_DESC; + +typedef struct D3D11_VIDEO_DECODER_EXTENSION +{ + UINT Function; + void *pPrivateInputData; + UINT PrivateInputDataSize; + void *pPrivateOutputData; + UINT PrivateOutputDataSize; + UINT ResourceCount; + ID3D11Resource **ppResourceList; +} D3D11_VIDEO_DECODER_EXTENSION; + +typedef enum D3D11_VIDEO_FRAME_FORMAT +{ + D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE = 0, + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST = 1, + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST = 2 +} D3D11_VIDEO_FRAME_FORMAT; + +typedef enum D3D11_VIDEO_USAGE +{ + D3D11_VIDEO_USAGE_PLAYBACK_NORMAL = 0, + D3D11_VIDEO_USAGE_OPTIMAL_SPEED = 1, + D3D11_VIDEO_USAGE_OPTIMAL_QUALITY = 2 +} D3D11_VIDEO_USAGE; + +typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_DESC +{ + D3D11_VIDEO_FRAME_FORMAT InputFrameFormat; + DXGI_RATIONAL InputFrameRate; + UINT InputWidth; + UINT InputHeight; + DXGI_RATIONAL OutputFrameRate; + UINT OutputWidth; + UINT OutputHeight; + D3D11_VIDEO_USAGE Usage; +} D3D11_VIDEO_PROCESSOR_CONTENT_DESC; + +typedef struct D3D11_VIDEO_PROCESSOR_CAPS +{ + UINT DeviceCaps; + UINT FeatureCaps; + UINT FilterCaps; + UINT InputFormatCaps; + UINT AutoStreamCaps; + UINT StereoCaps; + UINT RateConversionCapsCount; + UINT MaxInputStreams; + UINT MaxStreamStates; +} D3D11_VIDEO_PROCESSOR_CAPS; + +typedef struct D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS +{ + UINT PastFrames; + UINT FutureFrames; + UINT ProcessorCaps; + UINT ITelecineCaps; + UINT CustomRateCount; +} D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS; + +typedef struct D3D11_VIDEO_PROCESSOR_CUSTOM_RATE +{ + DXGI_RATIONAL CustomRate; + UINT OutputFrames; + BOOL InputInterlaced; + UINT InputFramesOrFields; +} D3D11_VIDEO_PROCESSOR_CUSTOM_RATE; + +typedef enum D3D11_VIDEO_PROCESSOR_FILTER +{ + D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS = 0, + D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST = 1, + D3D11_VIDEO_PROCESSOR_FILTER_HUE = 2, + D3D11_VIDEO_PROCESSOR_FILTER_SATURATION = 3, + D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION = 4, + D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT = 5, + D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING = 6, + D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT = 7 +} D3D11_VIDEO_PROCESSOR_FILTER; + +typedef struct D3D11_VIDEO_CONTENT_PROTECTION_CAPS +{ + UINT Caps; + UINT KeyExchangeTypeCount; + UINT BlockAlignmentSize; + ULONGLONG ProtectedMemorySize; +} D3D11_VIDEO_CONTENT_PROTECTION_CAPS; + +typedef struct D3D11_VIDEO_PROCESSOR_FILTER_RANGE +{ + int Minimum; + int Maximum; + int Default; + float Multiplier; +} D3D11_VIDEO_PROCESSOR_FILTER_RANGE; + +typedef struct D3D11_VIDEO_COLOR_RGBA +{ + float R; + float G; + float B; + float A; +} D3D11_VIDEO_COLOR_RGBA; + +typedef struct D3D11_VIDEO_COLOR_YCbCrA +{ + float Y; + float Cb; + float Cr; + float A; +} D3D11_VIDEO_COLOR_YCbCrA; + +typedef struct D3D11_VIDEO_COLOR +{ + union + { + D3D11_VIDEO_COLOR_YCbCrA YCbCr; + D3D11_VIDEO_COLOR_RGBA RGBA; + }; +} D3D11_VIDEO_COLOR; + +typedef struct D3D11_VIDEO_PROCESSOR_COLOR_SPACE +{ + UINT Usage :1; + UINT RGB_Range :1; + UINT YCbCr_Matrix :1; + UINT YCbCr_xvYCC :1; + UINT Nominal_Range :2; + UINT Reserved : 26; +} D3D11_VIDEO_PROCESSOR_COLOR_SPACE; + +typedef enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE +{ + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE = 0, + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND = 1, + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION = 2, + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM = 3 +} D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE; + +typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE +{ + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL = 0, + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF = 1, + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM = 2 +} D3D11_VIDEO_PROCESSOR_OUTPUT_RATE; + +typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FORMAT +{ + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO = 0, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL = 1, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL = 2, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE = 3, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET = 4, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED = 5, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED = 6, + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD = 7 +} D3D11_VIDEO_PROCESSOR_STEREO_FORMAT; + +typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE +{ + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE = 0, + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 = 1, + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 = 2 +} D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE; + +typedef enum D3D11_VIDEO_PROCESSOR_ROTATION +{ + D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY = 0, + D3D11_VIDEO_PROCESSOR_ROTATION_90 = 1, + D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2, + D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3 +} D3D11_VIDEO_PROCESSOR_ROTATION; + +[ + object, + local, + uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c) +] +interface ID3D11VideoDecoder : ID3D11DeviceChild +{ + HRESULT GetCreationParameters( + [out] D3D11_VIDEO_DECODER_DESC *pVideoDesc, + [out] D3D11_VIDEO_DECODER_CONFIG *pConfig); + HRESULT GetDriverHandle( + [out] HANDLE *pDriverHandle); +} + +[ + object, + local, + uuid(1d7b0652-185f-41c6-85ce-0c5be3d4ae6c) +] +interface ID3D11VideoProcessor : ID3D11DeviceChild +{ + void GetContentDesc( + [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc); + void GetRateConversionCaps( + [out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps); +} + +typedef enum D3D11_VPOV_DIMENSION +{ + D3D11_VPOV_DIMENSION_UNKNOWN = 0, + D3D11_VPOV_DIMENSION_TEXTURE2D = 1, + D3D11_VPOV_DIMENSION_TEXTURE2DARRAY = 2 +} D3D11_VPOV_DIMENSION; + +typedef struct D3D11_TEX2D_VPOV +{ + UINT MipSlice; +} D3D11_TEX2D_VPOV; + +typedef struct D3D11_TEX2D_ARRAY_VPOV +{ + UINT MipSlice; + UINT FirstArraySlice; + UINT ArraySize; +} D3D11_TEX2D_ARRAY_VPOV; + +typedef struct D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC +{ + D3D11_VPOV_DIMENSION ViewDimension; + + union + { + D3D11_TEX2D_VPOV Texture2D; + D3D11_TEX2D_ARRAY_VPOV Texture2DArray; + }; +} D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC; + +[ + object, + local, + uuid(a048285e-25a9-4527-bd93-d68b68c44254) +] +interface ID3D11VideoProcessorOutputView : ID3D11View +{ + void GetDesc( [out] D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc); +} + +[ + object, + local, + uuid(9b32f9ad-bdcc-40a6-a39d-d5c865845720) +] +interface ID3D11CryptoSession : ID3D11DeviceChild +{ + void GetCryptoType( + [out] GUID *pCryptoType); + void GetDecoderProfile( + [out] GUID *pDecoderProfile); + HRESULT GetCertificateSize( + [out] UINT *pCertificateSize); + HRESULT GetCertificate( + [in] UINT CertificateSize, + [out] BYTE *pCertificate); + void GetCryptoSessionHandle( + [out] HANDLE *pCryptoSessionHandle); +} + +#define D3D11_OMAC_SIZE 16 + +typedef struct D3D11_OMAC +{ + BYTE Omac[D3D11_OMAC_SIZE]; +} D3D11_OMAC; + +typedef enum D3D11_AUTHENTICATED_CHANNEL_TYPE +{ + D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1, + D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE = 2, + D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE = 3 +} D3D11_AUTHENTICATED_CHANNEL_TYPE; + +typedef struct D3D11_AUTHENTICATED_CONFIGURE_OUTPUT +{ + D3D11_OMAC omac; + GUID ConfigureType; + HANDLE hChannel; + UINT SequenceNumber; + HRESULT ReturnCode; +} D3D11_AUTHENTICATED_CONFIGURE_OUTPUT; + +[ + object, + local, + uuid(3015a308-dcbd-47aa-a747-192486d14d4a) +] +interface ID3D11AuthenticatedChannel : ID3D11DeviceChild +{ + HRESULT GetCertificateSize( + [out] UINT *pCertificateSize); + HRESULT GetCertificate( + [in] UINT CertificateSize, + [out] BYTE *pCertificate); + void GetChannelHandle( + [out] HANDLE *pChannelHandle); +} + +typedef enum D3D11_VPIV_DIMENSION +{ + D3D11_VPIV_DIMENSION_UNKNOWN = 0, + D3D11_VPIV_DIMENSION_TEXTURE2D = 1 +} D3D11_VPIV_DIMENSION; + +typedef struct D3D11_TEX2D_VPIV +{ + UINT MipSlice; + UINT ArraySlice; +} D3D11_TEX2D_VPIV; + +typedef struct D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC +{ + UINT FourCC; + D3D11_VPIV_DIMENSION ViewDimension; + + union + { + D3D11_TEX2D_VPIV Texture2D; + }; +} D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC; + +[ + object, + local, + uuid(11ec5a5f-51dc-4945-ab34-6e8c21300ea5) +] +interface ID3D11VideoProcessorInputView : ID3D11View +{ + void GetDesc( [out] D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc); +} + +typedef enum D3D11_VDOV_DIMENSION +{ + D3D11_VDOV_DIMENSION_UNKNOWN = 0, + D3D11_VDOV_DIMENSION_TEXTURE2D = 1 +} D3D11_VDOV_DIMENSION; + +typedef struct D3D11_TEX2D_VDOV +{ + UINT ArraySlice; +} D3D11_TEX2D_VDOV; + +typedef struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC +{ + GUID DecodeProfile; + D3D11_VDOV_DIMENSION ViewDimension; + + union + { + D3D11_TEX2D_VDOV Texture2D; + }; +} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC; + +[ + object, + local, + uuid(c2931aea-2a85-4f20-860f-fba1fd256e18) +] +interface ID3D11VideoDecoderOutputView : ID3D11View +{ + void GetDesc( [out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc); +} + +typedef struct D3D11_VIDEO_PROCESSOR_STREAM +{ + BOOL Enable; + UINT OutputIndex; + UINT InputFrameOrField; + UINT PastFrames; + UINT FutureFrames; + ID3D11VideoProcessorInputView **ppPastSurfaces; + ID3D11VideoProcessorInputView *pInputSurface; + ID3D11VideoProcessorInputView **ppFutureSurfaces; + ID3D11VideoProcessorInputView **ppPastSurfacesRight; + ID3D11VideoProcessorInputView *pInputSurfaceRight; + ID3D11VideoProcessorInputView **ppFutureSurfacesRight; +} D3D11_VIDEO_PROCESSOR_STREAM; + +[ + object, + local, + uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4) +] +interface ID3D11VideoContext : ID3D11DeviceChild +{ + HRESULT GetDecoderBuffer( + [in] ID3D11VideoDecoder *pDecoder, + [in] D3D11_VIDEO_DECODER_BUFFER_TYPE Type, + [out] UINT *pBufferSize, + [out] void **ppBuffer); + HRESULT ReleaseDecoderBuffer( + [in] ID3D11VideoDecoder *pDecoder, + [in] D3D11_VIDEO_DECODER_BUFFER_TYPE Type); + HRESULT DecoderBeginFrame( + [in] ID3D11VideoDecoder *pDecoder, + [in] ID3D11VideoDecoderOutputView *pView, + [in] UINT ContentKeySize, + [in] const void *pContentKey); + HRESULT DecoderEndFrame( + [in] ID3D11VideoDecoder *pDecoder); + HRESULT SubmitDecoderBuffers( + [in] ID3D11VideoDecoder *pDecoder, + [in] UINT NumBuffers, + [in] const D3D11_VIDEO_DECODER_BUFFER_DESC *pBufferDesc); + HRESULT DecoderExtension( + [in] ID3D11VideoDecoder *pDecoder, + [in] const D3D11_VIDEO_DECODER_EXTENSION *pExtensionData); + void VideoProcessorSetOutputTargetRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL Enable, + [in] const RECT *pRect); + void VideoProcessorSetOutputBackgroundColor( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL YCbCr, + [in] const D3D11_VIDEO_COLOR *pColor); + void VideoProcessorSetOutputColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorSetOutputAlphaFillMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE AlphaFillMode, + [in] UINT StreamIndex); + void VideoProcessorSetOutputConstriction( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL Enable, + [in] SIZE Size); + void VideoProcessorSetOutputStereoMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] BOOL Enable); + HRESULT VideoProcessorSetOutputExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [in] void *pData); + void VideoProcessorGetOutputTargetRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *Enabled, + [out] RECT *pRect); + void VideoProcessorGetOutputBackgroundColor( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *pYCbCr, + [out] D3D11_VIDEO_COLOR *pColor); + void VideoProcessorGetOutputColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorGetOutputAlphaFillMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE *pAlphaFillMode, + [out] UINT *pStreamIndex); + void VideoProcessorGetOutputConstriction( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *pEnabled, + [out] SIZE *pSize); + void VideoProcessorGetOutputStereoMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [out] BOOL *pEnabled); + HRESULT VideoProcessorGetOutputExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [out] void *pData); + void VideoProcessorSetStreamFrameFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_FRAME_FORMAT FrameFormat); + void VideoProcessorSetStreamColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorSetStreamOutputRate( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE OutputRate, + [in] BOOL RepeatFrame, + [in] const DXGI_RATIONAL *pCustomRate); + void VideoProcessorSetStreamSourceRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] const RECT *pRect); + void VideoProcessorSetStreamDestRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] const RECT *pRect); + void VideoProcessorSetStreamAlpha( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] FLOAT Alpha); + void VideoProcessorSetStreamPalette( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] UINT Count, + [in] const UINT *pEntries); + void VideoProcessorSetStreamPixelAspectRatio( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] const DXGI_RATIONAL *pSourceAspectRatio, + [in] const DXGI_RATIONAL *pDestinationAspectRatio); + void VideoProcessorSetStreamLumaKey( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] FLOAT Lower, + [in] FLOAT Upper); + void VideoProcessorSetStreamStereoFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT Format, + [in] BOOL LeftViewFrame0, + [in] BOOL BaseViewFrame0, + [in] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE FlipMode, + [in] int MonoOffset); + void VideoProcessorSetStreamAutoProcessingMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable); + void VideoProcessorSetStreamFilter( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_PROCESSOR_FILTER Filter, + [in] BOOL Enable, + [in] int Level); + HRESULT VideoProcessorSetStreamExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [in] void *pData); + void VideoProcessorGetStreamFrameFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] D3D11_VIDEO_FRAME_FORMAT *pFrameFormat); + void VideoProcessorGetStreamColorSpace( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE *pColorSpace); + void VideoProcessorGetStreamOutputRate( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE *pOutputRate, + [out] BOOL *pRepeatFrame, + [out] DXGI_RATIONAL *pCustomRate); + void VideoProcessorGetStreamSourceRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] RECT *pRect); + void VideoProcessorGetStreamDestRect( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] RECT *pRect); + void VideoProcessorGetStreamAlpha( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] FLOAT *pAlpha); + void VideoProcessorGetStreamPalette( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] UINT Count, + [out] UINT *pEntries); + void VideoProcessorGetStreamPixelAspectRatio( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] DXGI_RATIONAL *pSourceAspectRatio, + [out] DXGI_RATIONAL *pDestinationAspectRatio); + void VideoProcessorGetStreamLumaKey( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled, + [out] FLOAT *pLower, + [out] FLOAT *pUpper); + void VideoProcessorGetStreamStereoFormat( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnable, + [out] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT *pFormat, + [out] BOOL *pLeftViewFrame0, + [out] BOOL *pBaseViewFrame0, + [out] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE *pFlipMode, + [out] int *MonoOffset); + void VideoProcessorGetStreamAutoProcessingMode( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnabled); + void VideoProcessorGetStreamFilter( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] D3D11_VIDEO_PROCESSOR_FILTER Filter, + [out] BOOL *pEnabled, + [out] int *pLevel); + HRESULT VideoProcessorGetStreamExtension( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] const GUID *pExtensionGuid, + [in] UINT DataSize, + [out] void *pData); + HRESULT VideoProcessorBlt( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] ID3D11VideoProcessorOutputView *pView, + [in] UINT OutputFrame, + [in] UINT StreamCount, + [in] const D3D11_VIDEO_PROCESSOR_STREAM *pStreams); + HRESULT NegotiateCryptoSessionKeyExchange( + [in] ID3D11CryptoSession *pCryptoSession, + [in] UINT DataSize, + [in,out] void *pData); + void EncryptionBlt( + [in] ID3D11CryptoSession *pCryptoSession, + [in] ID3D11Texture2D *pSrcSurface, + [in] ID3D11Texture2D *pDstSurface, + [in] UINT IVSize, + [in,out] void *pIV); + void DecryptionBlt( + [in] ID3D11CryptoSession *pCryptoSession, + [in] ID3D11Texture2D *pSrcSurface, + [in] ID3D11Texture2D *pDstSurface, + [in] D3D11_ENCRYPTED_BLOCK_INFO *pEncryptedBlockInfo, + [in] UINT ContentKeySize, + [in] const void *pContentKey, + [in] UINT IVSize, + [in,out] void *pIV); + void StartSessionKeyRefresh( + [in] ID3D11CryptoSession *pCryptoSession, + [in] UINT RandomNumberSize, + [out] void *pRandomNumber); + void FinishSessionKeyRefresh( + [in] ID3D11CryptoSession *pCryptoSession); + HRESULT GetEncryptionBltKey( + [in] ID3D11CryptoSession *pCryptoSession, + [in] UINT KeySize, + [out] void *pReadbackKey); + HRESULT NegotiateAuthenticatedChannelKeyExchange( + [in] ID3D11AuthenticatedChannel *pChannel, + [in] UINT DataSize, + [in,out] void *pData); + HRESULT QueryAuthenticatedChannel( + [in] ID3D11AuthenticatedChannel *pChannel, + [in] UINT InputSize, + [in] const void *pInput, + [in] UINT OutputSize, + [out] void *pOutput); + HRESULT ConfigureAuthenticatedChannel( + [in] ID3D11AuthenticatedChannel *pChannel, + [in] UINT InputSize, + [in] const void *pInput, + [out] D3D11_AUTHENTICATED_CONFIGURE_OUTPUT *pOutput); + void VideoProcessorSetStreamRotation( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [in] BOOL Enable, + [in] D3D11_VIDEO_PROCESSOR_ROTATION Rotation); + void VideoProcessorGetStreamRotation( + [in] ID3D11VideoProcessor *pVideoProcessor, + [in] UINT StreamIndex, + [out] BOOL *pEnable, + [out] D3D11_VIDEO_PROCESSOR_ROTATION *pRotation); +} + +[ + object, + local, + uuid(31627037-53ab-4200-9061-05faa9ab45f9) +] +interface ID3D11VideoProcessorEnumerator : ID3D11DeviceChild +{ + HRESULT GetVideoProcessorContentDesc( + [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc); + HRESULT CheckVideoProcessorFormat( + [in] DXGI_FORMAT Format, + [out] UINT *pFlags); + HRESULT GetVideoProcessorCaps( + [out] D3D11_VIDEO_PROCESSOR_CAPS *pCaps); + HRESULT GetVideoProcessorRateConversionCaps( + [in] UINT TypeIndex, + [out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS *pCaps); + HRESULT GetVideoProcessorCustomRate( + [in] UINT TypeIndex, + [in] UINT CustomRateIndex, + [out] D3D11_VIDEO_PROCESSOR_CUSTOM_RATE *pRate); + HRESULT GetVideoProcessorFilterRange( + [in] D3D11_VIDEO_PROCESSOR_FILTER Filter, + [out] D3D11_VIDEO_PROCESSOR_FILTER_RANGE *pRange); +} + +[ + object, + local, + uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333) +] +interface ID3D11VideoDevice : IUnknown +{ + HRESULT CreateVideoDecoder( + [in] const D3D11_VIDEO_DECODER_DESC *pVideoDesc, + [in] const D3D11_VIDEO_DECODER_CONFIG *pConfig, + [out] ID3D11VideoDecoder **ppDecoder); + HRESULT CreateVideoProcessor( + [in] ID3D11VideoProcessorEnumerator *pEnum, + [in] UINT RateConversionIndex, + [out] ID3D11VideoProcessor **ppVideoProcessor); + HRESULT CreateAuthenticatedChannel( + [in] D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType, + [out] ID3D11AuthenticatedChannel **ppAuthenticatedChannel); + HRESULT CreateCryptoSession( + [in] const GUID *pCryptoType, + [in] const GUID *pDecoderProfile, + [in] const GUID *pKeyExchangeType, + [out] ID3D11CryptoSession **ppCryptoSession); + HRESULT CreateVideoDecoderOutputView( + [in] ID3D11Resource *pResource, + [in] const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc, + [out] ID3D11VideoDecoderOutputView **ppVDOVView); + HRESULT CreateVideoProcessorInputView( + [in] ID3D11Resource *pResource, + [in] ID3D11VideoProcessorEnumerator *pEnum, + [in] const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pDesc, + [out] ID3D11VideoProcessorInputView **ppVPIView); + HRESULT CreateVideoProcessorOutputView( + [in] ID3D11Resource *pResource, + [in] ID3D11VideoProcessorEnumerator *pEnum, + [in] const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pDesc, + [out] ID3D11VideoProcessorOutputView **ppVPOView); + HRESULT CreateVideoProcessorEnumerator( + [in] const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc, + [out] ID3D11VideoProcessorEnumerator **ppEnum); + UINT GetVideoDecoderProfileCount(void); + HRESULT GetVideoDecoderProfile( + [in] UINT Index, + [out] GUID *pDecoderProfile); + HRESULT CheckVideoDecoderFormat( + [in] const GUID *pDecoderProfile, + [in] DXGI_FORMAT Format, + [out] BOOL *pSupported); + HRESULT GetVideoDecoderConfigCount( + [in] const D3D11_VIDEO_DECODER_DESC *pDesc, + [out] UINT *pCount); + HRESULT GetVideoDecoderConfig( + [in] const D3D11_VIDEO_DECODER_DESC *pDesc, + [in] UINT Index, + [out] D3D11_VIDEO_DECODER_CONFIG *pConfig); + HRESULT GetContentProtectionCaps( + [in] const GUID *pCryptoType, + [in] const GUID *pDecoderProfile, + [out] D3D11_VIDEO_CONTENT_PROTECTION_CAPS *pCaps); + HRESULT CheckCryptoKeyExchange( + [in] const GUID *pCryptoType, + [in] const GUID *pDecoderProfile, + [in] UINT Index, + [out] GUID *pKeyExchangeType); + HRESULT SetPrivateData( + [in] REFGUID guid, + [in] UINT DataSize, + [in] const void *pData); + HRESULT SetPrivateDataInterface( + [in] REFGUID guid, + [in] const IUnknown *pData); +} + typedef enum D3D11_CREATE_DEVICE_FLAG { - D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001, - D3D11_CREATE_DEVICE_DEBUG = 0x0002, - D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x0004, - D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x0008, - D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x0020, - D3D11_CREATE_DEVICE_DEBUGGABLE = 0x0040, + D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001, + D3D11_CREATE_DEVICE_DEBUG = 0x0002, + D3D11_CREATE_DEVICE_SWITCH_TO_REF = 0x0004, + D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS = 0x0008, + D3D11_CREATE_DEVICE_BGRA_SUPPORT = 0x0020, + D3D11_CREATE_DEVICE_DEBUGGABLE = 0x0040, D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY = 0x0080, - D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x0100, - D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x0800 + D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x0100, + D3D11_CREATE_DEVICE_VIDEO_SUPPORT = 0x0800 } D3D11_CREATE_DEVICE_FLAG;
This part of the code reformatting is not needed.
participants (2)
-
Stefan Dösinger -
Steve Lhomme