master
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 */