Patch DXVA AV1 support into mingw headers
This commit is contained in:
parent
c75fa3b113
commit
0df2644223
2 changed files with 321 additions and 1 deletions
309
patches/mingw/0001-headers-add-AV1-support-to-dxva.h.patch
Normal file
309
patches/mingw/0001-headers-add-AV1-support-to-dxva.h.patch
Normal file
|
@ -0,0 +1,309 @@
|
|||
From 4ede80067d321e75ea082f8c7e66fb167052fde9 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Lhomme <robux4@ycbcr.xyz>
|
||||
Date: Sat, 15 May 2021 15:26:42 +0200
|
||||
Subject: [PATCH] headers: add AV1 support to dxva.h
|
||||
|
||||
Based on the DXVA AV1 specs
|
||||
https://www.microsoft.com/en-us/download/details.aspx?id=101577
|
||||
|
||||
The structures and the associated define are available in Windows SDK
|
||||
since at least 10.0.20231.0.
|
||||
|
||||
The GUIDs were present in previous SDKs as well.
|
||||
---
|
||||
mingw-w64-headers/include/dxva.h | 279 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 279 insertions(+)
|
||||
|
||||
diff --git a/mingw-w64-headers/include/dxva.h b/mingw-w64-headers/include/dxva.h
|
||||
index 4f18f2e..0bd1990 100644
|
||||
--- a/mingw-w64-headers/include/dxva.h
|
||||
+++ b/mingw-w64-headers/include/dxva.h
|
||||
@@ -563,6 +563,285 @@ typedef struct _DXVA_Status_VPx
|
||||
USHORT wNumMbsAffected;
|
||||
} DXVA_Status_VPx, *LPDXVA_Status_VPx;
|
||||
|
||||
+
|
||||
+#define _DIRECTX_AV1_VA_
|
||||
+
|
||||
+/* AV1 decoder GUIDs */
|
||||
+DEFINE_GUID(DXVA_ModeAV1_VLD_Profile0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a);
|
||||
+DEFINE_GUID(DXVA_ModeAV1_VLD_Profile1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08);
|
||||
+DEFINE_GUID(DXVA_ModeAV1_VLD_Profile2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8);
|
||||
+DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0);
|
||||
+DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8);
|
||||
+
|
||||
+/* AV1 picture entry data structure */
|
||||
+typedef struct _DXVA_PicEntry_AV1 {
|
||||
+ UINT width;
|
||||
+ UINT height;
|
||||
+
|
||||
+ // Global motion parameters
|
||||
+ INT wmmat[6];
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR wminvalid : 1;
|
||||
+ UCHAR wmtype : 2;
|
||||
+ UCHAR Reserved : 5;
|
||||
+ };
|
||||
+ UCHAR GlobalMotionFlags;
|
||||
+ };
|
||||
+ UCHAR Index;
|
||||
+ USHORT Reserved16Bits;
|
||||
+} DXVA_PicEntry_AV1, *LPDXVA_PicEntry_AV1;
|
||||
+
|
||||
+/* AV1 picture parameters data structure */
|
||||
+typedef struct _DXVA_PicParams_AV1 {
|
||||
+ UINT width;
|
||||
+ UINT height;
|
||||
+
|
||||
+ UINT max_width;
|
||||
+ UINT max_height;
|
||||
+
|
||||
+ UCHAR CurrPicTextureIndex;
|
||||
+ UCHAR superres_denom;
|
||||
+ UCHAR bitdepth;
|
||||
+ UCHAR seq_profile;
|
||||
+
|
||||
+ // Tiles:
|
||||
+ struct {
|
||||
+ UCHAR cols;
|
||||
+ UCHAR rows;
|
||||
+ USHORT context_update_id;
|
||||
+ USHORT widths[64];
|
||||
+ USHORT heights[64];
|
||||
+ } tiles;
|
||||
+
|
||||
+ // Coding Tools
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UINT use_128x128_superblock : 1;
|
||||
+ UINT intra_edge_filter : 1;
|
||||
+ UINT interintra_compound : 1;
|
||||
+ UINT masked_compound : 1;
|
||||
+ UINT warped_motion : 1;
|
||||
+ UINT dual_filter : 1;
|
||||
+ UINT jnt_comp : 1;
|
||||
+ UINT screen_content_tools : 1;
|
||||
+ UINT integer_mv : 1;
|
||||
+ UINT cdef : 1;
|
||||
+ UINT restoration : 1;
|
||||
+ UINT film_grain : 1;
|
||||
+ UINT intrabc : 1;
|
||||
+ UINT high_precision_mv : 1;
|
||||
+ UINT switchable_motion_mode : 1;
|
||||
+ UINT filter_intra : 1;
|
||||
+ UINT disable_frame_end_update_cdf : 1;
|
||||
+ UINT disable_cdf_update : 1;
|
||||
+ UINT reference_mode : 1;
|
||||
+ UINT skip_mode : 1;
|
||||
+ UINT reduced_tx_set : 1;
|
||||
+ UINT superres : 1;
|
||||
+ UINT tx_mode : 2;
|
||||
+ UINT use_ref_frame_mvs : 1;
|
||||
+ UINT enable_ref_frame_mvs : 1;
|
||||
+ UINT reference_frame_update : 1;
|
||||
+ UINT Reserved : 5;
|
||||
+ };
|
||||
+ UINT32 CodingParamToolFlags;
|
||||
+ } coding;
|
||||
+
|
||||
+ // Format & Picture Info flags
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR frame_type : 2;
|
||||
+ UCHAR show_frame : 1;
|
||||
+ UCHAR showable_frame : 1;
|
||||
+ UCHAR subsampling_x : 1;
|
||||
+ UCHAR subsampling_y : 1;
|
||||
+ UCHAR mono_chrome : 1;
|
||||
+ UCHAR Reserved : 1;
|
||||
+ };
|
||||
+ UCHAR FormatAndPictureInfoFlags;
|
||||
+ } format;
|
||||
+
|
||||
+ // References
|
||||
+ UCHAR primary_ref_frame;
|
||||
+ UCHAR order_hint;
|
||||
+ UCHAR order_hint_bits;
|
||||
+
|
||||
+ DXVA_PicEntry_AV1 frame_refs[7];
|
||||
+ UCHAR RefFrameMapTextureIndex[8];
|
||||
+
|
||||
+ // Loop filter parameters
|
||||
+ struct {
|
||||
+ UCHAR filter_level[2];
|
||||
+ UCHAR filter_level_u;
|
||||
+ UCHAR filter_level_v;
|
||||
+
|
||||
+ UCHAR sharpness_level;
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR mode_ref_delta_enabled : 1;
|
||||
+ UCHAR mode_ref_delta_update : 1;
|
||||
+ UCHAR delta_lf_multi : 1;
|
||||
+ UCHAR delta_lf_present : 1;
|
||||
+ UCHAR Reserved : 4;
|
||||
+ };
|
||||
+ UCHAR ControlFlags;
|
||||
+ } DUMMYUNIONNAME;
|
||||
+ CHAR ref_deltas[8];
|
||||
+ CHAR mode_deltas[2];
|
||||
+ UCHAR delta_lf_res;
|
||||
+ UCHAR frame_restoration_type[3];
|
||||
+ USHORT log2_restoration_unit_size[3];
|
||||
+ UINT16 Reserved16Bits;
|
||||
+ } loop_filter;
|
||||
+
|
||||
+ // Quantization
|
||||
+ struct {
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR delta_q_present : 1;
|
||||
+ UCHAR delta_q_res : 2;
|
||||
+ UCHAR Reserved : 5;
|
||||
+ };
|
||||
+ UCHAR ControlFlags;
|
||||
+ } DUMMYUNIONNAME;
|
||||
+
|
||||
+ UCHAR base_qindex;
|
||||
+ CHAR y_dc_delta_q;
|
||||
+ CHAR u_dc_delta_q;
|
||||
+ CHAR v_dc_delta_q;
|
||||
+ CHAR u_ac_delta_q;
|
||||
+ CHAR v_ac_delta_q;
|
||||
+ // using_qmatrix:
|
||||
+ UCHAR qm_y;
|
||||
+ UCHAR qm_u;
|
||||
+ UCHAR qm_v;
|
||||
+ UINT16 Reserved16Bits;
|
||||
+ } quantization;
|
||||
+
|
||||
+ // Cdef parameters
|
||||
+ struct {
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR damping : 2;
|
||||
+ UCHAR bits : 2;
|
||||
+ UCHAR Reserved : 4;
|
||||
+ };
|
||||
+ UCHAR ControlFlags;
|
||||
+ } DUMMYUNIONNAME;
|
||||
+
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR primary : 6;
|
||||
+ UCHAR secondary : 2;
|
||||
+ };
|
||||
+ UCHAR combined;
|
||||
+ } y_strengths[8];
|
||||
+
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR primary : 6;
|
||||
+ UCHAR secondary : 2;
|
||||
+ };
|
||||
+ UCHAR combined;
|
||||
+ } uv_strengths[8];
|
||||
+
|
||||
+ } cdef;
|
||||
+
|
||||
+ UCHAR interp_filter;
|
||||
+
|
||||
+ // Segmentation
|
||||
+ struct {
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR enabled : 1;
|
||||
+ UCHAR update_map : 1;
|
||||
+ UCHAR update_data : 1;
|
||||
+ UCHAR temporal_update : 1;
|
||||
+ UCHAR Reserved : 4;
|
||||
+ };
|
||||
+ UCHAR ControlFlags;
|
||||
+ } DUMMYUNIONNAME;
|
||||
+ UCHAR Reserved24Bits[3];
|
||||
+
|
||||
+ union {
|
||||
+ struct {
|
||||
+ UCHAR alt_q : 1;
|
||||
+ UCHAR alt_lf_y_v : 1;
|
||||
+ UCHAR alt_lf_y_h : 1;
|
||||
+ UCHAR alt_lf_u : 1;
|
||||
+ UCHAR alt_lf_v : 1;
|
||||
+ UCHAR ref_frame : 1;
|
||||
+ UCHAR skip : 1;
|
||||
+ UCHAR globalmv : 1;
|
||||
+ };
|
||||
+ UCHAR mask;
|
||||
+ } feature_mask[8];
|
||||
+
|
||||
+ SHORT feature_data[8][8];
|
||||
+
|
||||
+ } segmentation;
|
||||
+
|
||||
+ struct {
|
||||
+ union {
|
||||
+ struct {
|
||||
+ USHORT apply_grain : 1;
|
||||
+ USHORT scaling_shift_minus8 : 2;
|
||||
+ USHORT chroma_scaling_from_luma : 1;
|
||||
+ USHORT ar_coeff_lag : 2;
|
||||
+ USHORT ar_coeff_shift_minus6 : 2;
|
||||
+ USHORT grain_scale_shift : 2;
|
||||
+ USHORT overlap_flag : 1;
|
||||
+ USHORT clip_to_restricted_range : 1;
|
||||
+ USHORT matrix_coeff_is_identity : 1;
|
||||
+ USHORT Reserved : 3;
|
||||
+ };
|
||||
+ USHORT ControlFlags;
|
||||
+ } DUMMYUNIONNAME;
|
||||
+
|
||||
+ USHORT grain_seed;
|
||||
+ UCHAR scaling_points_y[14][2];
|
||||
+ UCHAR num_y_points;
|
||||
+ UCHAR scaling_points_cb[10][2];
|
||||
+ UCHAR num_cb_points;
|
||||
+ UCHAR scaling_points_cr[10][2];
|
||||
+ UCHAR num_cr_points;
|
||||
+ UCHAR ar_coeffs_y[24];
|
||||
+ UCHAR ar_coeffs_cb[25];
|
||||
+ UCHAR ar_coeffs_cr[25];
|
||||
+ UCHAR cb_mult;
|
||||
+ UCHAR cb_luma_mult;
|
||||
+ UCHAR cr_mult;
|
||||
+ UCHAR cr_luma_mult;
|
||||
+ UCHAR Reserved8Bits;
|
||||
+ SHORT cb_offset;
|
||||
+ SHORT cr_offset;
|
||||
+ } film_grain;
|
||||
+
|
||||
+ UINT Reserved32Bits;
|
||||
+ UINT StatusReportFeedbackNumber;
|
||||
+} DXVA_PicParams_AV1, *LPDXVA_PicParams_AV1;
|
||||
+
|
||||
+/* AV1 tile data structure */
|
||||
+typedef struct _DXVA_Tile_AV1 {
|
||||
+ UINT DataOffset;
|
||||
+ UINT DataSize;
|
||||
+ USHORT row;
|
||||
+ USHORT column;
|
||||
+ USHORT Reserved16Bits;
|
||||
+ UCHAR anchor_frame;
|
||||
+ UCHAR Reserved8Bits;
|
||||
+} DXVA_Tile_AV1, *LPDXVA_Tile_AV1;
|
||||
+
|
||||
+typedef struct _DXVA_Status_AV1 {
|
||||
+ UINT StatusReportFeedbackNumber;
|
||||
+ DXVA_PicEntry_AV1 CurrPic;
|
||||
+ UCHAR bBufType;
|
||||
+ UCHAR bStatus;
|
||||
+ UCHAR bReserved8Bits;
|
||||
+ USHORT wNumMbsAffected;
|
||||
+} DXVA_Status_AV1, *LPDXVA_Status_AV1;
|
||||
+
|
||||
#include <poppack.h>
|
||||
|
||||
typedef enum _DXVA_VideoChromaSubsampling
|
||||
--
|
||||
2.25.1
|
||||
|
|
@ -8,6 +8,10 @@ ffbuild_enabled() {
|
|||
return 0
|
||||
}
|
||||
|
||||
ffbuild_dockerstage() {
|
||||
to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/mingw,dst=/patches run_stage /stage.sh"
|
||||
}
|
||||
|
||||
ffbuild_dockerlayer() {
|
||||
to_df "COPY --from=${SELFLAYER} /opt/mingw/. /"
|
||||
to_df "COPY --from=${SELFLAYER} /opt/mingw/. /opt/mingw"
|
||||
|
@ -19,7 +23,14 @@ ffbuild_dockerfinal() {
|
|||
|
||||
ffbuild_dockerbuild() {
|
||||
git-mini-clone "$MINGW_REPO" "$MINGW_COMMIT" mingw
|
||||
cd mingw/mingw-w64-headers
|
||||
cd mingw
|
||||
|
||||
for patch in /patches/*.patch; do
|
||||
echo "Applying $patch"
|
||||
git am < "$patch"
|
||||
done
|
||||
|
||||
cd mingw-w64-headers
|
||||
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
|
|
Loading…
Reference in a new issue