[PATCH] include/dxva: add HEVC and VP8/VP9 structures
Biswapriyo Nath
nathbappai at gmail.com
Tue Mar 17 11:26:07 CDT 2020
-------------- next part --------------
From 9200af9cbf895d4aac20c653910473899cc50603 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <nathbappai at gmail.com>
Date: Tue, 17 Mar 2020 21:53:09 +0530
Subject: [PATCH] include/dxva: add HEVC and VP8/VP9 structures
Signed-off-by: Biswapriyo Nath <nathbappai at gmail.com>
---
include/dxva.h | 399 ++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 378 insertions(+), 21 deletions(-)
diff --git a/include/dxva.h b/include/dxva.h
index 1260d75..25354f5 100644
--- a/include/dxva.h
+++ b/include/dxva.h
@@ -23,12 +23,54 @@
extern "C" {
#endif
+DEFINE_GUID(DXVA_NoEncrypt, 0x1b81bed0, 0xa0c7,0x11d3, 0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
+
#define DXVA_USUAL_BLOCK_WIDTH 8
#define DXVA_USUAL_BLOCK_HEIGHT 8
#define DXVA_USUAL_BLOCK_SIZE (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT)
#include <pshpack1.h>
+typedef struct _DXVA_PicEntry_H264
+{
+ union
+ {
+ struct
+ {
+ UCHAR Index7Bits : 7;
+ UCHAR AssociatedFlag : 1;
+ } DUMMYSTRUCTNAME;
+ UCHAR bPicEntry;
+ } DUMMYUNIONNAME;
+} DXVA_PicEntry_H264, *LPDXVA_PicEntry_H264;
+
+typedef struct _DXVA_FilmGrainCharacteristics
+{
+ USHORT wFrameWidthInMbsMinus1;
+ USHORT wFrameHeightInMbsMinus1;
+ DXVA_PicEntry_H264 InPic;
+ DXVA_PicEntry_H264 OutPic;
+ USHORT PicOrderCnt_offset;
+ INT CurrPicOrderCnt;
+ UINT StatusReportFeedbackNumber;
+ UCHAR model_id;
+ UCHAR separate_colour_description_present_flag;
+ UCHAR film_grain_bit_depth_luma_minus8;
+ UCHAR film_grain_bit_depth_chroma_minus8;
+ UCHAR film_grain_full_range_flag;
+ UCHAR film_grain_colour_primaries;
+ UCHAR film_grain_transfer_characteristics;
+ UCHAR film_grain_matrix_coefficients;
+ UCHAR blending_mode_id;
+ UCHAR log2_scale_factor;
+ UCHAR comp_model_present_flag[4];
+ UCHAR num_intensity_intervals_minus1[4];
+ UCHAR num_model_values_minus1[4];
+ UCHAR intensity_interval_lower_bound[3][16];
+ UCHAR intensity_interval_upper_bound[3][16];
+ SHORT comp_model_value[3][16][8];
+} DXVA_FilmGrainChar_H264, *LPDXVA_FilmGrainChar_H264;
+
typedef struct _DXVA_PictureParameters
{
WORD wDecodedPictureIndex;
@@ -89,20 +131,7 @@ typedef struct _DXVA_QmatrixData
WORD Qmatrix[4][DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT];
} DXVA_QmatrixData, *LPDXVA_QmatrixData;
-typedef struct
-{
- union
- {
- struct
- {
- UCHAR Index7Bits : 7;
- UCHAR AssociatedFlag : 1;
- } DUMMYSTRUCTNAME;
- UCHAR bPicEntry;
- } DUMMYUNIONNAME;
-} DXVA_PicEntry_H264;
-
-typedef struct
+typedef struct _DXVA_PicParams_H264
{
USHORT wFrameWidthInMbsMinus1;
USHORT wFrameHeightInMbsMinus1;
@@ -163,15 +192,15 @@ typedef struct
UCHAR Reserved8BitsB;
USHORT slice_group_change_rate_minus1;
UCHAR SliceGroupMap[810];
-} DXVA_PicParams_H264;
+} DXVA_PicParams_H264, *LPDXVA_PicParams_H264;
-typedef struct
+typedef struct _DXVA_Qmatrix_H264
{
UCHAR bScalingLists4x4[6][16];
UCHAR bScalingLists8x8[2][64];
-} DXVA_Qmatrix_H264;
+} DXVA_Qmatrix_H264, *LPDXVA_Qmatrix_H264;
-typedef struct
+typedef struct _DXVA_Slice_H264_Long
{
UINT BSNALunitDataLocation;
UINT SliceBytesInBuffer;
@@ -197,14 +226,342 @@ typedef struct
UCHAR cabac_init_idc;
UCHAR disable_deblocking_filter_idc;
USHORT slice_id;
-} DXVA_Slice_H264_Long;
+} DXVA_Slice_H264_Long, *LPDXVA_Slice_H264_Long;
-typedef struct
+typedef struct _DXVA_Slice_H264_Short
{
UINT BSNALunitDataLocation;
UINT SliceBytesInBuffer;
USHORT wBadSliceChopping;
-} DXVA_Slice_H264_Short;
+} DXVA_Slice_H264_Short, *LPDXVA_Slice_H264_Short;
+
+
+typedef struct _DXVA_PicEntry_HEVC
+{
+ union
+ {
+ struct
+ {
+ UCHAR Index7Bits : 7;
+ UCHAR AssociatedFlag : 1;
+ };
+ UCHAR bPicEntry;
+ };
+} DXVA_PicEntry_HEVC, *LPDXVA_PicEntry_HEVC;
+
+typedef struct _DXVA_PicParams_HEVC
+{
+ USHORT PicWidthInMinCbsY;
+ USHORT PicHeightInMinCbsY;
+ union
+ {
+ struct
+ {
+ USHORT chroma_format_idc : 2;
+ USHORT separate_colour_plane_flag : 1;
+ USHORT bit_depth_luma_minus8 : 3;
+ USHORT bit_depth_chroma_minus8 : 3;
+ USHORT log2_max_pic_order_cnt_lsb_minus4 : 4;
+ USHORT NoPicReorderingFlag : 1;
+ USHORT NoBiPredFlag : 1;
+ USHORT ReservedBits1 : 1;
+ };
+ USHORT wFormatAndSequenceInfoFlags;
+ };
+ DXVA_PicEntry_HEVC CurrPic;
+ UCHAR sps_max_dec_pic_buffering_minus1;
+ UCHAR log2_min_luma_coding_block_size_minus3;
+ UCHAR log2_diff_max_min_luma_coding_block_size;
+ UCHAR log2_min_transform_block_size_minus2;
+ UCHAR log2_diff_max_min_transform_block_size;
+ UCHAR max_transform_hierarchy_depth_inter;
+ UCHAR max_transform_hierarchy_depth_intra;
+ UCHAR num_short_term_ref_pic_sets;
+ UCHAR num_long_term_ref_pics_sps;
+ UCHAR num_ref_idx_l0_default_active_minus1;
+ UCHAR num_ref_idx_l1_default_active_minus1;
+ CHAR init_qp_minus26;
+ UCHAR ucNumDeltaPocsOfRefRpsIdx;
+ USHORT wNumBitsForShortTermRPSInSlice;
+ USHORT ReservedBits2;
+
+ union
+ {
+ struct
+ {
+ UINT32 scaling_list_enabled_flag : 1;
+ UINT32 amp_enabled_flag : 1;
+ UINT32 sample_adaptive_offset_enabled_flag : 1;
+ UINT32 pcm_enabled_flag : 1;
+ UINT32 pcm_sample_bit_depth_luma_minus1 : 4;
+ UINT32 pcm_sample_bit_depth_chroma_minus1 : 4;
+ UINT32 log2_min_pcm_luma_coding_block_size_minus3 : 2;
+ UINT32 log2_diff_max_min_pcm_luma_coding_block_size : 2;
+ UINT32 pcm_loop_filter_disabled_flag : 1;
+ UINT32 long_term_ref_pics_present_flag : 1;
+ UINT32 sps_temporal_mvp_enabled_flag : 1;
+ UINT32 strong_intra_smoothing_enabled_flag : 1;
+ UINT32 dependent_slice_segments_enabled_flag : 1;
+ UINT32 output_flag_present_flag : 1;
+ UINT32 num_extra_slice_header_bits : 3;
+ UINT32 sign_data_hiding_enabled_flag : 1;
+ UINT32 cabac_init_present_flag : 1;
+ UINT32 ReservedBits3 : 5;
+ };
+ UINT32 dwCodingParamToolFlags;
+ };
+
+ union
+ {
+ struct
+ {
+ UINT32 constrained_intra_pred_flag : 1;
+ UINT32 transform_skip_enabled_flag : 1;
+ UINT32 cu_qp_delta_enabled_flag : 1;
+ UINT32 pps_slice_chroma_qp_offsets_present_flag : 1;
+ UINT32 weighted_pred_flag : 1;
+ UINT32 weighted_bipred_flag : 1;
+ UINT32 transquant_bypass_enabled_flag : 1;
+ UINT32 tiles_enabled_flag : 1;
+ UINT32 entropy_coding_sync_enabled_flag : 1;
+ UINT32 uniform_spacing_flag : 1;
+ UINT32 loop_filter_across_tiles_enabled_flag : 1;
+ UINT32 pps_loop_filter_across_slices_enabled_flag : 1;
+ UINT32 deblocking_filter_override_enabled_flag : 1;
+ UINT32 pps_deblocking_filter_disabled_flag : 1;
+ UINT32 lists_modification_present_flag : 1;
+ UINT32 slice_segment_header_extension_present_flag : 1;
+ UINT32 IrapPicFlag : 1;
+ UINT32 IdrPicFlag : 1;
+ UINT32 IntraPicFlag : 1;
+ UINT32 ReservedBits4 : 13;
+ };
+ UINT32 dwCodingSettingPicturePropertyFlags;
+ };
+ CHAR pps_cb_qp_offset;
+ CHAR pps_cr_qp_offset;
+ UCHAR num_tile_columns_minus1;
+ UCHAR num_tile_rows_minus1;
+ USHORT column_width_minus1[19];
+ USHORT row_height_minus1[21];
+ UCHAR diff_cu_qp_delta_depth;
+ CHAR pps_beta_offset_div2;
+ CHAR pps_tc_offset_div2;
+ UCHAR log2_parallel_merge_level_minus2;
+ INT CurrPicOrderCntVal;
+ DXVA_PicEntry_HEVC RefPicList[15];
+ UCHAR ReservedBits5;
+ INT PicOrderCntValList[15];
+ UCHAR RefPicSetStCurrBefore[8];
+ UCHAR RefPicSetStCurrAfter[8];
+ UCHAR RefPicSetLtCurr[8];
+ USHORT ReservedBits6;
+ USHORT ReservedBits7;
+ UINT StatusReportFeedbackNumber;
+} DXVA_PicParams_HEVC, *LPDXVA_PicParams_HEVC;
+
+typedef struct _DXVA_Qmatrix_HEVC
+{
+ UCHAR ucScalingLists0[6][16];
+ UCHAR ucScalingLists1[6][64];
+ UCHAR ucScalingLists2[6][64];
+ UCHAR ucScalingLists3[2][64];
+ UCHAR ucScalingListDCCoefSizeID2[6];
+ UCHAR ucScalingListDCCoefSizeID3[2];
+} DXVA_Qmatrix_HEVC, *LPDXVA_Qmatrix_HEVC;
+
+typedef struct _DXVA_Slice_HEVC_Short
+{
+ UINT BSNALunitDataLocation;
+ UINT SliceBytesInBuffer;
+ USHORT wBadSliceChopping;
+} DXVA_Slice_HEVC_Short, *LPDXVA_Slice_HEVC_Short;
+
+typedef struct _DXVA_PicEntry_VPx
+{
+ union
+ {
+ struct
+ {
+ UCHAR Index7Bits : 7;
+ UCHAR AssociatedFlag : 1;
+ };
+ UCHAR bPicEntry;
+ };
+} DXVA_PicEntry_VPx, *LPDXVA_PicEntry_VPx;
+
+typedef struct _segmentation_VP9
+{
+ union
+ {
+ struct
+ {
+ UCHAR enabled : 1;
+ UCHAR update_map : 1;
+ UCHAR temporal_update : 1;
+ UCHAR abs_delta : 1;
+ UCHAR ReservedSegmentFlags4Bits : 4;
+ };
+ UCHAR wSegmentInfoFlags;
+ };
+ UCHAR tree_probs[7];
+ UCHAR pred_probs[3];
+ SHORT feature_data[8][4];
+ UCHAR feature_mask[8];
+} DXVA_segmentation_VP9;
+
+typedef struct _DXVA_PicParams_VP9
+{
+ DXVA_PicEntry_VPx CurrPic;
+ UCHAR profile;
+ union
+ {
+ struct
+ {
+ USHORT frame_type : 1;
+ USHORT show_frame : 1;
+ USHORT error_resilient_mode : 1;
+ USHORT subsampling_x : 1;
+ USHORT subsampling_y : 1;
+ USHORT extra_plane : 1;
+ USHORT refresh_frame_context : 1;
+ USHORT frame_parallel_decoding_mode : 1;
+ USHORT intra_only : 1;
+ USHORT frame_context_idx : 2;
+ USHORT reset_frame_context : 2;
+ USHORT allow_high_precision_mv : 1;
+ USHORT ReservedFormatInfo2Bits : 2;
+ };
+ USHORT wFormatAndPictureInfoFlags;
+ };
+ UINT width;
+ UINT height;
+ UCHAR BitDepthMinus8Luma;
+ UCHAR BitDepthMinus8Chroma;
+ UCHAR interp_filter;
+ UCHAR Reserved8Bits;
+ DXVA_PicEntry_VPx ref_frame_map[8];
+ UINT ref_frame_coded_width[8];
+ UINT ref_frame_coded_height[8];
+ DXVA_PicEntry_VPx frame_refs[3];
+ CHAR ref_frame_sign_bias[4];
+ CHAR filter_level;
+ CHAR sharpness_level;
+ union
+ {
+ struct
+ {
+ UCHAR mode_ref_delta_enabled : 1;
+ UCHAR mode_ref_delta_update : 1;
+ UCHAR use_prev_in_find_mv_refs : 1;
+ UCHAR ReservedControlInfo5Bits : 5;
+ };
+ UCHAR wControlInfoFlags;
+ };
+ CHAR ref_deltas[4];
+ CHAR mode_deltas[2];
+ SHORT base_qindex;
+ CHAR y_dc_delta_q;
+ CHAR uv_dc_delta_q;
+ CHAR uv_ac_delta_q;
+ DXVA_segmentation_VP9 stVP9Segments;
+ UCHAR log2_tile_cols;
+ UCHAR log2_tile_rows;
+ USHORT uncompressed_header_size_byte_aligned;
+ USHORT first_partition_size;
+ USHORT Reserved16Bits;
+ UINT Reserved32Bits;
+ UINT StatusReportFeedbackNumber;
+} DXVA_PicParams_VP9, *LPDXVA_PicParams_VP9;
+
+typedef struct _segmentation_VP8
+{
+ union
+ {
+ struct
+ {
+ UCHAR segmentation_enabled : 1;
+ UCHAR update_mb_segmentation_map : 1;
+ UCHAR update_mb_segmentation_data : 1;
+ UCHAR mb_segement_abs_delta : 1;
+ UCHAR ReservedSegmentFlags4Bits : 4;
+ };
+ UCHAR wSegmentFlags;
+ };
+ CHAR segment_feature_data[2][4];
+ UCHAR mb_segment_tree_probs[3];
+} DXVA_segmentation_VP8;
+
+typedef struct _DXVA_PicParams_VP8
+{
+ UINT first_part_size;
+ UINT width;
+ UINT height;
+ DXVA_PicEntry_VPx CurrPic;
+ union
+ {
+ struct
+ {
+ UCHAR frame_type : 1;
+ UCHAR version : 3;
+ UCHAR show_frame : 1;
+ UCHAR clamp_type : 1;
+ UCHAR ReservedFrameTag3Bits : 2;
+ };
+ UCHAR wFrameTagFlags;
+ };
+ DXVA_segmentation_VP8 stVP8Segments;
+ UCHAR filter_type;
+ UCHAR filter_level;
+ UCHAR sharpness_level;
+ UCHAR mode_ref_lf_delta_enabled;
+ UCHAR mode_ref_lf_delta_update;
+ CHAR ref_lf_deltas[4];
+ CHAR mode_lf_deltas[4];
+ UCHAR log2_nbr_of_dct_partitions;
+ UCHAR base_qindex;
+ CHAR y1dc_delta_q;
+ CHAR y2dc_delta_q;
+ CHAR y2ac_delta_q;
+ CHAR uvdc_delta_q;
+ CHAR uvac_delta_q;
+ DXVA_PicEntry_VPx alt_fb_idx;
+ DXVA_PicEntry_VPx gld_fb_idx;
+ DXVA_PicEntry_VPx lst_fb_idx;
+ UCHAR ref_frame_sign_bias_golden;
+ UCHAR ref_frame_sign_bias_altref;
+ UCHAR refresh_entropy_probs;
+ UCHAR vp8_coef_update_probs[4][8][3][11];
+ UCHAR mb_no_coeff_skip;
+ UCHAR prob_skip_false;
+ UCHAR prob_intra;
+ UCHAR prob_last;
+ UCHAR prob_golden;
+ UCHAR intra_16x16_prob[4];
+ UCHAR intra_chroma_prob[3];
+ UCHAR vp8_mv_update_probs[2][19];
+ USHORT ReservedBits1;
+ USHORT ReservedBits2;
+ USHORT ReservedBits3;
+ UINT StatusReportFeedbackNumber;
+} DXVA_PicParams_VP8, *LPDXVA_PicParams_VP8;
+
+typedef struct _DXVA_Slice_VPx_Short
+{
+ UINT BSNALunitDataLocation;
+ UINT SliceBytesInBuffer;
+ USHORT wBadSliceChopping;
+} DXVA_Slice_VPx_Short, *LPDXVA_Slice_VPx_Short;
+
+typedef struct _DXVA_Status_VPx
+{
+ UINT StatusReportFeedbackNumber;
+ DXVA_PicEntry_VPx CurrPic;
+ UCHAR bBufType;
+ UCHAR bStatus;
+ UCHAR bReserved8Bits;
+ USHORT wNumMbsAffected;
+} DXVA_Status_VPx, *LPDXVA_Status_VPx;
#include <poppack.h>
--
2.25.1
More information about the wine-devel
mailing list