diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2014-09-21 22:15:54 +0400 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2017-08-04 20:18:07 +0300 |
commit | 6d2429f7fb5a1399e1ff405358116962dfb7db50 (patch) | |
tree | 6fb6353108d61593d712c94e023725a756553033 | |
parent | 7bea70f89d4163a776e9606a1d8082e83535dbc7 (diff) |
dxva2_hevc: add compat header for mingw
-rw-r--r-- | compat/windows/dxva_hevc.h | 150 | ||||
-rwxr-xr-x | configure | 7 | ||||
-rw-r--r-- | libavcodec/dxva2_hevc.c | 4 |
3 files changed, 158 insertions, 3 deletions
diff --git a/compat/windows/dxva_hevc.h b/compat/windows/dxva_hevc.h new file mode 100644 index 0000000000..0229cbe21e --- /dev/null +++ b/compat/windows/dxva_hevc.h @@ -0,0 +1,150 @@ +//------------------------------------------------------------------------------ +// Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + +#ifndef __DIRECTX_VA_HEVC__ +#define __DIRECTX_VA_HEVC__ + +#pragma pack(push, 1) + +/* HEVC Picture Entry structure */ +typedef struct _DXVA_PicEntry_HEVC +{ + union + { + struct + { + UCHAR Index7Bits : 7; + UCHAR AssociatedFlag : 1; + }; + UCHAR bPicEntry; + }; +} DXVA_PicEntry_HEVC, *LPDXVA_PicEntry_HEVC; + +/* HEVC Picture Parameter structure */ +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; + +/* HEVC Quantizatiuon Matrix structure */ +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; + + +/* HEVC Slice Control Structure */ +typedef struct _DXVA_Slice_HEVC_Short +{ + UINT BSNALunitDataLocation; + UINT SliceBytesInBuffer; + USHORT wBadSliceChopping; +} DXVA_Slice_HEVC_Short, *LPDXVA_Slice_HEVC_Short; + +#pragma pack(pop) +#endif @@ -2024,6 +2024,7 @@ TOOLCHAIN_FEATURES=" TYPES_LIST=" CONDITION_VARIABLE_Ptr + DXVA_PicParams_HEVC socklen_t struct_addrinfo struct_group_source_req @@ -2634,12 +2635,12 @@ h264_videotoolbox_hwaccel_deps="videotoolbox" h264_videotoolbox_hwaccel_select="h264_decoder" hevc_cuvid_hwaccel_deps="cuda cuvid" hevc_cuvid_hwaccel_select="hevc_cuvid_decoder" -hevc_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_HEVC" +hevc_d3d11va_hwaccel_deps="d3d11va" hevc_d3d11va_hwaccel_select="hevc_decoder" hevc_mediacodec_hwaccel_deps="mediacodec" -hevc_d3d11va2_hwaccel_deps="d3d11va DXVA_PicParams_HEVC" +hevc_d3d11va2_hwaccel_deps="d3d11va" hevc_d3d11va2_hwaccel_select="hevc_decoder" -hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC" +hevc_dxva2_hwaccel_deps="dxva2" hevc_dxva2_hwaccel_select="hevc_decoder" hevc_qsv_hwaccel_deps="libmfx" hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC" diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c index 88f887a1b5..0dd051f4d5 100644 --- a/libavcodec/dxva2_hevc.c +++ b/libavcodec/dxva2_hevc.c @@ -30,6 +30,10 @@ // potentially newer version. #include "dxva2_internal.h" +#if !HAVE_DXVA_PICPARAMS_HEVC +#include "compat/windows/dxva_hevc.h" +#endif + #define MAX_SLICES 256 struct hevc_dxva2_picture_context { |