Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2014-09-21 22:15:54 +0400
committerHendrik Leppkes <h.leppkes@gmail.com>2017-08-04 20:18:07 +0300
commit6d2429f7fb5a1399e1ff405358116962dfb7db50 (patch)
tree6fb6353108d61593d712c94e023725a756553033
parent7bea70f89d4163a776e9606a1d8082e83535dbc7 (diff)
dxva2_hevc: add compat header for mingw
-rw-r--r--compat/windows/dxva_hevc.h150
-rwxr-xr-xconfigure7
-rw-r--r--libavcodec/dxva2_hevc.c4
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
diff --git a/configure b/configure
index d5f2b8e8c4..bab289059b 100755
--- a/configure
+++ b/configure
@@ -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 {