[vlc-devel] [PATCH 1/4] add VideoProcessor capabilties in the local d3d11.h
Steve Lhomme
robux4 at gmail.com
Mon Jul 20 13:33:04 CEST 2015
From: Steve Lhomme <robUx4 at gmail.com>
---
contrib/src/d3d11/id3d11videodecoder.patch | 765 ++++++++++++++++++++++-------
1 file changed, 578 insertions(+), 187 deletions(-)
diff --git a/contrib/src/d3d11/id3d11videodecoder.patch b/contrib/src/d3d11/id3d11videodecoder.patch
index 27f29c8..ca3c6ab 100644
--- a/contrib/src/d3d11/id3d11videodecoder.patch
+++ b/contrib/src/d3d11/id3d11videodecoder.patch
@@ -1,221 +1,612 @@
-diff --git a/d3d11.idl b/d3d11.idl
---- a/d3d11.idl
-+++ b/d3d11.idl
-@@ -2125,6 +2125,214 @@ interface ID3D11Device : IUnknown
- UINT GetExceptionMode();
- }
-
-+typedef enum D3D11_VDOV_DIMENSION
+diff --git a/d3d11.idl b/d3d11.idl
+--- a/d3d11.idl
++++ b/d3d11.idl
+@@ -2125,6 +2125,605 @@ interface ID3D11Device : IUnknown
+ UINT GetExceptionMode();
+ }
+
++typedef enum D3D11_VDOV_DIMENSION
++{
++ D3D11_VDOV_DIMENSION_UNKNOWN = 0,
++ D3D11_VDOV_DIMENSION_TEXTURE2D
++} 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);
++}
++
++[
++ object,
++ local,
++ uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c)
++]
++interface ID3D11VideoDecoder : ID3D11DeviceChild
++{
++}
++
++interface ID3D11VideoProcessorInputView;
++interface ID3D11VideoProcessorOutputView;
++
++typedef enum D3D11_VIDEO_DECODER_BUFFER_TYPE
++{
++ D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
++ D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL,
++ D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE,
++ D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL,
++ D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX,
++ D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL,
++ D3D11_VIDEO_DECODER_BUFFER_BITSTREAM,
++ D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR,
++ D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN
++} 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 enum D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE
+{
-+ D3D11_VDOV_DIMENSION_UNKNOWN = 0,
-+ D3D11_VDOV_DIMENSION_TEXTURE2D
-+} D3D11_VDOV_DIMENSION;
++ 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 struct D3D11_TEX2D_VDOV
++typedef enum D3D11_VIDEO_FRAME_FORMAT
+{
-+ UINT ArraySlice;
-+} D3D11_TEX2D_VDOV;
++ 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 struct D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC
++typedef enum D3D11_VIDEO_PROCESSOR_OUTPUT_RATE
+{
-+ GUID DecodeProfile;
-+ D3D11_VDOV_DIMENSION ViewDimension;
++ 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;
+
-+ union
-+ {
-+ D3D11_TEX2D_VDOV Texture2D;
-+ };
-+} D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC;
++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;
+
-+[
-+ object,
-+ local,
-+ uuid(c2931aea-2a85-4f20-860f-fba1fd256e18)
-+]
-+interface ID3D11VideoDecoderOutputView : ID3D11View
++typedef enum D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE
+{
-+ void GetDesc(
-+ [out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC *pDesc );
-+}
++ 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;
+
-+[
-+ object,
-+ local,
-+ uuid(3c9c5b51-995d-48d1-9b8d-fa5caeded65c)
-+]
-+interface ID3D11VideoDecoder : ID3D11DeviceChild
++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 enum D3D11_VIDEO_DECODER_BUFFER_TYPE
++typedef struct D3D11_VIDEO_PROCESSOR_STREAM
+{
-+ D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS = 0,
-+ D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL,
-+ D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE,
-+ D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL,
-+ D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX,
-+ D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL,
-+ D3D11_VIDEO_DECODER_BUFFER_BITSTREAM,
-+ D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR,
-+ D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN
-+} D3D11_VIDEO_DECODER_BUFFER_TYPE;
-+
-+typedef struct D3D11_ENCRYPTED_BLOCK_INFO
++ 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;
++
++typedef enum D3D11_VIDEO_USAGE
+{
-+ UINT NumEncryptedBytesAtBeginning;
-+ UINT NumBytesInSkipPattern;
-+ UINT NumBytesInEncryptPattern;
-+} D3D11_ENCRYPTED_BLOCK_INFO;
++ 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_DECODER_BUFFER_DESC
++typedef struct D3D11_VIDEO_PROCESSOR_CONTENT_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;
++ 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;
+
+[
+ object,
+ local,
-+ uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4)
++ uuid( 1D7B0652-185F-41c6-85CE-0C5BE3D4AE6C )
+]
-+interface ID3D11VideoContext : ID3D11DeviceChild
++interface ID3D11VideoProcessor : ID3D11DeviceChild
+{
-+ HRESULT GetDecoderBuffer(
-+ [in] ID3D11VideoDecoder *pDecoder,
-+ [in] D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType,
-+ [out] UINT *pBufferSize,
-+ [out] void **ppBuffer);
-+ HRESULT ReleaseDecoderBuffer(
-+ [in] ID3D11VideoDecoder *pDecoder,
-+ [in] D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType);
-+ HRESULT DecoderBeginFrame(
-+ [in] ID3D11VideoDecoder *pDecoder,
-+ [in] ID3D11VideoDecoderOutputView *pVideoDecoderOutputView,
-+ [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);
-+}
++ void GetContentDesc(
++ [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pDesc);
++ void GetRateConversionCaps(
++ [out] void *pCaps /* D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS */);
++};
+
-+typedef struct D3D11_VIDEO_DECODER_DESC
++[
++ object,
++ local,
++ uuid(61f21c45-3c0e-4a74-9cea-67100d9ad5e4)
++]
++interface ID3D11VideoContext : ID3D11DeviceChild
++{
++ HRESULT GetDecoderBuffer(
++ [in] ID3D11VideoDecoder *pDecoder,
++ [in] D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType,
++ [out] UINT *pBufferSize,
++ [out] void **ppBuffer);
++ HRESULT ReleaseDecoderBuffer(
++ [in] ID3D11VideoDecoder *pDecoder,
++ [in] D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType);
++ HRESULT DecoderBeginFrame(
++ [in] ID3D11VideoDecoder *pDecoder,
++ [in] ID3D11VideoDecoderOutputView *pVideoDecoderOutputView,
++ [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 void *pExtensionData /* D3D11_VIDEO_DECODER_EXTENSION */);
++ void VideoProcessorSetOutputTargetRect(
++ [in] ID3D11VideoProcessor* pVideoProcessor,
++ [in] BOOL Enable,
++ [in] const RECT* pRect);
++ void VideoProcessorSetOutputBackgroundColor(
++ [in] ID3D11VideoProcessor* pVideoProcessor,
++ [in] BOOL YCbCr,
++ [in] const void *pColor /* D3D11_VIDEO_COLOR */);
++ void VideoProcessorSetOutputColorSpace(
++ [in] ID3D11VideoProcessor* pVideoProcessor,
++ [in] const void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++ 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] void *pColor /* D3D11_VIDEO_COLOR */);
++ void VideoProcessorGetOutputColorSpace(
++ [in] ID3D11VideoProcessor* pVideoProcessor,
++ [out] void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++ 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 void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++ 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] void *pColorSpace /* D3D11_VIDEO_PROCESSOR_COLOR_SPACE */);
++ 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,
++ [annotation("_Out_writes_(Count)")] 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);
++}
++
++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_AUTHENTICATED_CHANNEL_TYPE
++{
++ D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
++ D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE,
++ D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE
++} D3D11_AUTHENTICATED_CHANNEL_TYPE;
++
++typedef enum D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT
+{
-+ GUID Guid;
-+ UINT SampleWidth;
-+ UINT SampleHeight;
-+ DXGI_FORMAT OutputFormat;
-+} D3D11_VIDEO_DECODER_DESC;
++ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT = 0x00000001,
++ D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT = 0x00000002,
++} D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT;
+
-+typedef struct D3D11_VIDEO_DECODER_CONFIG
++typedef struct D3D11_VIDEO_PROCESSOR_CAPS
+{
-+ 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_AUTHENTICATED_CHANNEL_TYPE
-+{
-+ D3D11_AUTHENTICATED_CHANNEL_D3D11 = 1,
-+ D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE,
-+ D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE
-+} D3D11_AUTHENTICATED_CHANNEL_TYPE;
-+
-+interface ID3D11VideoProcessorEnumerator;
-+interface ID3D11VideoProcessor;
-+interface ID3D11VideoProcessorInputView;
-+interface ID3D11VideoProcessorOutputView;
-+interface ID3D11AuthenticatedChannel;
-+interface ID3D11CryptoSession;
++ UINT DeviceCaps;
++ UINT FeatureCaps;
++ UINT FilterCaps;
++ UINT InputFormatCaps;
++ UINT AutoStreamCaps;
++ UINT StereoCaps;
++ UINT RateConversionCapsCount;
++ UINT MaxInputStreams;
++ UINT MaxStreamStates;
++} D3D11_VIDEO_PROCESSOR_CAPS;
+
+[
+ object,
+ local,
-+ uuid(10ec4d5b-975a-4689-b9e4-d0aac30fe333)
++ uuid( 31627037-53AB-4200-9061-05FAA9AB45F9 )
+]
-+interface ID3D11VideoDevice : IUnknown
++interface ID3D11VideoProcessorEnumerator : ID3D11DeviceChild
+{
-+ HRESULT CreateVideoDecoder(
-+ [in] const D3D11_VIDEO_DECODER_DESC *pVideoDesc,
-+ [in] const D3D11_VIDEO_DECODER_CONFIG *pConfig,
-+ [out] ID3D11VideoDecoder **ppVideoDecoder);
-+ HRESULT CreateVideoProcessor(
-+ [in] ID3D11VideoProcessorEnumerator *ppProcEnumerator,
-+ [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 **ppVideoDecoderOutputView);
-+ HRESULT CreateVideoProcessorInputView(
-+ [in] ID3D11Resource *pResource,
-+ [in] ID3D11VideoProcessorEnumerator *ppProcEnumerator,
-+ [in] const void *pInputDesc, /*D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC */
-+ [out] ID3D11VideoProcessorInputView **ppVideoProcInputView);
-+ HRESULT CreateVideoProcessorOutputView(
-+ [in] ID3D11Resource *pResource,
-+ [in] ID3D11VideoProcessorEnumerator *pEnumerator,
-+ [in] const void *pOutputDesc, /*D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC */
-+ [out] ID3D11VideoProcessorOutputView **ppVideoProcOutputView);
-+ HRESULT CreateVideoProcessorEnumerator(
-+ [in] const void *pContentDesc, /*D3D11_VIDEO_PROCESSOR_CONTENT_DESC */
-+ [out] ID3D11VideoProcessorEnumerator **ppProcEnumerator);
-+ UINT GetVideoDecoderProfileCount(void);
-+ HRESULT GetVideoDecoderProfile(
-+ [in] UINT DecoderIndex,
-+ [out] GUID *pDecoderProfile);
-+ HRESULT CheckVideoDecoderFormat(
-+ [in] const GUID *pDecoderProfile,
++ HRESULT GetVideoProcessorContentDesc(
++ [out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pDesc);
++ HRESULT CheckVideoProcessorFormat(
+ [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 DecoderIndex,
-+ [out] D3D11_VIDEO_DECODER_CONFIG *pConfig);
++ [out] UINT* pFlags);
++ HRESULT GetVideoProcessorCaps(
++ [out] D3D11_VIDEO_PROCESSOR_CAPS *pCaps);
++ HRESULT GetVideoProcessorRateConversionCaps(
++ [in] UINT TypeIndex,
++ [out] void *pCaps /* D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS */);
++ HRESULT GetVideoProcessorCustomRate(
++ [in] UINT TypeIndex,
++ [in] UINT CustomRateIndex,
++ [out] void *pRate /* D3D11_VIDEO_PROCESSOR_CUSTOM_RATE */);
++ HRESULT GetVideoProcessorFilterRange(
++ [in] D3D11_VIDEO_PROCESSOR_FILTER Filter,
++ [out] void *pRange /* D3D11_VIDEO_PROCESSOR_FILTER_RANGE */);
+}
+
- typedef enum D3D11_CREATE_DEVICE_FLAG {
- D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001,
- D3D11_CREATE_DEVICE_DEBUG = 0x0002,
---
-1.9.5.msysgit.0
-
++interface ID3D11AuthenticatedChannel;
++interface ID3D11CryptoSession;
++
++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;
++
++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(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 **ppVideoDecoder);
++ HRESULT CreateVideoProcessor(
++ [in] ID3D11VideoProcessorEnumerator *ppProcEnumerator,
++ [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 **ppVideoDecoderOutputView);
++ HRESULT CreateVideoProcessorInputView(
++ [in] ID3D11Resource *pResource,
++ [in] ID3D11VideoProcessorEnumerator *ppProcEnumerator,
++ [in] const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC *pInputDesc,
++ [out] ID3D11VideoProcessorInputView **ppVideoProcInputView);
++ HRESULT CreateVideoProcessorOutputView(
++ [in] ID3D11Resource *pResource,
++ [in] ID3D11VideoProcessorEnumerator *pEnumerator,
++ [in] const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC *pOutputDesc,
++ [out] ID3D11VideoProcessorOutputView **ppVideoProcOutputView);
++ HRESULT CreateVideoProcessorEnumerator(
++ [in] const D3D11_VIDEO_PROCESSOR_CONTENT_DESC *pContentDesc,
++ [out] ID3D11VideoProcessorEnumerator **ppProcEnumerator);
++ UINT GetVideoDecoderProfileCount(void);
++ HRESULT GetVideoDecoderProfile(
++ [in] UINT DecoderIndex,
++ [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 DecoderIndex,
++ [out] D3D11_VIDEO_DECODER_CONFIG *pConfig);
++}
++
+ typedef enum D3D11_CREATE_DEVICE_FLAG {
+ D3D11_CREATE_DEVICE_SINGLETHREADED = 0x0001,
+ D3D11_CREATE_DEVICE_DEBUG = 0x0002,
+--
+1.9.5.msysgit.0
+
--
2.4.2
More information about the vlc-devel
mailing list