| 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 |
| 23 | extern "C" { |
| 24 | #endif |
| 25 | |
| 26 | DEFINE_GUID(DXVA_ModeNone, 0x1b81be00, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 27 | DEFINE_GUID(DXVA_ModeH261_A, 0x1b81be01, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 28 | DEFINE_GUID(DXVA_ModeH261_B, 0x1b81be02, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 29 | |
| 30 | DEFINE_GUID(DXVA_ModeH263_A, 0x1b81be03, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 31 | DEFINE_GUID(DXVA_ModeH263_B, 0x1b81be04, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 32 | DEFINE_GUID(DXVA_ModeH263_C, 0x1b81be05, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 33 | DEFINE_GUID(DXVA_ModeH263_D, 0x1b81be06, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 34 | DEFINE_GUID(DXVA_ModeH263_E, 0x1b81be07, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 35 | DEFINE_GUID(DXVA_ModeH263_F, 0x1b81be08, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 36 | |
| 37 | DEFINE_GUID(DXVA_ModeMPEG1_A, 0x1b81be09, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 38 | DEFINE_GUID(DXVA_ModeMPEG1_VLD, 0x6f3ec719, 0x3735, 0x42cc, 0x80, 0x63, 0x65, 0xcc, 0x3c, 0xb3, 0x66, 0x16); |
| 39 | |
| 40 | DEFINE_GUID(DXVA_ModeMPEG2_A, 0x1b81be0a, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 41 | DEFINE_GUID(DXVA_ModeMPEG2_B, 0x1b81be0b, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 42 | DEFINE_GUID(DXVA_ModeMPEG2_C, 0x1b81be0c, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 43 | DEFINE_GUID(DXVA_ModeMPEG2_D, 0x1b81be0d, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 44 | DEFINE_GUID(DXVA_ModeMPEG2and1_VLD, 0x86695f12, 0x340e, 0x4f04, 0x9f, 0xd3, 0x92, 0x53, 0xdd, 0x32, 0x74, 0x60); |
| 45 | |
| 46 | DEFINE_GUID(DXVA_ModeH264_A, 0x1b81be64, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 47 | DEFINE_GUID(DXVA_ModeH264_B, 0x1b81be65, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 48 | DEFINE_GUID(DXVA_ModeH264_C, 0x1b81be66, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 49 | DEFINE_GUID(DXVA_ModeH264_D, 0x1b81be67, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 50 | DEFINE_GUID(DXVA_ModeH264_E, 0x1b81be68, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 51 | DEFINE_GUID(DXVA_ModeH264_F, 0x1b81be69, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 52 | DEFINE_GUID(DXVA_ModeH264_VLD_WithFMOASO_NoFGT, 0xd5f04ff9, 0x3418, 0x45d8, 0x95, 0x61, 0x32, 0xa7, 0x6a, 0xae, 0x2d, 0xdd); |
| 53 | |
| 54 | DEFINE_GUID(DXVA_ModeH264_VLD_Stereo_Progressive_NoFGT, 0xd79be8da, 0x0cf1, 0x4c81, 0xb8, 0x2a, 0x69, 0xa4, 0xe2, 0x36, 0xf4, 0x3d); |
| 55 | DEFINE_GUID(DXVA_ModeH264_VLD_Stereo_NoFGT, 0xf9aaccbb, 0xc2b6, 0x4cfc, 0x87, 0x79, 0x57, 0x07, 0xb1, 0x76, 0x05, 0x52); |
| 56 | DEFINE_GUID(DXVA_ModeH264_VLD_Multiview_NoFGT, 0x705b9d82, 0x76cf, 0x49d6, 0xb7, 0xe6, 0xac, 0x88, 0x72, 0xdb, 0x01, 0x3c); |
| 57 | |
| 58 | DEFINE_GUID(DXVA_ModeWMV8_A, 0x1b81be80, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 59 | DEFINE_GUID(DXVA_ModeWMV8_B, 0x1b81be81, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 60 | |
| 61 | DEFINE_GUID(DXVA_ModeWMV9_A, 0x1b81be90, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 62 | DEFINE_GUID(DXVA_ModeWMV9_B, 0x1b81be91, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 63 | DEFINE_GUID(DXVA_ModeWMV9_C, 0x1b81be94, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 64 | |
| 65 | DEFINE_GUID(DXVA_ModeVC1_A, 0x1b81bea0, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 66 | DEFINE_GUID(DXVA_ModeVC1_B, 0x1b81bea1, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 67 | DEFINE_GUID(DXVA_ModeVC1_C, 0x1b81bea2, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 68 | DEFINE_GUID(DXVA_ModeVC1_D, 0x1b81bea3, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 69 | DEFINE_GUID(DXVA_ModeVC1_D2010, 0x1b81bea4, 0xa0c7, 0x11d3, 0xb9, 0x84, 0x00, 0xc0, 0x4f, 0x2e, 0x73, 0xc5); |
| 70 | |
| 71 | DEFINE_GUID(DXVA_ModeMPEG4pt2_VLD_Simple, 0xefd64d74, 0xc9e8, 0x41d7, 0xa5, 0xe9, 0xe9, 0xb0, 0xe3, 0x9f, 0xa3, 0x19); |
| 72 | DEFINE_GUID(DXVA_ModeMPEG4pt2_VLD_AdvSimple_NoGMC, 0xed418a9f, 0x010d, 0x4eda, 0x9a, 0xe3, 0x9a, 0x65, 0x35, 0x8d, 0x8d, 0x2e); |
| 73 | DEFINE_GUID(DXVA_ModeMPEG4pt2_VLD_AdvSimple_GMC, 0xab998b5b, 0x4258, 0x44a9, 0x9f, 0xeb, 0x94, 0xe5, 0x97, 0xa6, 0xba, 0xae); |
| 74 | |
| 75 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main, 0x5b11d51b, 0x2f4c, 0x4452, 0xbc, 0xc3, 0x09, 0xf2, 0xa1, 0x16, 0x0c, 0xc0); |
| 76 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10, 0x107af0e0, 0xef1a, 0x4d19, 0xab, 0xa8, 0x67, 0xa1, 0x63, 0x07, 0x3d, 0x13); |
| 77 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Monochrome, 0x0685b993, 0x3d8c, 0x43a0, 0x8b, 0x28, 0xd7, 0x4c, 0x2d, 0x68, 0x99, 0xa4); |
| 78 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Monochrome10, 0x142a1d0f, 0x69dd, 0x4ec9, 0x85, 0x91, 0xb1, 0x2f, 0xfc, 0xb9, 0x1a, 0x29); |
| 79 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main12, 0x1a72925f, 0x0c2c, 0x4f15, 0x96, 0xfb, 0xb1, 0x7d, 0x14, 0x73, 0x60, 0x3f); |
| 80 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10_422, 0x0bac4fe5, 0x1532, 0x4429, 0xa8, 0x54, 0xf8, 0x4d, 0xe0, 0x49, 0x53, 0xdb); |
| 81 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main12_422, 0x55bcac81, 0xf311, 0x4093, 0xa7, 0xd0, 0x1c, 0xbc, 0x0b, 0x84, 0x9b, 0xee); |
| 82 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main_444, 0x4008018f, 0xf537, 0x4b36, 0x98, 0xcf, 0x61, 0xaf, 0x8a, 0x2c, 0x1a, 0x33); |
| 83 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10_Ext, 0x9cc55490, 0xe37c, 0x4932, 0x86, 0x84, 0x49, 0x20, 0xf9, 0xf6, 0x40, 0x9c); |
| 84 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main10_444, 0x0dabeffa, 0x4458, 0x4602, 0xbc, 0x03, 0x07, 0x95, 0x65, 0x9d, 0x61, 0x7c); |
| 85 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main12_444, 0x9798634d, 0xfe9d, 0x48e5, 0xb4, 0xda, 0xdb, 0xec, 0x45, 0xb3, 0xdf, 0x01); |
| 86 | DEFINE_GUID(DXVA_ModeHEVC_VLD_Main16, 0xa4fbdbb0, 0xa113, 0x482b, 0xa2, 0x32, 0x63, 0x5c, 0xc0, 0x69, 0x7f, 0x6d); |
| 87 | |
| 88 | DEFINE_GUID(DXVA_ModeVP9_VLD_Profile0, 0x463707f8, 0xa1d0, 0x4585, 0x87, 0x6d, 0x83, 0xaa, 0x6d, 0x60, 0xb8, 0x9e); |
| 89 | DEFINE_GUID(DXVA_ModeVP9_VLD_10bit_Profile2, 0xa4c749ef, 0x6ecf, 0x48aa, 0x84, 0x48, 0x50, 0xa7, 0xa1, 0x16, 0x5f, 0xf7); |
| 90 | DEFINE_GUID(DXVA_ModeVP8_VLD, 0x90b899ea, 0x3a62, 0x4705, 0x88, 0xb3, 0x8d, 0xf0, 0x4b, 0x27, 0x44, 0xe7); |
| 91 | |
| 92 | DEFINE_GUID(DXVA_ModeMJPEG_VLD_420, 0x725cb506, 0x0c29, 0x43c4, 0x94, 0x40, 0x8e, 0x93, 0x97, 0x90, 0x3a, 0x04); |
| 93 | DEFINE_GUID(DXVA_ModeMJPEG_VLD_422, 0x5b77b9cd, 0x1a35, 0x4c30, 0x9f, 0xd8, 0xef, 0x4b, 0x60, 0xc0, 0x35, 0xdd); |
| 94 | DEFINE_GUID(DXVA_ModeMJPEG_VLD_444, 0xd95161f9, 0x0d44, 0x47e6, 0xbc, 0xf5, 0x1b, 0xfb, 0xfb, 0x26, 0x8f, 0x97); |
| 95 | DEFINE_GUID(DXVA_ModeMJPEG_VLD_4444, 0xc91748d5, 0xfd18, 0x4aca, 0x9d, 0xb3, 0x3a, 0x66, 0x34, 0xab, 0x54, 0x7d); |
| 96 | DEFINE_GUID(DXVA_ModeJPEG_VLD_420, 0xcf782c83, 0xbef5, 0x4a2c, 0x87, 0xcb, 0x60, 0x19, 0xe7, 0xb1, 0x75, 0xac); |
| 97 | DEFINE_GUID(DXVA_ModeJPEG_VLD_422, 0xf04df417, 0xeee2, 0x4067, 0xa7, 0x78, 0xf3, 0x5c, 0x15, 0xab, 0x97, 0x21); |
| 98 | DEFINE_GUID(DXVA_ModeJPEG_VLD_444, 0x4cd00e17, 0x89ba, 0x48ef, 0xb9, 0xf9, 0xed, 0xcb, 0x82, 0x71, 0x3f, 0x65); |
| 99 | |
| 100 | DEFINE_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 | |
| 123 | typedef 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 | |
| 136 | typedef 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 | |
| 163 | typedef 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 | |
| 203 | typedef 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 | |
| 217 | typedef 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 | |
| 223 | typedef 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 | |
| 286 | typedef struct _DXVA_Qmatrix_H264 |
| 287 | { |
| 288 | UCHAR bScalingLists4x4[6][16]; |
| 289 | UCHAR bScalingLists8x8[2][64]; |
| 290 | } DXVA_Qmatrix_H264, *LPDXVA_Qmatrix_H264; |
| 291 | |
| 292 | typedef 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 | |
| 320 | typedef 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 | |
| 327 | typedef 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 | |
| 339 | typedef 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 | |
| 352 | typedef 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 | |
| 463 | typedef 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 | |
| 495 | typedef 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 | |
| 505 | typedef 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 | |
| 512 | typedef 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 | |
| 525 | typedef 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 | |
| 545 | typedef 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 | |
| 609 | typedef 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 | |
| 627 | typedef 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 | |
| 681 | typedef 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 | |
| 688 | typedef 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 */ |
| 702 | DEFINE_GUID(DXVA_ModeAV1_VLD_Profile0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a); |
| 703 | DEFINE_GUID(DXVA_ModeAV1_VLD_Profile1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08); |
| 704 | DEFINE_GUID(DXVA_ModeAV1_VLD_Profile2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8); |
| 705 | DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0); |
| 706 | DEFINE_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 */ |
| 709 | typedef 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 */ |
| 727 | typedef 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 */ |
| 948 | typedef 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 | |
| 958 | typedef 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 | |
| 969 | typedef 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 | |
| 987 | typedef 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 | |
| 997 | typedef 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 | |
| 1005 | typedef 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 | |
| 1014 | typedef 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 | |
| 1027 | typedef 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 | |
| 1040 | typedef 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 */ |