1/*
   2 * Copyright 2015 Michael Müller
   3 *
   4 * This library is free software; you can redistribute it and/or
   5 * modify it under the terms of the GNU Lesser General Public
   6 * License as published by the Free Software Foundation; either
   7 * version 2.1 of the License, or (at your option) any later version.
   8 *
   9 * This library is distributed in the hope that it will be useful,
  10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12 * Lesser General Public License for more details.
  13 *
  14 * You should have received a copy of the GNU Lesser General Public
  15 * License along with this library; if not, write to the Free Software
  16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17 */
  18
  19#ifndef __WINE_DXVA_H
  20#define __WINE_DXVA_H
  21
  22#ifdef __cplusplus
  23extern "C" {
  24#endif
  25
  26DEFINE_GUID(DXVA_ModeNone, 0x1b81be00, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  27DEFINE_GUID(DXVA_ModeH261_A, 0x1b81be01, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  28DEFINE_GUID(DXVA_ModeH261_B, 0x1b81be02, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  29
  30DEFINE_GUID(DXVA_ModeH263_A, 0x1b81be03, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  31DEFINE_GUID(DXVA_ModeH263_B, 0x1b81be04, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  32DEFINE_GUID(DXVA_ModeH263_C, 0x1b81be05, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  33DEFINE_GUID(DXVA_ModeH263_D, 0x1b81be06, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  34DEFINE_GUID(DXVA_ModeH263_E, 0x1b81be07, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  35DEFINE_GUID(DXVA_ModeH263_F, 0x1b81be08, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  36
  37DEFINE_GUID(DXVA_ModeMPEG1_A, 0x1b81be09, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  38DEFINE_GUID(DXVA_ModeMPEG1_VLD, 0x6f3ec719, 0x3735, 0x42cc, 0x80, 0x63, 0x65, 0xcc, 0x3c, 0xb3, 0x66, 0x16);
  39
  40DEFINE_GUID(DXVA_ModeMPEG2_A, 0x1b81be0a, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  41DEFINE_GUID(DXVA_ModeMPEG2_B, 0x1b81be0b, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  42DEFINE_GUID(DXVA_ModeMPEG2_C, 0x1b81be0c, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  43DEFINE_GUID(DXVA_ModeMPEG2_D, 0x1b81be0d, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  44DEFINE_GUID(DXVA_ModeMPEG2and1_VLD, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60);
  45
  46DEFINE_GUID(DXVA_ModeH264_A, 0x1b81be64, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  47DEFINE_GUID(DXVA_ModeH264_B, 0x1b81be65, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  48DEFINE_GUID(DXVA_ModeH264_C, 0x1b81be66, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  49DEFINE_GUID(DXVA_ModeH264_D, 0x1b81be67, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  50DEFINE_GUID(DXVA_ModeH264_E, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  51DEFINE_GUID(DXVA_ModeH264_F, 0x1b81be69, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  52DEFINE_GUID(DXVA_ModeH264_VLD_WithFMOASO_NoFGT, 0xd5f04ff9, 0x3418, 0x45d8, 0x95, 0x61, 0x32, 0xa7, 0x6a, 0xae, 0x2d, 0xdd);
  53
  54DEFINE_GUID(DXVA_ModeH264_VLD_Stereo_Progressive_NoFGT, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d);
  55DEFINE_GUID(DXVA_ModeH264_VLD_Stereo_NoFGT, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52);
  56DEFINE_GUID(DXVA_ModeH264_VLD_Multiview_NoFGT, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c);
  57
  58DEFINE_GUID(DXVA_ModeWMV8_A, 0x1b81be80, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  59DEFINE_GUID(DXVA_ModeWMV8_B, 0x1b81be81, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  60
  61DEFINE_GUID(DXVA_ModeWMV9_A, 0x1b81be90, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  62DEFINE_GUID(DXVA_ModeWMV9_B, 0x1b81be91, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  63DEFINE_GUID(DXVA_ModeWMV9_C, 0x1b81be94, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  64
  65DEFINE_GUID(DXVA_ModeVC1_A, 0x1b81bea0, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  66DEFINE_GUID(DXVA_ModeVC1_B, 0x1b81bea1, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  67DEFINE_GUID(DXVA_ModeVC1_C, 0x1b81bea2, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  68DEFINE_GUID(DXVA_ModeVC1_D, 0x1b81bea3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  69DEFINE_GUID(DXVA_ModeVC1_D2010, 0x1b81bea4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5);
  70
  71DEFINE_GUID(DXVA_ModeMPEG4pt2_VLD_Simple, 0xefd64d74, 0xc9e8, 0x41d7, 0xa5, 0xe9, 0xe9, 0xb0, 0xe3, 0x9f, 0xa3, 0x19);
  72DEFINE_GUID(DXVA_ModeMPEG4pt2_VLD_AdvSimple_NoGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e);
  73DEFINE_GUID(DXVA_ModeMPEG4pt2_VLD_AdvSimple_GMC, 0xab998b5b, 0x4258, 0x44a9, 0x9f, 0xeb, 0x94, 0xe5, 0x97, 0xa6, 0xba, 0xae);
  74
  75DEFINE_GUID(DXVA_ModeHEVC_VLD_Main, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0);
  76DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13);
  77DEFINE_GUID(DXVA_ModeHEVC_VLD_Monochrome, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4);
  78DEFINE_GUID(DXVA_ModeHEVC_VLD_Monochrome10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29);
  79DEFINE_GUID(DXVA_ModeHEVC_VLD_Main12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f);
  80DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb);
  81DEFINE_GUID(DXVA_ModeHEVC_VLD_Main12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee);
  82DEFINE_GUID(DXVA_ModeHEVC_VLD_Main_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33);
  83DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10_Ext, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c);
  84DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c);
  85DEFINE_GUID(DXVA_ModeHEVC_VLD_Main12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01);
  86DEFINE_GUID(DXVA_ModeHEVC_VLD_Main16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d);
  87
  88DEFINE_GUID(DXVA_ModeVP9_VLD_Profile0, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e);
  89DEFINE_GUID(DXVA_ModeVP9_VLD_10bit_Profile2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7);
  90DEFINE_GUID(DXVA_ModeVP8_VLD, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7);
  91
  92DEFINE_GUID(DXVA_ModeMJPEG_VLD_420, 0x725cb506, 0x0c29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x04);
  93DEFINE_GUID(DXVA_ModeMJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd);
  94DEFINE_GUID(DXVA_ModeMJPEG_VLD_444, 0xd95161f9, 0x0d44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97);
  95DEFINE_GUID(DXVA_ModeMJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d);
  96DEFINE_GUID(DXVA_ModeJPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac);
  97DEFINE_GUID(DXVA_ModeJPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21);
  98DEFINE_GUID(DXVA_ModeJPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65);
  99
 100DEFINE_GUID(DXVA_NoEncrypt, 0x1b81bed0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
 101
 102#define DXVA_ModeH264_MoComp_NoFGT  DXVA_ModeH264_A
 103#define DXVA_ModeH264_MoComp_FGT    DXVA_ModeH264_B
 104#define DXVA_ModeH264_IDCT_NoFGT    DXVA_ModeH264_C
 105#define DXVA_ModeH264_IDCT_FGT      DXVA_ModeH264_D
 106#define DXVA_ModeH264_VLD_NoFGT     DXVA_ModeH264_E
 107#define DXVA_ModeH264_VLD_FGT       DXVA_ModeH264_F
 108
 109#define DXVA_USUAL_BLOCK_WIDTH   8
 110#define DXVA_USUAL_BLOCK_HEIGHT  8
 111#define DXVA_USUAL_BLOCK_SIZE   (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT)
 112
 113#define DXVA_PICTURE_DECODING_FUNCTION          1
 114#define DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION     2
 115#define DXVA_ALPHA_BLEND_COMBINATION_FUNCTION   3
 116#define DXVA_PICTURE_RESAMPLE_FUNCTION          4
 117#define DXVA_DEBLOCKING_FILTER_FUNCTION         5
 118#define DXVA_FILM_GRAIN_SYNTHESIS_FUNCTION      6
 119#define DXVA_STATUS_REPORTING_FUNCTION          7
 120
 121#pragma pack(push,1)
 122
 123typedef struct _DXVA_PicEntry_H264
 124{
 125    union
 126    {
 127        struct
 128        {
 129            UCHAR Index7Bits     : 7;
 130            UCHAR AssociatedFlag : 1;
 131        } DUMMYSTRUCTNAME;
 132        UCHAR bPicEntry;
 133    } DUMMYUNIONNAME;
 134} DXVA_PicEntry_H264, *LPDXVA_PicEntry_H264;
 135
 136typedef struct _DXVA_FilmGrainCharacteristics
 137{
 138    USHORT  wFrameWidthInMbsMinus1;
 139    USHORT  wFrameHeightInMbsMinus1;
 140    DXVA_PicEntry_H264 InPic;
 141    DXVA_PicEntry_H264 OutPic;
 142    USHORT  PicOrderCnt_offset;
 143    INT     CurrPicOrderCnt;
 144    UINT    StatusReportFeedbackNumber;
 145    UCHAR   model_id;
 146    UCHAR   separate_colour_description_present_flag;
 147    UCHAR   film_grain_bit_depth_luma_minus8;
 148    UCHAR   film_grain_bit_depth_chroma_minus8;
 149    UCHAR   film_grain_full_range_flag;
 150    UCHAR   film_grain_colour_primaries;
 151    UCHAR   film_grain_transfer_characteristics;
 152    UCHAR   film_grain_matrix_coefficients;
 153    UCHAR   blending_mode_id;
 154    UCHAR   log2_scale_factor;
 155    UCHAR   comp_model_present_flag[4];
 156    UCHAR   num_intensity_intervals_minus1[4];
 157    UCHAR   num_model_values_minus1[4];
 158    UCHAR   intensity_interval_lower_bound[3][16];
 159    UCHAR   intensity_interval_upper_bound[3][16];
 160    SHORT   comp_model_value[3][16][8];
 161} DXVA_FilmGrainChar_H264, *LPDXVA_FilmGrainChar_H264;
 162
 163typedef struct _DXVA_PictureParameters
 164{
 165    WORD wDecodedPictureIndex;
 166    WORD wDeblockedPictureIndex;
 167    WORD wForwardRefPictureIndex;
 168    WORD wBackwardRefPictureIndex;
 169    WORD wPicWidthInMBminus1;
 170    WORD wPicHeightInMBminus1;
 171    BYTE bMacroblockWidthMinus1;
 172    BYTE bMacroblockHeightMinus1;
 173    BYTE bBlockWidthMinus1;
 174    BYTE bBlockHeightMinus1;
 175    BYTE bBPPminus1;
 176    BYTE bPicStructure;
 177    BYTE bSecondField;
 178    BYTE bPicIntra;
 179    BYTE bPicBackwardPrediction;
 180    BYTE bBidirectionalAveragingMode;
 181    BYTE bMVprecisionAndChromaRelation;
 182    BYTE bChromaFormat;
 183    BYTE bPicScanFixed;
 184    BYTE bPicScanMethod;
 185    BYTE bPicReadbackRequests;
 186    BYTE bRcontrol;
 187    BYTE bPicSpatialResid8;
 188    BYTE bPicOverflowBlocks;
 189    BYTE bPicExtrapolation;
 190    BYTE bPicDeblocked;
 191    BYTE bPicDeblockConfined;
 192    BYTE bPic4MVallowed;
 193    BYTE bPicOBMC;
 194    BYTE bPicBinPB;
 195    BYTE bMV_RPS;
 196    BYTE bReservedBits;
 197    WORD wBitstreamFcodes;
 198    WORD wBitstreamPCEelements;
 199    BYTE bBitstreamConcealmentNeed;
 200    BYTE bBitstreamConcealmentMethod;
 201} DXVA_PictureParameters, *LPDXVA_PictureParameters;
 202
 203typedef struct _DXVA_SliceInfo
 204{
 205    WORD wHorizontalPosition;
 206    WORD wVerticalPosition;
 207    DWORD dwSliceBitsInBuffer;
 208    DWORD dwSliceDataLocation;
 209    BYTE bStartCodeBitOffset;
 210    BYTE bReservedBits;
 211    WORD wMBbitOffset;
 212    WORD wNumberMBsInSlice;
 213    WORD wQuantizerScaleCode;
 214    WORD wBadSliceChopping;
 215} DXVA_SliceInfo, *LPDXVA_SliceInfo;
 216
 217typedef struct _DXVA_QmatrixData
 218{
 219    BYTE bNewQmatrix[4];
 220    WORD Qmatrix[4][DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT];
 221} DXVA_QmatrixData, *LPDXVA_QmatrixData;
 222
 223typedef struct _DXVA_PicParams_H264
 224{
 225    USHORT wFrameWidthInMbsMinus1;
 226    USHORT wFrameHeightInMbsMinus1;
 227    DXVA_PicEntry_H264 CurrPic;
 228    UCHAR num_ref_frames;
 229    union
 230    {
 231        struct
 232        {
 233            USHORT field_pic_flag                   : 1;
 234            USHORT MbaffFrameFlag                   : 1;
 235            USHORT residual_colour_transform_flag   : 1;
 236            USHORT sp_for_switch_flag               : 1;
 237            USHORT chroma_format_idc                : 2;
 238            USHORT RefPicFlag                       : 1;
 239            USHORT constrained_intra_pred_flag      : 1;
 240            USHORT weighted_pred_flag               : 1;
 241            USHORT weighted_bipred_idc              : 2;
 242            USHORT MbsConsecutiveFlag               : 1;
 243            USHORT frame_mbs_only_flag              : 1;
 244            USHORT transform_8x8_mode_flag          : 1;
 245            USHORT MinLumaBipredSize8x8Flag         : 1;
 246            USHORT IntraPicFlag                     : 1;
 247        } DUMMYSTRUCTNAME;
 248        USHORT wBitFields;
 249    } DUMMYUNIONNAME;
 250    UCHAR bit_depth_luma_minus8;
 251    UCHAR bit_depth_chroma_minus8;
 252    USHORT Reserved16Bits;
 253    UINT StatusReportFeedbackNumber;
 254    DXVA_PicEntry_H264 RefFrameList[16];
 255    INT CurrFieldOrderCnt[2];
 256    INT FieldOrderCntList[16][2];
 257    CHAR pic_init_qs_minus26;
 258    CHAR chroma_qp_index_offset;
 259    CHAR second_chroma_qp_index_offset;
 260    UCHAR ContinuationFlag;
 261    CHAR pic_init_qp_minus26;
 262    UCHAR num_ref_idx_l0_active_minus1;
 263    UCHAR num_ref_idx_l1_active_minus1;
 264    UCHAR Reserved8BitsA;
 265    USHORT FrameNumList[16];
 266
 267    UINT UsedForReferenceFlags;
 268    USHORT NonExistingFrameFlags;
 269    USHORT frame_num;
 270    UCHAR log2_max_frame_num_minus4;
 271    UCHAR pic_order_cnt_type;
 272    UCHAR log2_max_pic_order_cnt_lsb_minus4;
 273    UCHAR delta_pic_order_always_zero_flag;
 274    UCHAR direct_8x8_inference_flag;
 275    UCHAR entropy_coding_mode_flag;
 276    UCHAR pic_order_present_flag;
 277    UCHAR num_slice_groups_minus1;
 278    UCHAR slice_group_map_type;
 279    UCHAR deblocking_filter_control_present_flag;
 280    UCHAR redundant_pic_cnt_present_flag;
 281    UCHAR Reserved8BitsB;
 282    USHORT slice_group_change_rate_minus1;
 283    UCHAR SliceGroupMap[810];
 284} DXVA_PicParams_H264, *LPDXVA_PicParams_H264;
 285
 286typedef struct _DXVA_Qmatrix_H264
 287{
 288    UCHAR bScalingLists4x4[6][16];
 289    UCHAR bScalingLists8x8[2][64];
 290} DXVA_Qmatrix_H264, *LPDXVA_Qmatrix_H264;
 291
 292typedef struct _DXVA_Slice_H264_Long
 293{
 294    UINT BSNALunitDataLocation;
 295    UINT SliceBytesInBuffer;
 296    USHORT wBadSliceChopping;
 297    USHORT first_mb_in_slice;
 298    USHORT NumMbsForSlice;
 299    USHORT BitOffsetToSliceData;
 300    UCHAR slice_type;
 301    UCHAR luma_log2_weight_denom;
 302    UCHAR chroma_log2_weight_denom;
 303
 304    UCHAR num_ref_idx_l0_active_minus1;
 305    UCHAR num_ref_idx_l1_active_minus1;
 306    CHAR slice_alpha_c0_offset_div2;
 307    CHAR slice_beta_offset_div2;
 308    UCHAR Reserved8Bits;
 309    DXVA_PicEntry_H264 RefPicList[2][32];
 310    SHORT Weights[2][32][3][2];
 311    CHAR slice_qs_delta;
 312    CHAR slice_qp_delta;
 313    UCHAR redundant_pic_cnt;
 314    UCHAR direct_spatial_mv_pred_flag;
 315    UCHAR cabac_init_idc;
 316    UCHAR disable_deblocking_filter_idc;
 317    USHORT slice_id;
 318} DXVA_Slice_H264_Long, *LPDXVA_Slice_H264_Long;
 319
 320typedef struct _DXVA_Slice_H264_Short
 321{
 322    UINT BSNALunitDataLocation;
 323    UINT SliceBytesInBuffer;
 324    USHORT wBadSliceChopping;
 325} DXVA_Slice_H264_Short, *LPDXVA_Slice_H264_Short;
 326
 327typedef struct _DXVA_Status_H264
 328{
 329    UINT StatusReportFeedbackNumber;
 330    DXVA_PicEntry_H264 CurrPic;
 331    UCHAR field_pic_flag;
 332    UCHAR bDXVA_Func;
 333    UCHAR bBufType;
 334    UCHAR bStatus;
 335    UCHAR bReserved8Bits;
 336    USHORT wNumMbsAffected;
 337} DXVA_Status_H264, *LPDXVA_Status_H264;
 338
 339typedef struct _DXVA_PicEntry_HEVC
 340{
 341    union
 342    {
 343        struct
 344        {
 345            UCHAR Index7Bits : 7;
 346            UCHAR AssociatedFlag : 1;
 347        };
 348        UCHAR bPicEntry;
 349    };
 350} DXVA_PicEntry_HEVC, *LPDXVA_PicEntry_HEVC;
 351
 352typedef struct _DXVA_PicParams_HEVC
 353{
 354    USHORT      PicWidthInMinCbsY;
 355    USHORT      PicHeightInMinCbsY;
 356    union
 357    {
 358        struct
 359        {
 360            USHORT  chroma_format_idc                       : 2;
 361            USHORT  separate_colour_plane_flag              : 1;
 362            USHORT  bit_depth_luma_minus8                   : 3;
 363            USHORT  bit_depth_chroma_minus8                 : 3;
 364            USHORT  log2_max_pic_order_cnt_lsb_minus4       : 4;
 365            USHORT  NoPicReorderingFlag                     : 1;
 366            USHORT  NoBiPredFlag                            : 1;
 367            USHORT  ReservedBits1                            : 1;
 368        };
 369        USHORT wFormatAndSequenceInfoFlags;
 370    };
 371    DXVA_PicEntry_HEVC  CurrPic;
 372    UCHAR   sps_max_dec_pic_buffering_minus1;
 373    UCHAR   log2_min_luma_coding_block_size_minus3;
 374    UCHAR   log2_diff_max_min_luma_coding_block_size;
 375    UCHAR   log2_min_transform_block_size_minus2;
 376    UCHAR   log2_diff_max_min_transform_block_size;
 377    UCHAR   max_transform_hierarchy_depth_inter;
 378    UCHAR   max_transform_hierarchy_depth_intra;
 379    UCHAR   num_short_term_ref_pic_sets;
 380    UCHAR   num_long_term_ref_pics_sps;
 381    UCHAR   num_ref_idx_l0_default_active_minus1;
 382    UCHAR   num_ref_idx_l1_default_active_minus1;
 383    CHAR    init_qp_minus26;
 384    UCHAR   ucNumDeltaPocsOfRefRpsIdx;
 385    USHORT  wNumBitsForShortTermRPSInSlice;
 386    USHORT  ReservedBits2;
 387
 388    union
 389    {
 390        struct
 391        {
 392            UINT32  scaling_list_enabled_flag                    : 1;
 393            UINT32  amp_enabled_flag                            : 1;
 394            UINT32  sample_adaptive_offset_enabled_flag         : 1;
 395            UINT32  pcm_enabled_flag                            : 1;
 396            UINT32  pcm_sample_bit_depth_luma_minus1            : 4;
 397            UINT32  pcm_sample_bit_depth_chroma_minus1          : 4;
 398            UINT32  log2_min_pcm_luma_coding_block_size_minus3  : 2;
 399            UINT32  log2_diff_max_min_pcm_luma_coding_block_size : 2;
 400            UINT32  pcm_loop_filter_disabled_flag                : 1;
 401            UINT32  long_term_ref_pics_present_flag             : 1;
 402            UINT32  sps_temporal_mvp_enabled_flag               : 1;
 403            UINT32  strong_intra_smoothing_enabled_flag         : 1;
 404            UINT32  dependent_slice_segments_enabled_flag       : 1;
 405            UINT32  output_flag_present_flag                    : 1;
 406            UINT32  num_extra_slice_header_bits                 : 3;
 407            UINT32  sign_data_hiding_enabled_flag               : 1;
 408            UINT32  cabac_init_present_flag                     : 1;
 409            UINT32  ReservedBits3                               : 5;
 410        };
 411        UINT32 dwCodingParamToolFlags;
 412    };
 413
 414    union
 415    {
 416        struct
 417        {
 418            UINT32  constrained_intra_pred_flag                 : 1;
 419            UINT32  transform_skip_enabled_flag                 : 1;
 420            UINT32  cu_qp_delta_enabled_flag                    : 1;
 421            UINT32  pps_slice_chroma_qp_offsets_present_flag    : 1;
 422            UINT32  weighted_pred_flag                          : 1;
 423            UINT32  weighted_bipred_flag                        : 1;
 424            UINT32  transquant_bypass_enabled_flag              : 1;
 425            UINT32  tiles_enabled_flag                          : 1;
 426            UINT32  entropy_coding_sync_enabled_flag            : 1;
 427            UINT32  uniform_spacing_flag                        : 1;
 428            UINT32  loop_filter_across_tiles_enabled_flag       : 1;
 429            UINT32  pps_loop_filter_across_slices_enabled_flag  : 1;
 430            UINT32  deblocking_filter_override_enabled_flag     : 1;
 431            UINT32  pps_deblocking_filter_disabled_flag         : 1;
 432            UINT32  lists_modification_present_flag             : 1;
 433            UINT32  slice_segment_header_extension_present_flag : 1;
 434            UINT32  IrapPicFlag                                 : 1;
 435            UINT32  IdrPicFlag                                  : 1;
 436            UINT32  IntraPicFlag                                : 1;
 437            UINT32  ReservedBits4                               : 13;
 438        };
 439        UINT32 dwCodingSettingPicturePropertyFlags;
 440    };
 441    CHAR    pps_cb_qp_offset;
 442    CHAR    pps_cr_qp_offset;
 443    UCHAR   num_tile_columns_minus1;
 444    UCHAR   num_tile_rows_minus1;
 445    USHORT  column_width_minus1[19];
 446    USHORT  row_height_minus1[21];
 447    UCHAR   diff_cu_qp_delta_depth;
 448    CHAR    pps_beta_offset_div2;
 449    CHAR    pps_tc_offset_div2;
 450    UCHAR   log2_parallel_merge_level_minus2;
 451    INT     CurrPicOrderCntVal;
 452    DXVA_PicEntry_HEVC	RefPicList[15];
 453    UCHAR   ReservedBits5;
 454    INT     PicOrderCntValList[15];
 455    UCHAR   RefPicSetStCurrBefore[8];
 456    UCHAR   RefPicSetStCurrAfter[8];
 457    UCHAR   RefPicSetLtCurr[8];
 458    USHORT  ReservedBits6;
 459    USHORT  ReservedBits7;
 460    UINT    StatusReportFeedbackNumber;
 461} DXVA_PicParams_HEVC, *LPDXVA_PicParams_HEVC;
 462
 463typedef struct _DXVA_PicParams_HEVC_RangeExt
 464{
 465    DXVA_PicParams_HEVC params;
 466    union
 467    {
 468        struct
 469        {
 470            USHORT transform_skip_rotation_enabled_flag    : 1;
 471            USHORT transform_skip_context_enabled_flag     : 1;
 472            USHORT implicit_rdpcm_enabled_flag             : 1;
 473            USHORT explicit_rdpcm_enabled_flag             : 1;
 474            USHORT extended_precision_processing_flag      : 1;
 475            USHORT intra_smoothing_disabled_flag           : 1;
 476            USHORT persistent_rice_adaptation_enabled_flag : 1;
 477            USHORT high_precision_offsets_enabled_flag     : 1;
 478            USHORT cabac_bypass_alignment_enabled_flag     : 1;
 479            USHORT cross_component_prediction_enabled_flag : 1;
 480            USHORT chroma_qp_offset_list_enabled_flag      : 1;
 481            USHORT ReservedBits8                           : 5;
 482        };
 483        USHORT dwRangeExtensionFlags;
 484    };
 485    UCHAR diff_cu_chroma_qp_offset_depth;
 486    UCHAR log2_sao_offset_scale_luma;
 487    UCHAR log2_sao_offset_scale_chroma;
 488    UCHAR log2_max_transform_skip_block_size_minus2;
 489    CHAR cb_qp_offset_list[6];
 490    CHAR cr_qp_offset_list[6];
 491    UCHAR chroma_qp_offset_list_len_minus1;
 492    USHORT ReservedBits9;
 493} DXVA_PicParams_HEVC_RangeExt, *LPDXVA_PicParams_HEVC_RangeExt;
 494
 495typedef struct _DXVA_Qmatrix_HEVC
 496{
 497    UCHAR ucScalingLists0[6][16];
 498    UCHAR ucScalingLists1[6][64];
 499    UCHAR ucScalingLists2[6][64];
 500    UCHAR ucScalingLists3[2][64];
 501    UCHAR ucScalingListDCCoefSizeID2[6];
 502    UCHAR ucScalingListDCCoefSizeID3[2];
 503} DXVA_Qmatrix_HEVC, *LPDXVA_Qmatrix_HEVC;
 504
 505typedef struct _DXVA_Slice_HEVC_Short
 506{
 507    UINT    BSNALunitDataLocation;
 508    UINT    SliceBytesInBuffer;
 509    USHORT  wBadSliceChopping;
 510} DXVA_Slice_HEVC_Short, *LPDXVA_Slice_HEVC_Short;
 511
 512typedef struct _DXVA_PicEntry_VPx
 513{
 514    union
 515    {
 516        struct
 517        {
 518            UCHAR Index7Bits     : 7;
 519            UCHAR AssociatedFlag : 1;
 520        };
 521        UCHAR bPicEntry;
 522    };
 523} DXVA_PicEntry_VPx, *LPDXVA_PicEntry_VPx;
 524
 525typedef struct _segmentation_VP9
 526{
 527    union
 528    {
 529        struct
 530        {
 531            UCHAR enabled                   : 1;
 532            UCHAR update_map                : 1;
 533            UCHAR temporal_update           : 1;
 534            UCHAR abs_delta                 : 1;
 535            UCHAR ReservedSegmentFlags4Bits : 4;
 536        };
 537        UCHAR wSegmentInfoFlags;
 538    };
 539    UCHAR tree_probs[7];
 540    UCHAR pred_probs[3];
 541    SHORT feature_data[8][4];
 542    UCHAR feature_mask[8];
 543} DXVA_segmentation_VP9;
 544
 545typedef struct _DXVA_PicParams_VP9
 546{
 547    DXVA_PicEntry_VPx    CurrPic;
 548    UCHAR                profile;
 549    union
 550    {
 551        struct
 552        {
 553            USHORT frame_type                   : 1;
 554            USHORT show_frame                   : 1;
 555            USHORT error_resilient_mode         : 1;
 556            USHORT subsampling_x                : 1;
 557            USHORT subsampling_y                : 1;
 558            USHORT extra_plane                  : 1;
 559            USHORT refresh_frame_context        : 1;
 560            USHORT frame_parallel_decoding_mode : 1;
 561            USHORT intra_only                   : 1;
 562            USHORT frame_context_idx            : 2;
 563            USHORT reset_frame_context          : 2;
 564            USHORT allow_high_precision_mv      : 1;
 565            USHORT ReservedFormatInfo2Bits      : 2;
 566        };
 567        USHORT wFormatAndPictureInfoFlags;
 568    };
 569    UINT  width;
 570    UINT  height;
 571    UCHAR BitDepthMinus8Luma;
 572    UCHAR BitDepthMinus8Chroma;
 573    UCHAR interp_filter;
 574    UCHAR Reserved8Bits;
 575    DXVA_PicEntry_VPx  ref_frame_map[8];
 576    UINT  ref_frame_coded_width[8];
 577    UINT  ref_frame_coded_height[8];
 578    DXVA_PicEntry_VPx  frame_refs[3];
 579    CHAR  ref_frame_sign_bias[4];
 580    CHAR  filter_level;
 581    CHAR  sharpness_level;
 582    union
 583    {
 584        struct
 585        {
 586            UCHAR mode_ref_delta_enabled   : 1;
 587            UCHAR mode_ref_delta_update    : 1;
 588            UCHAR use_prev_in_find_mv_refs : 1;
 589            UCHAR ReservedControlInfo5Bits : 5;
 590        };
 591        UCHAR wControlInfoFlags;
 592    };
 593    CHAR   ref_deltas[4];
 594    CHAR   mode_deltas[2];
 595    SHORT  base_qindex;
 596    CHAR   y_dc_delta_q;
 597    CHAR   uv_dc_delta_q;
 598    CHAR   uv_ac_delta_q;
 599    DXVA_segmentation_VP9 stVP9Segments;
 600    UCHAR  log2_tile_cols;
 601    UCHAR  log2_tile_rows;
 602    USHORT uncompressed_header_size_byte_aligned;
 603    USHORT first_partition_size;
 604    USHORT Reserved16Bits;
 605    UINT   Reserved32Bits;
 606    UINT   StatusReportFeedbackNumber;
 607} DXVA_PicParams_VP9, *LPDXVA_PicParams_VP9;
 608
 609typedef struct _segmentation_VP8
 610{
 611    union
 612    {
 613        struct
 614        {
 615            UCHAR segmentation_enabled        : 1;
 616            UCHAR update_mb_segmentation_map  : 1;
 617            UCHAR update_mb_segmentation_data : 1;
 618            UCHAR mb_segement_abs_delta       : 1;
 619            UCHAR ReservedSegmentFlags4Bits   : 4;
 620        };
 621        UCHAR wSegmentFlags;
 622    };
 623    CHAR  segment_feature_data[2][4];
 624    UCHAR mb_segment_tree_probs[3];
 625} DXVA_segmentation_VP8;
 626
 627typedef struct _DXVA_PicParams_VP8
 628{
 629    UINT first_part_size;
 630    UINT width;
 631    UINT height;
 632    DXVA_PicEntry_VPx  CurrPic;
 633    union
 634    {
 635        struct
 636        {
 637            UCHAR frame_type            : 1;
 638            UCHAR version               : 3;
 639            UCHAR show_frame            : 1;
 640            UCHAR clamp_type            : 1;
 641            UCHAR ReservedFrameTag3Bits : 2;
 642        };
 643        UCHAR wFrameTagFlags;
 644    };
 645    DXVA_segmentation_VP8  stVP8Segments;
 646    UCHAR  filter_type;
 647    UCHAR  filter_level;
 648    UCHAR  sharpness_level;
 649    UCHAR  mode_ref_lf_delta_enabled;
 650    UCHAR  mode_ref_lf_delta_update;
 651    CHAR   ref_lf_deltas[4];
 652    CHAR   mode_lf_deltas[4];
 653    UCHAR  log2_nbr_of_dct_partitions;
 654    UCHAR  base_qindex;
 655    CHAR   y1dc_delta_q;
 656    CHAR   y2dc_delta_q;
 657    CHAR   y2ac_delta_q;
 658    CHAR   uvdc_delta_q;
 659    CHAR   uvac_delta_q;
 660    DXVA_PicEntry_VPx alt_fb_idx;
 661    DXVA_PicEntry_VPx gld_fb_idx;
 662    DXVA_PicEntry_VPx lst_fb_idx;
 663    UCHAR  ref_frame_sign_bias_golden;
 664    UCHAR  ref_frame_sign_bias_altref;
 665    UCHAR  refresh_entropy_probs;
 666    UCHAR  vp8_coef_update_probs[4][8][3][11];
 667    UCHAR  mb_no_coeff_skip;
 668    UCHAR  prob_skip_false;
 669    UCHAR  prob_intra;
 670    UCHAR  prob_last;
 671    UCHAR  prob_golden;
 672    UCHAR  intra_16x16_prob[4];
 673    UCHAR  intra_chroma_prob[3];
 674    UCHAR  vp8_mv_update_probs[2][19];
 675    USHORT ReservedBits1;
 676    USHORT ReservedBits2;
 677    USHORT ReservedBits3;
 678    UINT   StatusReportFeedbackNumber;
 679} DXVA_PicParams_VP8, *LPDXVA_PicParams_VP8;
 680
 681typedef struct _DXVA_Slice_VPx_Short
 682{
 683    UINT   BSNALunitDataLocation;
 684    UINT   SliceBytesInBuffer;
 685    USHORT wBadSliceChopping;
 686} DXVA_Slice_VPx_Short, *LPDXVA_Slice_VPx_Short;
 687
 688typedef struct _DXVA_Status_VPx
 689{
 690    UINT   StatusReportFeedbackNumber;
 691    DXVA_PicEntry_VPx CurrPic;
 692    UCHAR  bBufType;
 693    UCHAR  bStatus;
 694    UCHAR  bReserved8Bits;
 695    USHORT wNumMbsAffected;
 696} DXVA_Status_VPx, *LPDXVA_Status_VPx;
 697
 698
 699#define _DIRECTX_AV1_VA_
 700
 701/* AV1 decoder GUIDs */
 702DEFINE_GUID(DXVA_ModeAV1_VLD_Profile0,           0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
 703DEFINE_GUID(DXVA_ModeAV1_VLD_Profile1,           0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
 704DEFINE_GUID(DXVA_ModeAV1_VLD_Profile2,           0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
 705DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2,     0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
 706DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
 707
 708/* AV1 picture entry data structure */
 709typedef struct _DXVA_PicEntry_AV1 {
 710    UINT width;
 711    UINT height;
 712
 713    INT wmmat[6];
 714    __C89_NAMELESS union {
 715        __C89_NAMELESS struct {
 716            UCHAR wminvalid : 1;
 717            UCHAR wmtype : 2;
 718            UCHAR Reserved : 5;
 719        } __C89_NAMELESSSTRUCTNAME;
 720        UCHAR GlobalMotionFlags;
 721    } __C89_NAMELESSUNIONNAME;
 722    UCHAR Index;
 723    UINT16 Reserved16Bits;
 724} DXVA_PicEntry_AV1, *LPDXVA_PicEntry_AV1;
 725
 726/* AV1 picture parameters data structure */
 727typedef struct _DXVA_PicParams_AV1 {
 728    UINT width;
 729    UINT height;
 730
 731    UINT max_width;
 732    UINT max_height;
 733
 734    UCHAR CurrPicTextureIndex;
 735    UCHAR superres_denom;
 736    UCHAR bitdepth;
 737    UCHAR seq_profile;
 738
 739    struct {
 740        UCHAR cols;
 741        UCHAR rows;
 742        USHORT context_update_id;
 743        USHORT widths[64];
 744        USHORT heights[64];
 745    } tiles;
 746
 747    union {
 748        __C89_NAMELESS struct {
 749            UINT use_128x128_superblock : 1;
 750            UINT intra_edge_filter : 1;
 751            UINT interintra_compound : 1;
 752            UINT masked_compound : 1;
 753            UINT warped_motion : 1;
 754            UINT dual_filter : 1;
 755            UINT jnt_comp : 1;
 756            UINT screen_content_tools : 1;
 757            UINT integer_mv : 1;
 758            UINT cdef : 1;
 759            UINT restoration : 1;
 760            UINT film_grain : 1;
 761            UINT intrabc : 1;
 762            UINT high_precision_mv : 1;
 763            UINT switchable_motion_mode : 1;
 764            UINT filter_intra : 1;
 765            UINT disable_frame_end_update_cdf : 1;
 766            UINT disable_cdf_update : 1;
 767            UINT reference_mode : 1;
 768            UINT skip_mode : 1;
 769            UINT reduced_tx_set : 1;
 770            UINT superres : 1;
 771            UINT tx_mode : 2;
 772            UINT use_ref_frame_mvs : 1;
 773            UINT enable_ref_frame_mvs : 1;
 774            UINT reference_frame_update : 1;
 775            UINT Reserved : 5;
 776        } __C89_NAMELESSSTRUCTNAME;
 777        UINT32 CodingParamToolFlags;
 778    } coding;
 779
 780    union {
 781        __C89_NAMELESS struct {
 782            UCHAR frame_type : 2;
 783            UCHAR show_frame : 1;
 784            UCHAR showable_frame : 1;
 785            UCHAR subsampling_x : 1;
 786            UCHAR subsampling_y : 1;
 787            UCHAR mono_chrome : 1;
 788            UCHAR Reserved : 1;
 789        } __C89_NAMELESSSTRUCTNAME;
 790        UCHAR FormatAndPictureInfoFlags;
 791    } format;
 792
 793    UCHAR primary_ref_frame;
 794    UCHAR order_hint;
 795    UCHAR order_hint_bits;
 796
 797    DXVA_PicEntry_AV1 frame_refs[7];
 798    UCHAR RefFrameMapTextureIndex[8];
 799
 800    struct {
 801        UCHAR filter_level[2];
 802        UCHAR filter_level_u;
 803        UCHAR filter_level_v;
 804
 805        UCHAR sharpness_level;
 806        __C89_NAMELESS union {
 807            __C89_NAMELESS struct {
 808                UCHAR mode_ref_delta_enabled : 1;
 809                UCHAR mode_ref_delta_update : 1;
 810                UCHAR delta_lf_multi : 1;
 811                UCHAR delta_lf_present : 1;
 812                UCHAR Reserved : 4;
 813            } __C89_NAMELESSSTRUCTNAME;
 814            UCHAR ControlFlags;
 815        } __C89_NAMELESSUNIONNAME;
 816        CHAR ref_deltas[8];
 817        CHAR mode_deltas[2];
 818        UCHAR delta_lf_res;
 819        UCHAR frame_restoration_type[3];
 820        USHORT log2_restoration_unit_size[3];
 821        UINT16 Reserved16Bits;
 822    } loop_filter;
 823
 824    struct {
 825        __C89_NAMELESS union {
 826            __C89_NAMELESS struct {
 827                UCHAR delta_q_present : 1;
 828                UCHAR delta_q_res : 2;
 829                UCHAR Reserved : 5;
 830            } __C89_NAMELESSSTRUCTNAME;
 831            UCHAR ControlFlags;
 832        } __C89_NAMELESSUNIONNAME;
 833
 834        UCHAR base_qindex;
 835        CHAR y_dc_delta_q;
 836        CHAR u_dc_delta_q;
 837        CHAR v_dc_delta_q;
 838        CHAR u_ac_delta_q;
 839        CHAR v_ac_delta_q;
 840        UCHAR qm_y;
 841        UCHAR qm_u;
 842        UCHAR qm_v;
 843        UINT16 Reserved16Bits;
 844    } quantization;
 845
 846    struct {
 847        __C89_NAMELESS union {
 848            __C89_NAMELESS struct {
 849                UCHAR damping : 2;
 850                UCHAR bits : 2;
 851                UCHAR Reserved : 4;
 852            } __C89_NAMELESSSTRUCTNAME;
 853            UCHAR ControlFlags;
 854        } __C89_NAMELESSUNIONNAME;
 855
 856        union {
 857            __C89_NAMELESS struct {
 858                UCHAR primary : 6;
 859                UCHAR secondary : 2;
 860            } __C89_NAMELESSSTRUCTNAME;
 861            UCHAR combined;
 862        } y_strengths[8];
 863
 864        union {
 865            __C89_NAMELESS struct {
 866                UCHAR primary : 6;
 867                UCHAR secondary : 2;
 868            } __C89_NAMELESSSTRUCTNAME;
 869            UCHAR combined;
 870        } uv_strengths[8];
 871
 872    } cdef;
 873
 874    UCHAR interp_filter;
 875
 876    struct {
 877        __C89_NAMELESS union {
 878            __C89_NAMELESS struct {
 879                UCHAR enabled : 1;
 880                UCHAR update_map : 1;
 881                UCHAR update_data : 1;
 882                UCHAR temporal_update : 1;
 883                UCHAR Reserved : 4;
 884            } __C89_NAMELESSSTRUCTNAME;
 885            UCHAR ControlFlags;
 886        } __C89_NAMELESSUNIONNAME;
 887        UCHAR Reserved24Bits[3];
 888
 889        union {
 890            __C89_NAMELESS struct {
 891                UCHAR alt_q : 1;
 892                UCHAR alt_lf_y_v : 1;
 893                UCHAR alt_lf_y_h : 1;
 894                UCHAR alt_lf_u : 1;
 895                UCHAR alt_lf_v : 1;
 896                UCHAR ref_frame : 1;
 897                UCHAR skip : 1;
 898                UCHAR globalmv : 1;
 899            } __C89_NAMELESSSTRUCTNAME;
 900            UCHAR mask;
 901        } feature_mask[8];
 902
 903        SHORT feature_data[8][8];
 904
 905    } segmentation;
 906
 907    struct {
 908        __C89_NAMELESS union {
 909            __C89_NAMELESS struct {
 910                USHORT apply_grain : 1;
 911                USHORT scaling_shift_minus8 : 2;
 912                USHORT chroma_scaling_from_luma : 1;
 913                USHORT ar_coeff_lag : 2;
 914                USHORT ar_coeff_shift_minus6 : 2;
 915                USHORT grain_scale_shift : 2;
 916                USHORT overlap_flag : 1;
 917                USHORT clip_to_restricted_range : 1;
 918                USHORT matrix_coeff_is_identity : 1;
 919                USHORT Reserved : 3;
 920            } __C89_NAMELESSSTRUCTNAME;
 921            USHORT ControlFlags;
 922        } __C89_NAMELESSUNIONNAME;
 923
 924        USHORT grain_seed;
 925        UCHAR scaling_points_y[14][2];
 926        UCHAR num_y_points;
 927        UCHAR scaling_points_cb[10][2];
 928        UCHAR num_cb_points;
 929        UCHAR scaling_points_cr[10][2];
 930        UCHAR num_cr_points;
 931        UCHAR ar_coeffs_y[24];
 932        UCHAR ar_coeffs_cb[25];
 933        UCHAR ar_coeffs_cr[25];
 934        UCHAR cb_mult;
 935        UCHAR cb_luma_mult;
 936        UCHAR cr_mult;
 937        UCHAR cr_luma_mult;
 938        UCHAR Reserved8Bits;
 939        SHORT cb_offset;
 940        SHORT cr_offset;
 941    } film_grain;
 942
 943    UINT   Reserved32Bits;
 944    UINT   StatusReportFeedbackNumber;
 945} DXVA_PicParams_AV1, *LPDXVA_PicParams_AV1;
 946
 947/* AV1 tile data structure */
 948typedef struct _DXVA_Tile_AV1 {
 949    UINT   DataOffset;
 950    UINT   DataSize;
 951    USHORT row;
 952    USHORT column;
 953    UINT16 Reserved16Bits;
 954    UCHAR  anchor_frame;
 955    UCHAR  Reserved8Bits;
 956} DXVA_Tile_AV1, *LPDXVA_Tile_AV1;
 957
 958typedef struct _DXVA_Status_AV1 {
 959    UINT  StatusReportFeedbackNumber;
 960    DXVA_PicEntry_AV1 CurrPic;
 961    UCHAR  BufType;
 962    UCHAR  Status;
 963    UCHAR  Reserved8Bits;
 964    USHORT NumMbsAffected;
 965} DXVA_Status_AV1, *LPDXVA_Status_AV1;
 966
 967#pragma pack(pop)
 968
 969typedef enum _DXVA_VideoChromaSubsampling
 970{
 971    DXVA_VideoChromaSubsampling_Vertically_AlignedChromaPlanes  = 0x1,
 972    DXVA_VideoChromaSubsampling_Vertically_Cosited              = 0x2,
 973    DXVA_VideoChromaSubsampling_Horizontally_Cosited            = 0x4,
 974    DXVA_VideoChromaSubsampling_ProgressiveChroma               = 0x8,
 975
 976    DXVA_VideoChromaSubsampling_Unknown = 0,
 977    DXVA_VideoChromaSubsampling_Cosited = DXVA_VideoChromaSubsampling_Vertically_AlignedChromaPlanes
 978            | DXVA_VideoChromaSubsampling_Vertically_Cosited
 979            | DXVA_VideoChromaSubsampling_Horizontally_Cosited,
 980    DXVA_VideoChromaSubsampling_DV_PAL = DXVA_VideoChromaSubsampling_Vertically_Cosited
 981            | DXVA_VideoChromaSubsampling_Horizontally_Cosited,
 982    DXVA_VideoChromaSubsampling_MPEG1 = DXVA_VideoChromaSubsampling_Vertically_AlignedChromaPlanes,
 983    DXVA_VideoChromaSubsampling_MPEG2 = DXVA_VideoChromaSubsampling_Vertically_AlignedChromaPlanes
 984            | DXVA_VideoChromaSubsampling_Horizontally_Cosited,
 985} DXVA_VideoChromaSubsampling;
 986
 987typedef enum _DXVA_NominalRange
 988{
 989    DXVA_NominalRange_Unknown = 0,
 990    DXVA_NominalRange_0_255 = 1,
 991    DXVA_NominalRange_16_235 = 2,
 992    DXVA_NominalRange_48_208 = 3,
 993    DXVA_NominalRange_Normal = DXVA_NominalRange_0_255,
 994    DXVA_NominalRange_Wide = DXVA_NominalRange_16_235,
 995} DXVA_NominalRange;
 996
 997typedef enum _DXVA_VideoTransferMatrix
 998{
 999    DXVA_VideoTransferMatrix_Unknown = 0,
1000    DXVA_VideoTransferMatrix_BT709 = 1,
1001    DXVA_VideoTransferMatrix_BT601 = 2,
1002    DXVA_VideoTransferMatrix_SMPTE240M = 3,
1003} DXVA_VideoTransferMatrix;
1004
1005typedef enum _DXVA_VideoLighting
1006{
1007    DXVA_VideoLighting_Unknown = 0,
1008    DXVA_VideoLighting_bright = 1,
1009    DXVA_VideoLighting_office = 2,
1010    DXVA_VideoLighting_dim = 3,
1011    DXVA_VideoLighting_dark = 4,
1012} DXVA_VideoLighting;
1013
1014typedef enum _DXVA_VideoPrimaries
1015{
1016    DXVA_VideoPrimaries_Unknown = 0,
1017    DXVA_VideoPrimaries_reserved = 1,
1018    DXVA_VideoPrimaries_BT709 = 2,
1019    DXVA_VideoPrimaries_BT470_2_SysM = 3,
1020    DXVA_VideoPrimaries_BT470_2_SysBG = 4,
1021    DXVA_VideoPrimaries_SMPTE170M = 5,
1022    DXVA_VideoPrimaries_SMPTE420M = 6,
1023    DXVA_VideoPrimaries_EBU3213 = 7,
1024    DXVA_VideoPrimaries_SMPTE_C = 8,
1025} DXVA_VideoPrimaries;
1026
1027typedef enum _DXVA_VideoTransferFunction
1028{
1029    DXVA_VideoTransFunc_Unknown = 0,
1030    DXVA_VideoTransFunc_10 = 1,
1031    DXVA_VideoTransFunc_18 = 2,
1032    DXVA_VideoTransFunc_20 = 3,
1033    DXVA_VideoTransFunc_22 = 4,
1034    DXVA_VideoTransFunc_22_709 = 5,
1035    DXVA_VideoTransFunc_22_240M = 6,
1036    DXVA_VideoTransFunc_22_8bit_sRGB = 7,
1037    DXVA_VideoTransFunc_28 = 8,
1038} DXVA_VideoTransferFunction;
1039
1040typedef struct _DXVA_ExtendedFormat
1041{
1042    UINT SampleFormat : 8;
1043    UINT VideoChromaSubsampling : 4;
1044    DXVA_NominalRange NominalRange : 3;
1045    DXVA_VideoTransferMatrix VideoTransferMatrix : 3;
1046    DXVA_VideoLighting VideoLighting : 4;
1047    DXVA_VideoPrimaries VideoPrimaries : 5;
1048    DXVA_VideoTransferFunction VideoTransferFunction : 5;
1049} DXVA_ExtendedFormat;
1050
1051#ifdef __cplusplus
1052}
1053#endif
1054
1055#endif /* __WINE_DXVA_H */