diff --git a/mingw-w64-headers/include/dxva.h b/mingw-w64-headers/include/dxva.h
index 050baec..549970e 100644
--- a/mingw-w64-headers/include/dxva.h
+++ b/mingw-w64-headers/include/dxva.h
@@ -346,6 +346,180 @@
     USHORT  wBadSliceChopping; 
 } DXVA_Slice_HEVC_Short, *LPDXVA_Slice_HEVC_Short;
 
+/* VPx picture entry data structure */
+typedef struct _DXVA_PicEntry_VPx {
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UCHAR Index7Bits     : 7;
+            UCHAR AssociatedFlag : 1;
+        };
+        UCHAR bPicEntry;
+    };
+} DXVA_PicEntry_VPx, *LPDXVA_PicEntry_VPx;
+
+/* VP9 segmentation structure */
+typedef struct _segmentation_VP9 {
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UCHAR enabled                   : 1;
+            UCHAR update_map                : 1;
+            UCHAR temporal_update           : 1;
+            UCHAR abs_delta                 : 1;
+            UCHAR ReservedSegmentFlags4Bits : 4;
+        };
+        UCHAR wSegmentInfoFlags;
+    };
+    UCHAR tree_probs[7];
+    UCHAR pred_probs[3];
+    SHORT feature_data[8][4];
+    UCHAR feature_mask[8];
+} DXVA_segmentation_VP9;
+
+/* VP9 picture parameters structure */
+typedef struct _DXVA_PicParams_VP9 {
+    DXVA_PicEntry_VPx    CurrPic;
+    UCHAR                profile;
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            USHORT frame_type                   : 1;
+            USHORT show_frame                   : 1;
+            USHORT error_resilient_mode         : 1;
+            USHORT subsampling_x                : 1;
+            USHORT subsampling_y                : 1;
+            USHORT extra_plane                  : 1;
+            USHORT refresh_frame_context        : 1;
+            USHORT frame_parallel_decoding_mode : 1;
+            USHORT intra_only                   : 1;
+            USHORT frame_context_idx            : 2;
+            USHORT reset_frame_context          : 2;
+            USHORT allow_high_precision_mv      : 1;
+            USHORT ReservedFormatInfo2Bits      : 2;
+        };
+        USHORT wFormatAndPictureInfoFlags;
+    };
+    UINT  width;
+    UINT  height;
+    UCHAR BitDepthMinus8Luma;
+    UCHAR BitDepthMinus8Chroma;
+    UCHAR interp_filter;
+    UCHAR Reserved8Bits;
+    DXVA_PicEntry_VPx  ref_frame_map[8];
+    UINT  ref_frame_coded_width[8];
+    UINT  ref_frame_coded_height[8];
+    DXVA_PicEntry_VPx  frame_refs[3];
+    CHAR  ref_frame_sign_bias[4];
+    CHAR  filter_level;
+    CHAR  sharpness_level;
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UCHAR mode_ref_delta_enabled   : 1;
+            UCHAR mode_ref_delta_update    : 1;
+            UCHAR use_prev_in_find_mv_refs : 1;
+            UCHAR ReservedControlInfo5Bits : 5;
+        };
+        UCHAR wControlInfoFlags;
+    };
+    CHAR   ref_deltas[4];
+    CHAR   mode_deltas[2];
+    SHORT  base_qindex;
+    CHAR   y_dc_delta_q;
+    CHAR   uv_dc_delta_q;
+    CHAR   uv_ac_delta_q;
+    DXVA_segmentation_VP9 stVP9Segments;
+    UCHAR  log2_tile_cols;
+    UCHAR  log2_tile_rows;
+    USHORT uncompressed_header_size_byte_aligned;
+    USHORT first_partition_size;
+    USHORT Reserved16Bits;
+    UINT   Reserved32Bits;
+    UINT   StatusReportFeedbackNumber;
+} DXVA_PicParams_VP9, *LPDXVA_PicParams_VP9;
+
+/* VP8 segmentation structure */
+typedef struct _segmentation_VP8 {
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UCHAR segmentation_enabled        : 1;
+            UCHAR update_mb_segmentation_map  : 1;
+            UCHAR update_mb_segmentation_data : 1;
+            UCHAR mb_segement_abs_delta       : 1;
+            UCHAR ReservedSegmentFlags4Bits   : 4;
+        };
+        UCHAR wSegmentFlags;
+    };
+    CHAR  segment_feature_data[2][4];
+    UCHAR mb_segment_tree_probs[3];
+} DXVA_segmentation_VP8;
+
+/* VP8 picture parameters structure */
+typedef struct _DXVA_PicParams_VP8 {
+    UINT first_part_size;
+    UINT width;
+    UINT height;
+    DXVA_PicEntry_VPx  CurrPic;
+    __C89_NAMELESS union {
+        __C89_NAMELESS struct {
+            UCHAR frame_type            : 1;
+            UCHAR version               : 3;
+            UCHAR show_frame            : 1;
+            UCHAR clamp_type            : 1;
+            UCHAR ReservedFrameTag3Bits : 2;
+        };
+        UCHAR wFrameTagFlags;
+    };
+    DXVA_segmentation_VP8  stVP8Segments;
+    UCHAR  filter_type;
+    UCHAR  filter_level;
+    UCHAR  sharpness_level;
+    UCHAR  mode_ref_lf_delta_enabled;
+    UCHAR  mode_ref_lf_delta_update;
+    CHAR   ref_lf_deltas[4];
+    CHAR   mode_lf_deltas[4];
+    UCHAR  log2_nbr_of_dct_partitions;
+    UCHAR  base_qindex;
+    CHAR   y1dc_delta_q;
+    CHAR   y2dc_delta_q;
+    CHAR   y2ac_delta_q;
+    CHAR   uvdc_delta_q;
+    CHAR   uvac_delta_q;
+    DXVA_PicEntry_VPx alt_fb_idx;
+    DXVA_PicEntry_VPx gld_fb_idx;
+    DXVA_PicEntry_VPx lst_fb_idx;
+    UCHAR  ref_frame_sign_bias_golden;
+    UCHAR  ref_frame_sign_bias_altref;
+    UCHAR  refresh_entropy_probs;
+    UCHAR  vp8_coef_update_probs[4][8][3][11];
+    UCHAR  mb_no_coeff_skip;
+    UCHAR  prob_skip_false;
+    UCHAR  prob_intra;
+    UCHAR  prob_last;
+    UCHAR  prob_golden;
+    UCHAR  intra_16x16_prob[4];
+    UCHAR  intra_chroma_prob[3];
+    UCHAR  vp8_mv_update_probs[2][19];
+    USHORT ReservedBits1;
+    USHORT ReservedBits2;
+    USHORT ReservedBits3;
+    UINT   StatusReportFeedbackNumber;
+} DXVA_PicParams_VP8, *LPDXVA_PicParams_VP8;
+
+/* VPx slice control data structure - short form */
+typedef struct _DXVA_Slice_VPx_Short {
+    UINT   BSNALunitDataLocation;
+    UINT   SliceBytesInBuffer;
+    USHORT wBadSliceChopping;
+} DXVA_Slice_VPx_Short, *LPDXVA_Slice_VPx_Short;
+
+/* VPx status reporting data structure */
+typedef struct _DXVA_Status_VPx {
+    UINT   StatusReportFeedbackNumber;
+    DXVA_PicEntry_VPx CurrPic;
+    UCHAR  bBufType;
+    UCHAR  bStatus;
+    UCHAR  bReserved8Bits;
+    USHORT wNumMbsAffected;
+} DXVA_Status_VPx, *LPDXVA_Status_VPx;
+
 #pragma pack(pop)
 
 #ifdef __cplusplus
