From: Michael Müller michael@fds-team.de
V2: add dummy union/struct names
From: Michael Müller michael@fds-team.de Signed-off-by: Vijay Kiran Kamuju infyquest@gmail.com --- include/Makefile.in | 1 + include/dxva.h | 215 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+) create mode 100644 include/dxva.h
diff --git a/include/Makefile.in b/include/Makefile.in index 4a0f927082c..6c8d39ab76b 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -251,6 +251,7 @@ SOURCES = \ dxgicommon.idl \ dxgiformat.idl \ dxgitype.idl \ + dxva.h \ dxva2api.idl \ dyngraph.idl \ endpointvolume.idl \ diff --git a/include/dxva.h b/include/dxva.h new file mode 100644 index 00000000000..4791868fb75 --- /dev/null +++ b/include/dxva.h @@ -0,0 +1,215 @@ +/* + * Copyright 2015 Michael Müller for Pipelight + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_DXVA_H +#define __WINE_DXVA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#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_PictureParameters +{ + WORD wDecodedPictureIndex; + WORD wDeblockedPictureIndex; + WORD wForwardRefPictureIndex; + WORD wBackwardRefPictureIndex; + WORD wPicWidthInMBminus1; + WORD wPicHeightInMBminus1; + BYTE bMacroblockWidthMinus1; + BYTE bMacroblockHeightMinus1; + BYTE bBlockWidthMinus1; + BYTE bBlockHeightMinus1; + BYTE bBPPminus1; + BYTE bPicStructure; + BYTE bSecondField; + BYTE bPicIntra; + BYTE bPicBackwardPrediction; + BYTE bBidirectionalAveragingMode; + BYTE bMVprecisionAndChromaRelation; + BYTE bChromaFormat; + BYTE bPicScanFixed; + BYTE bPicScanMethod; + BYTE bPicReadbackRequests; + BYTE bRcontrol; + BYTE bPicSpatialResid8; + BYTE bPicOverflowBlocks; + BYTE bPicExtrapolation; + BYTE bPicDeblocked; + BYTE bPicDeblockConfined; + BYTE bPic4MVallowed; + BYTE bPicOBMC; + BYTE bPicBinPB; + BYTE bMV_RPS; + BYTE bReservedBits; + WORD wBitstreamFcodes; + WORD wBitstreamPCEelements; + BYTE bBitstreamConcealmentNeed; + BYTE bBitstreamConcealmentMethod; +} DXVA_PictureParameters, *LPDXVA_PictureParameters; + +typedef struct _DXVA_SliceInfo +{ + WORD wHorizontalPosition; + WORD wVerticalPosition; + DWORD dwSliceBitsInBuffer; + DWORD dwSliceDataLocation; + BYTE bStartCodeBitOffset; + BYTE bReservedBits; + WORD wMBbitOffset; + WORD wNumberMBsInSlice; + WORD wQuantizerScaleCode; + WORD wBadSliceChopping; +} DXVA_SliceInfo, *LPDXVA_SliceInfo; + +typedef struct _DXVA_QmatrixData +{ + BYTE bNewQmatrix[4]; + 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 +{ + USHORT wFrameWidthInMbsMinus1; + USHORT wFrameHeightInMbsMinus1; + DXVA_PicEntry_H264 CurrPic; + UCHAR num_ref_frames; + union + { + struct + { + USHORT field_pic_flag : 1; + USHORT MbaffFrameFlag : 1; + USHORT residual_colour_transform_flag : 1; + USHORT sp_for_switch_flag : 1; + USHORT chroma_format_idc : 2; + USHORT RefPicFlag : 1; + USHORT constrained_intra_pred_flag : 1; + USHORT weighted_pred_flag : 1; + USHORT weighted_bipred_idc : 2; + USHORT MbsConsecutiveFlag : 1; + USHORT frame_mbs_only_flag : 1; + USHORT transform_8x8_mode_flag : 1; + USHORT MinLumaBipredSize8x8Flag : 1; + USHORT IntraPicFlag : 1; + } DUMMYSTRUCTNAME; + USHORT wBitFields; + } DUMMYUNIONNAME; + UCHAR bit_depth_luma_minus8; + UCHAR bit_depth_chroma_minus8; + USHORT Reserved16Bits; + UINT StatusReportFeedbackNumber; + DXVA_PicEntry_H264 RefFrameList[16]; + INT CurrFieldOrderCnt[2]; + INT FieldOrderCntList[16][2]; + CHAR pic_init_qs_minus26; + CHAR chroma_qp_index_offset; + CHAR second_chroma_qp_index_offset; + UCHAR ContinuationFlag; + CHAR pic_init_qp_minus26; + UCHAR num_ref_idx_l0_active_minus1; + UCHAR num_ref_idx_l1_active_minus1; + UCHAR Reserved8BitsA; + USHORT FrameNumList[16]; + + UINT UsedForReferenceFlags; + USHORT NonExistingFrameFlags; + USHORT frame_num; + UCHAR log2_max_frame_num_minus4; + UCHAR pic_order_cnt_type; + UCHAR log2_max_pic_order_cnt_lsb_minus4; + UCHAR delta_pic_order_always_zero_flag; + UCHAR direct_8x8_inference_flag; + UCHAR entropy_coding_mode_flag; + UCHAR pic_order_present_flag; + UCHAR num_slice_groups_minus1; + UCHAR slice_group_map_type; + UCHAR deblocking_filter_control_present_flag; + UCHAR redundant_pic_cnt_present_flag; + UCHAR Reserved8BitsB; + USHORT slice_group_change_rate_minus1; + UCHAR SliceGroupMap[810]; +} DXVA_PicParams_H264; + +typedef struct +{ + UCHAR bScalingLists4x4[6][16]; + UCHAR bScalingLists8x8[2][64]; +} DXVA_Qmatrix_H264; + +typedef struct +{ + UINT BSNALunitDataLocation; + UINT SliceBytesInBuffer; + USHORT wBadSliceChopping; + USHORT first_mb_in_slice; + USHORT NumMbsForSlice; + USHORT BitOffsetToSliceData; + UCHAR slice_type; + UCHAR luma_log2_weight_denom; + UCHAR chroma_log2_weight_denom; + + UCHAR num_ref_idx_l0_active_minus1; + UCHAR num_ref_idx_l1_active_minus1; + CHAR slice_alpha_c0_offset_div2; + CHAR slice_beta_offset_div2; + UCHAR Reserved8Bits; + DXVA_PicEntry_H264 RefPicList[2][32]; + SHORT Weights[2][32][3][2]; + CHAR slice_qs_delta; + CHAR slice_qp_delta; + UCHAR redundant_pic_cnt; + UCHAR direct_spatial_mv_pred_flag; + UCHAR cabac_init_idc; + UCHAR disable_deblocking_filter_idc; + USHORT slice_id; +} DXVA_Slice_H264_Long; + +typedef struct +{ + UINT BSNALunitDataLocation; + UINT SliceBytesInBuffer; + USHORT wBadSliceChopping; +} DXVA_Slice_H264_Short; + +#include <poppack.h> + +#ifdef __cplusplus +} +#endif + +#endif /* __WINE_DXVA_H */