[vlc-devel] [PATCH v2 3/5] contrib: wine-headers: add the DXVA AV1 structures and GUIDs

Steve Lhomme robux4 at ycbcr.xyz
Fri Sep 11 11:46:07 CEST 2020


As found in the Microsoft DXVA AV1 specs
https://www.microsoft.com/en-us/download/details.aspx?id=101577
---
 ...02-include-add-AV1-support-to-dxva.h.patch | 301 ++++++++++++++++++
 contrib/src/wine-headers/rules.mak            |   1 +
 2 files changed, 302 insertions(+)
 create mode 100644 contrib/src/wine-headers/0002-include-add-AV1-support-to-dxva.h.patch

diff --git a/contrib/src/wine-headers/0002-include-add-AV1-support-to-dxva.h.patch b/contrib/src/wine-headers/0002-include-add-AV1-support-to-dxva.h.patch
new file mode 100644
index 00000000000..041c0cc49e8
--- /dev/null
+++ b/contrib/src/wine-headers/0002-include-add-AV1-support-to-dxva.h.patch
@@ -0,0 +1,301 @@
+From 80ddd71dda096eda90ffb486ce195e6e8a3a4c2e Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4 at gmail.com>
+Date: Mon, 7 Sep 2020 15:35:31 +0200
+Subject: [PATCH 2/2] include: add AV1 support to dxva.h
+
+Based on the DXVA AV1 specs
+https://www.microsoft.com/en-us/download/details.aspx?id=101577
+---
+ include/dxva.h | 276 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 276 insertions(+)
+
+diff --git a/include/dxva.h b/include/dxva.h
+index 25354f5887..edf73ed7ec 100644
+--- a/include/dxva.h
++++ b/include/dxva.h
+@@ -563,6 +563,282 @@ typedef struct _DXVA_Status_VPx
+     USHORT wNumMbsAffected;
+ } DXVA_Status_VPx, *LPDXVA_Status_VPx;
+ 
++/* 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 wGlobalMotionFlags;
++    };
++    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>
+ 
+ #ifdef __cplusplus
+-- 
+2.27.0.windows.1
+
diff --git a/contrib/src/wine-headers/rules.mak b/contrib/src/wine-headers/rules.mak
index 2bde5110094..4ca461693e4 100644
--- a/contrib/src/wine-headers/rules.mak
+++ b/contrib/src/wine-headers/rules.mak
@@ -28,6 +28,7 @@ $(TARBALLS)/wine-$(WINE_VERSION).tar.xz:
 wine-headers: wine-$(WINE_VERSION).tar.xz .sum-wine-headers
 	$(UNPACK)
 	$(APPLY) $(SRC)/wine-headers/0001-include-add-HEVC-and-VP8-VP9-support-to-dxva.h.patch
+	$(APPLY) $(SRC)/wine-headers/0002-include-add-AV1-support-to-dxva.h.patch
 	$(MOVE)
 
 wine_widl = echo "GEN $(1)" && \
-- 
2.26.2



More information about the vlc-devel mailing list