headers: Update imported headers to current Wine version.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-headers/include/d3d11.h b/mingw-w64-headers/include/d3d11.h
index b5c1c31..55c16c1 100644
--- a/mingw-w64-headers/include/d3d11.h
+++ b/mingw-w64-headers/include/d3d11.h
@@ -870,6 +870,60 @@
     D3D11_VIDEO_PROCESSOR_ROTATION_180 = 2,
     D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3
 } D3D11_VIDEO_PROCESSOR_ROTATION;
+typedef enum D3D11_VIDEO_PROCESSOR_DEVICE_CAPS {
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE = 0x1,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC = 0x2,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION = 0x4,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION = 0x8,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_NOMINAL_RANGE = 0x10
+} D3D11_VIDEO_PROCESSOR_DEVICE_CAPS;
+typedef enum D3D11_VIDEO_PROCESSOR_FEATURE_CAPS {
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL = 0x1,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION = 0x2,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY = 0x4,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE = 0x8,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY = 0x10,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO = 0x20,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION = 0x40,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM = 0x80,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO = 0x100,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_MIRROR = 0x200,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_SHADER_USAGE = 0x400,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_METADATA_HDR10 = 0x800
+} D3D11_VIDEO_PROCESSOR_FEATURE_CAPS;
+typedef enum D3D11_VIDEO_PROCESSOR_FILTER_CAPS {
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS = 0x1,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST = 0x2,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE = 0x4,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION = 0x8,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION = 0x10,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT = 0x20,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING = 0x40,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT = 0x80
+} D3D11_VIDEO_PROCESSOR_FILTER_CAPS;
+typedef enum D3D11_VIDEO_PROCESSOR_FORMAT_CAPS {
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED = 0x1,
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP = 0x2,
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY = 0x4,
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED = 0x8
+} D3D11_VIDEO_PROCESSOR_FORMAT_CAPS;
+typedef enum D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS {
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE = 0x1,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING = 0x2,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT = 0x4,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION = 0x8,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING = 0x10,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION = 0x20,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION = 0x40,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING = 0x80
+} D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS;
+typedef enum D3D11_VIDEO_PROCESSOR_STEREO_CAPS {
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET = 0x1,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED = 0x2,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED = 0x4,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD = 0x8,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE = 0x10
+} D3D11_VIDEO_PROCESSOR_STEREO_CAPS;
 typedef enum D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS {
     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND = 0x1,
     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB = 0x2,
diff --git a/mingw-w64-headers/include/d3d11.idl b/mingw-w64-headers/include/d3d11.idl
index f4be49e..24ecc31 100644
--- a/mingw-w64-headers/include/d3d11.idl
+++ b/mingw-w64-headers/include/d3d11.idl
@@ -360,6 +360,72 @@
     D3D11_VIDEO_PROCESSOR_ROTATION_270 = 3,
 } D3D11_VIDEO_PROCESSOR_ROTATION;
 
+typedef enum D3D11_VIDEO_PROCESSOR_DEVICE_CAPS
+{
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE                          = 0x00000001,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC                                 = 0x00000002,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION                  = 0x00000004,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION               = 0x00000008,
+    D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_NOMINAL_RANGE                         = 0x00000010,
+} D3D11_VIDEO_PROCESSOR_DEVICE_CAPS;
+
+typedef enum D3D11_VIDEO_PROCESSOR_FEATURE_CAPS
+{
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL                           = 0x00000001,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION                         = 0x00000002,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY                             = 0x00000004,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE                        = 0x00000008,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY                               = 0x00000010,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO                               = 0x00000020,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION                             = 0x00000040,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM                         = 0x00000080,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO                   = 0x00000100,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_MIRROR                               = 0x00000200,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_SHADER_USAGE                         = 0x00000400,
+    D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_METADATA_HDR10                       = 0x00000800,
+} D3D11_VIDEO_PROCESSOR_FEATURE_CAPS;
+
+typedef enum D3D11_VIDEO_PROCESSOR_FILTER_CAPS
+{
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS                            = 0x00000001,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST                              = 0x00000002,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE                                   = 0x00000004,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION                            = 0x00000008,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION                       = 0x00000010,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT                      = 0x00000020,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING                    = 0x00000040,
+    D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT                     = 0x00000080,
+} D3D11_VIDEO_PROCESSOR_FILTER_CAPS;
+
+typedef enum D3D11_VIDEO_PROCESSOR_FORMAT_CAPS
+{
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED                        = 0x00000001,
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP                           = 0x00000002,
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY                          = 0x00000004,
+    D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED                    = 0x00000008,
+} D3D11_VIDEO_PROCESSOR_FORMAT_CAPS;
+
+typedef enum D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS
+{
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE                          = 0x00000001,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING                        = 0x00000002,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT                 = 0x00000004,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION                 = 0x00000008,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING               = 0x00000010,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION              = 0x00000020,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION                 = 0x00000040,
+    D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING               = 0x00000080,
+} D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS;
+
+typedef enum D3D11_VIDEO_PROCESSOR_STEREO_CAPS
+{
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET                           = 0x00000001,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED                       = 0x00000002,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED                    = 0x00000004,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD                          = 0x00000008,
+    D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE                             = 0x00000010,
+} D3D11_VIDEO_PROCESSOR_STEREO_CAPS;
+
 typedef enum D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS
 {
     D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND                  = 0x01,
diff --git a/mingw-w64-headers/include/dxgi.h b/mingw-w64-headers/include/dxgi.h
index 3324942..93354a5 100644
--- a/mingw-w64-headers/include/dxgi.h
+++ b/mingw-w64-headers/include/dxgi.h
@@ -152,6 +152,16 @@
 } LUID;
 typedef struct _LUID *PLUID;
 #endif
+#define DXGI_CPU_ACCESS_NONE (0)
+
+#define DXGI_CPU_ACCESS_DYNAMIC (1)
+
+#define DXGI_CPU_ACCESS_READ_WRITE (2)
+
+#define DXGI_CPU_ACCESS_SCRATCH (3)
+
+#define DXGI_CPU_ACCESS_FIELD (15)
+
 typedef UINT DXGI_USAGE;
 #define DXGI_USAGE_SHADER_INPUT (0x10)
 
@@ -2139,6 +2149,7 @@
 typedef enum DXGI_ADAPTER_FLAG {
     DXGI_ADAPTER_FLAG_NONE = 0,
     DXGI_ADAPTER_FLAG_REMOTE = 1,
+    DXGI_ADAPTER_FLAG_SOFTWARE = 2,
     DXGI_ADAPTER_FLAG_FORCE_DWORD = 0xffffffff
 } DXGI_ADAPTER_FLAG;
 typedef struct DXGI_ADAPTER_DESC1 {
diff --git a/mingw-w64-headers/include/dxgi.idl b/mingw-w64-headers/include/dxgi.idl
index b724770..c2960fd 100644
--- a/mingw-w64-headers/include/dxgi.idl
+++ b/mingw-w64-headers/include/dxgi.idl
@@ -33,6 +33,12 @@
 } LUID, *PLUID;
 cpp_quote("#endif")
 
+const UINT DXGI_CPU_ACCESS_NONE                     = 0;
+const UINT DXGI_CPU_ACCESS_DYNAMIC                  = 1;
+const UINT DXGI_CPU_ACCESS_READ_WRITE               = 2;
+const UINT DXGI_CPU_ACCESS_SCRATCH                  = 3;
+const UINT DXGI_CPU_ACCESS_FIELD                    = 15;
+
 typedef UINT DXGI_USAGE;
 const DXGI_USAGE DXGI_USAGE_SHADER_INPUT            = 0x10L;
 const DXGI_USAGE DXGI_USAGE_RENDER_TARGET_OUTPUT    = 0x20L;
@@ -439,6 +445,7 @@
 typedef enum DXGI_ADAPTER_FLAG {
     DXGI_ADAPTER_FLAG_NONE         = 0,
     DXGI_ADAPTER_FLAG_REMOTE       = 1,
+    DXGI_ADAPTER_FLAG_SOFTWARE     = 2,
     DXGI_ADAPTER_FLAG_FORCE_DWORD  = 0xFFFFFFFF
 } DXGI_ADAPTER_FLAG;
 
diff --git a/mingw-w64-headers/include/vmr9.h b/mingw-w64-headers/include/vmr9.h
index 0258136..4777275 100644
--- a/mingw-w64-headers/include/vmr9.h
+++ b/mingw-w64-headers/include/vmr9.h
@@ -2318,6 +2318,11 @@
     virtual HRESULT STDMETHODCALLTYPE TermCompositionDevice(
         IUnknown *d3ddev) = 0;
 
+    virtual HRESULT STDMETHODCALLTYPE SetStreamMediaType(
+        DWORD stream,
+        AM_MEDIA_TYPE *mt,
+        WINBOOL texture) = 0;
+
     virtual HRESULT STDMETHODCALLTYPE CompositeImage(
         IUnknown *d3ddev,
         IDirect3DSurface9 *d3dtarget,
@@ -2357,6 +2362,12 @@
         IVMRImageCompositor9 *This,
         IUnknown *d3ddev);
 
+    HRESULT (STDMETHODCALLTYPE *SetStreamMediaType)(
+        IVMRImageCompositor9 *This,
+        DWORD stream,
+        AM_MEDIA_TYPE *mt,
+        WINBOOL texture);
+
     HRESULT (STDMETHODCALLTYPE *CompositeImage)(
         IVMRImageCompositor9 *This,
         IUnknown *d3ddev,
@@ -2384,6 +2395,7 @@
 /*** IVMRImageCompositor9 methods ***/
 #define IVMRImageCompositor9_InitCompositionDevice(This,d3ddev) (This)->lpVtbl->InitCompositionDevice(This,d3ddev)
 #define IVMRImageCompositor9_TermCompositionDevice(This,d3ddev) (This)->lpVtbl->TermCompositionDevice(This,d3ddev)
+#define IVMRImageCompositor9_SetStreamMediaType(This,stream,mt,texture) (This)->lpVtbl->SetStreamMediaType(This,stream,mt,texture)
 #define IVMRImageCompositor9_CompositeImage(This,d3ddev,d3dtarget,mttarget,start,stop,back,info,streams) (This)->lpVtbl->CompositeImage(This,d3ddev,d3dtarget,mttarget,start,stop,back,info,streams)
 #else
 /*** IUnknown methods ***/
@@ -2403,6 +2415,9 @@
 static FORCEINLINE HRESULT IVMRImageCompositor9_TermCompositionDevice(IVMRImageCompositor9* This,IUnknown *d3ddev) {
     return This->lpVtbl->TermCompositionDevice(This,d3ddev);
 }
+static FORCEINLINE HRESULT IVMRImageCompositor9_SetStreamMediaType(IVMRImageCompositor9* This,DWORD stream,AM_MEDIA_TYPE *mt,WINBOOL texture) {
+    return This->lpVtbl->SetStreamMediaType(This,stream,mt,texture);
+}
 static FORCEINLINE HRESULT IVMRImageCompositor9_CompositeImage(IVMRImageCompositor9* This,IUnknown *d3ddev,IDirect3DSurface9 *d3dtarget,AM_MEDIA_TYPE *mttarget,REFERENCE_TIME start,REFERENCE_TIME stop,D3DCOLOR back,VMR9VideoStreamInfo *info,UINT streams) {
     return This->lpVtbl->CompositeImage(This,d3ddev,d3dtarget,mttarget,start,stop,back,info,streams);
 }
diff --git a/mingw-w64-headers/include/vmr9.idl b/mingw-w64-headers/include/vmr9.idl
index 98524b0..526cfbd 100644
--- a/mingw-w64-headers/include/vmr9.idl
+++ b/mingw-w64-headers/include/vmr9.idl
@@ -518,6 +518,7 @@
 {
     HRESULT InitCompositionDevice([in] IUnknown *d3ddev);
     HRESULT TermCompositionDevice([in] IUnknown *d3ddev);
+    HRESULT SetStreamMediaType([in] DWORD stream, [in] AM_MEDIA_TYPE *mt, [in] BOOL texture);
     HRESULT CompositeImage([in] IUnknown *d3ddev, [in] IDirect3DSurface9 *d3dtarget, [in] AM_MEDIA_TYPE *mttarget,
                            [in] REFERENCE_TIME start, [in] REFERENCE_TIME stop, D3DCOLOR back,
                            [in] VMR9VideoStreamInfo *info, [in] UINT streams);
diff --git a/mingw-w64-headers/include/wincodec.h b/mingw-w64-headers/include/wincodec.h
index a5a52ed..35e88c4 100644
--- a/mingw-w64-headers/include/wincodec.h
+++ b/mingw-w64-headers/include/wincodec.h
@@ -250,11 +250,28 @@
 #endif /* __cplusplus */
 #endif
 
+#ifndef __IWICDdsDecoder_FWD_DEFINED__
+#define __IWICDdsDecoder_FWD_DEFINED__
+typedef interface IWICDdsDecoder IWICDdsDecoder;
+#ifdef __cplusplus
+interface IWICDdsDecoder;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IWICDdsFrameDecode_FWD_DEFINED__
+#define __IWICDdsFrameDecode_FWD_DEFINED__
+typedef interface IWICDdsFrameDecode IWICDdsFrameDecode;
+#ifdef __cplusplus
+interface IWICDdsFrameDecode;
+#endif /* __cplusplus */
+#endif
+
 /* Headers for imported files */
 
 #include <wtypes.h>
 #include <propidl.h>
 #include <ocidl.h>
+#include <dxgiformat.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -412,6 +429,21 @@
     WICSectionAccessLevelReadWrite = 0x3,
     WICSectionAccessLevel_FORCE_DWORD = 0x7fffffff
 } WICSectionAccessLevel;
+typedef enum WICDdsDimension {
+    WICDdsTexture1D = 0x0,
+    WICDdsTexture2D = 0x1,
+    WICDdsTexture3D = 0x2,
+    WICDdsTextureCube = 0x3,
+    WICDDSTEXTURE_FORCE_DWORD = 0x7fffffff
+} WICDdsDimension;
+typedef enum WICDdsAlphaMode {
+    WICDdsAlphaModeUnknown = 0x0,
+    WICDdsAlphaModeStraight = 0x1,
+    WICDdsAlphaModePremultiplied = 0x2,
+    WICDdsAlphaModeOpaque = 0x3,
+    WICDdsAlphaModeCustom = 0x4,
+    WICDDSALPHAMODE_FORCE_DWORD = 0x7fffffff
+} WICDdsAlphaMode;
 typedef GUID WICPixelFormatGUID;
 typedef REFGUID REFWICPixelFormatGUID;
 DEFINE_GUID(GUID_WICPixelFormatDontCare, 0x6fddc324,0x4e03,0x4bfe,0xb1,0x85,0x3d,0x77,0x76,0x8d,0xc9,0x00);
@@ -530,6 +562,22 @@
     UINT32 PixelWidth;
     UINT32 PixelHeight;
 } WICImageParameters;
+typedef struct WICDdsParameters {
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+    UINT MipLevels;
+    UINT ArraySize;
+    DXGI_FORMAT DxgiFormat;
+    WICDdsDimension Dimension;
+    WICDdsAlphaMode AlphaMode;
+} WICDdsParameters;
+typedef struct WICDdsFormatInfo {
+    DXGI_FORMAT DxgiFormat;
+    UINT BytesPerBlock;
+    UINT BlockWidth;
+    UINT BlockHeight;
+} WICDdsFormatInfo;
 typedef UINT32 WICColor;
 #ifndef __ID2D1Device_FWD_DEFINED__
 #define __ID2D1Device_FWD_DEFINED__
@@ -5837,6 +5885,207 @@
 
 #endif  /* __IWICEnumMetadataItem_INTERFACE_DEFINED__ */
 
+/*****************************************************************************
+ * IWICDdsDecoder interface
+ */
+#ifndef __IWICDdsDecoder_INTERFACE_DEFINED__
+#define __IWICDdsDecoder_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWICDdsDecoder, 0x409cd537, 0x8532, 0x40cb, 0x97,0x74, 0xe2,0xfe,0xb2,0xdf,0x4e,0x9c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("409cd537-8532-40cb-9774-e2feb2df4e9c")
+IWICDdsDecoder : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetParameters(
+        WICDdsParameters *parameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFrame(
+        UINT arrayIndex,
+        UINT mipLevel,
+        UINT sliceIndex,
+        IWICBitmapFrameDecode **bitmapFrame) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWICDdsDecoder, 0x409cd537, 0x8532, 0x40cb, 0x97,0x74, 0xe2,0xfe,0xb2,0xdf,0x4e,0x9c)
+#endif
+#else
+typedef struct IWICDdsDecoderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWICDdsDecoder *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWICDdsDecoder *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWICDdsDecoder *This);
+
+    /*** IWICDdsDecoder methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetParameters)(
+        IWICDdsDecoder *This,
+        WICDdsParameters *parameters);
+
+    HRESULT (STDMETHODCALLTYPE *GetFrame)(
+        IWICDdsDecoder *This,
+        UINT arrayIndex,
+        UINT mipLevel,
+        UINT sliceIndex,
+        IWICBitmapFrameDecode **bitmapFrame);
+
+    END_INTERFACE
+} IWICDdsDecoderVtbl;
+
+interface IWICDdsDecoder {
+    CONST_VTBL IWICDdsDecoderVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWICDdsDecoder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWICDdsDecoder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWICDdsDecoder_Release(This) (This)->lpVtbl->Release(This)
+/*** IWICDdsDecoder methods ***/
+#define IWICDdsDecoder_GetParameters(This,parameters) (This)->lpVtbl->GetParameters(This,parameters)
+#define IWICDdsDecoder_GetFrame(This,arrayIndex,mipLevel,sliceIndex,bitmapFrame) (This)->lpVtbl->GetFrame(This,arrayIndex,mipLevel,sliceIndex,bitmapFrame)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWICDdsDecoder_QueryInterface(IWICDdsDecoder* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWICDdsDecoder_AddRef(IWICDdsDecoder* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWICDdsDecoder_Release(IWICDdsDecoder* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWICDdsDecoder methods ***/
+static FORCEINLINE HRESULT IWICDdsDecoder_GetParameters(IWICDdsDecoder* This,WICDdsParameters *parameters) {
+    return This->lpVtbl->GetParameters(This,parameters);
+}
+static FORCEINLINE HRESULT IWICDdsDecoder_GetFrame(IWICDdsDecoder* This,UINT arrayIndex,UINT mipLevel,UINT sliceIndex,IWICBitmapFrameDecode **bitmapFrame) {
+    return This->lpVtbl->GetFrame(This,arrayIndex,mipLevel,sliceIndex,bitmapFrame);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWICDdsDecoder_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWICDdsFrameDecode interface
+ */
+#ifndef __IWICDdsFrameDecode_INTERFACE_DEFINED__
+#define __IWICDdsFrameDecode_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWICDdsFrameDecode, 0x3d4c0c61, 0x18a4, 0x41e4, 0xbd,0x80, 0x48,0x1a,0x4f,0xc9,0xf4,0x64);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("3d4c0c61-18a4-41e4-bd80-481a4fc9f464")
+IWICDdsFrameDecode : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetSizeInBlocks(
+        UINT *widthInBlocks,
+        UINT *heightInBlocks) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFormatInfo(
+        WICDdsFormatInfo *formatInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CopyBlocks(
+        const WICRect *boundsInBlocks,
+        UINT stride,
+        UINT bufferSize,
+        BYTE *buffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWICDdsFrameDecode, 0x3d4c0c61, 0x18a4, 0x41e4, 0xbd,0x80, 0x48,0x1a,0x4f,0xc9,0xf4,0x64)
+#endif
+#else
+typedef struct IWICDdsFrameDecodeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWICDdsFrameDecode *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWICDdsFrameDecode *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWICDdsFrameDecode *This);
+
+    /*** IWICDdsFrameDecode methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetSizeInBlocks)(
+        IWICDdsFrameDecode *This,
+        UINT *widthInBlocks,
+        UINT *heightInBlocks);
+
+    HRESULT (STDMETHODCALLTYPE *GetFormatInfo)(
+        IWICDdsFrameDecode *This,
+        WICDdsFormatInfo *formatInfo);
+
+    HRESULT (STDMETHODCALLTYPE *CopyBlocks)(
+        IWICDdsFrameDecode *This,
+        const WICRect *boundsInBlocks,
+        UINT stride,
+        UINT bufferSize,
+        BYTE *buffer);
+
+    END_INTERFACE
+} IWICDdsFrameDecodeVtbl;
+
+interface IWICDdsFrameDecode {
+    CONST_VTBL IWICDdsFrameDecodeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWICDdsFrameDecode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWICDdsFrameDecode_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWICDdsFrameDecode_Release(This) (This)->lpVtbl->Release(This)
+/*** IWICDdsFrameDecode methods ***/
+#define IWICDdsFrameDecode_GetSizeInBlocks(This,widthInBlocks,heightInBlocks) (This)->lpVtbl->GetSizeInBlocks(This,widthInBlocks,heightInBlocks)
+#define IWICDdsFrameDecode_GetFormatInfo(This,formatInfo) (This)->lpVtbl->GetFormatInfo(This,formatInfo)
+#define IWICDdsFrameDecode_CopyBlocks(This,boundsInBlocks,stride,bufferSize,buffer) (This)->lpVtbl->CopyBlocks(This,boundsInBlocks,stride,bufferSize,buffer)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWICDdsFrameDecode_QueryInterface(IWICDdsFrameDecode* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWICDdsFrameDecode_AddRef(IWICDdsFrameDecode* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWICDdsFrameDecode_Release(IWICDdsFrameDecode* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWICDdsFrameDecode methods ***/
+static FORCEINLINE HRESULT IWICDdsFrameDecode_GetSizeInBlocks(IWICDdsFrameDecode* This,UINT *widthInBlocks,UINT *heightInBlocks) {
+    return This->lpVtbl->GetSizeInBlocks(This,widthInBlocks,heightInBlocks);
+}
+static FORCEINLINE HRESULT IWICDdsFrameDecode_GetFormatInfo(IWICDdsFrameDecode* This,WICDdsFormatInfo *formatInfo) {
+    return This->lpVtbl->GetFormatInfo(This,formatInfo);
+}
+static FORCEINLINE HRESULT IWICDdsFrameDecode_CopyBlocks(IWICDdsFrameDecode* This,const WICRect *boundsInBlocks,UINT stride,UINT bufferSize,BYTE *buffer) {
+    return This->lpVtbl->CopyBlocks(This,boundsInBlocks,stride,bufferSize,buffer);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWICDdsFrameDecode_INTERFACE_DEFINED__ */
+
 HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst);
 HRESULT WINAPI WICCreateBitmapFromSection(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, IWICBitmap **bitmap);
 HRESULT WINAPI WICCreateBitmapFromSectionEx(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, WICSectionAccessLevel access, IWICBitmap **bitmap);
diff --git a/mingw-w64-headers/include/wincodec.idl b/mingw-w64-headers/include/wincodec.idl
index b26e055..e64d9ed 100644
--- a/mingw-w64-headers/include/wincodec.idl
+++ b/mingw-w64-headers/include/wincodec.idl
@@ -19,6 +19,7 @@
 import "wtypes.idl";
 import "propidl.idl";
 import "ocidl.idl";
+import "dxgiformat.idl";
 
 cpp_quote ("#include \"dcommon.h\"")
 
@@ -195,6 +196,23 @@
     WICSectionAccessLevel_FORCE_DWORD = CODEC_FORCE_DWORD
 } WICSectionAccessLevel;
 
+typedef enum WICDdsDimension {
+    WICDdsTexture1D = 0x00000000,
+    WICDdsTexture2D = 0x00000001,
+    WICDdsTexture3D = 0x00000002,
+    WICDdsTextureCube = 0x00000003,
+    WICDDSTEXTURE_FORCE_DWORD = CODEC_FORCE_DWORD
+} WICDdsDimension;
+
+typedef enum WICDdsAlphaMode {
+    WICDdsAlphaModeUnknown = 0x00000000,
+    WICDdsAlphaModeStraight = 0x00000001,
+    WICDdsAlphaModePremultiplied = 0x00000002,
+    WICDdsAlphaModeOpaque = 0x00000003,
+    WICDdsAlphaModeCustom = 0x00000004,
+    WICDDSALPHAMODE_FORCE_DWORD = CODEC_FORCE_DWORD
+} WICDdsAlphaMode;
+
 typedef GUID WICPixelFormatGUID;
 typedef REFGUID REFWICPixelFormatGUID;
 
@@ -342,6 +360,24 @@
     UINT32 PixelHeight;
 } WICImageParameters;
 
+typedef struct WICDdsParameters {
+    UINT Width;
+    UINT Height;
+    UINT Depth;
+    UINT MipLevels;
+    UINT ArraySize;
+    DXGI_FORMAT DxgiFormat;
+    WICDdsDimension Dimension;
+    WICDdsAlphaMode AlphaMode;
+} WICDdsParameters;
+
+typedef struct WICDdsFormatInfo {
+    DXGI_FORMAT DxgiFormat;
+    UINT BytesPerBlock;
+    UINT BlockWidth;
+    UINT BlockHeight;
+} WICDdsFormatInfo;
+
 typedef UINT32 WICColor;
 
 interface ID2D1Device;
@@ -1144,6 +1180,43 @@
         [out] IWICEnumMetadataItem **ppIEnumMetadataItem);
 }
 
+[
+    object,
+    uuid(409cd537-8532-40cb-9774-e2feb2df4e9c)
+]
+interface IWICDdsDecoder : IUnknown
+{
+    HRESULT GetParameters(
+        [out] WICDdsParameters *parameters);
+
+    HRESULT GetFrame(
+        [in] UINT arrayIndex,
+        [in] UINT mipLevel,
+        [in] UINT sliceIndex,
+        [out, retval] IWICBitmapFrameDecode **bitmapFrame);
+};
+
+[
+    object,
+    uuid(3d4c0c61-18a4-41e4-bd80-481a4fc9f464)
+]
+interface IWICDdsFrameDecode : IUnknown
+{
+    HRESULT GetSizeInBlocks(
+        [out] UINT *widthInBlocks,
+        [out] UINT *heightInBlocks);
+
+    HRESULT GetFormatInfo(
+        [out] WICDdsFormatInfo *formatInfo);
+
+    HRESULT CopyBlocks(
+        [in, unique] const WICRect *boundsInBlocks,
+        [in] UINT stride,
+        [in] UINT bufferSize,
+        [out, size_is(bufferSize)] BYTE *buffer);
+};
+
+
 cpp_quote("HRESULT WINAPI WICConvertBitmapSource(REFWICPixelFormatGUID dstFormat, IWICBitmapSource *pISrc, IWICBitmapSource **ppIDst);")
 cpp_quote("HRESULT WINAPI WICCreateBitmapFromSection(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, IWICBitmap **bitmap);")
 cpp_quote("HRESULT WINAPI WICCreateBitmapFromSectionEx(UINT width, UINT height, REFWICPixelFormatGUID format, HANDLE section, UINT stride, UINT offset, WICSectionAccessLevel access, IWICBitmap **bitmap);")