On Fri, Mar 13, 2020 at 11:25 AM Steve Lhomme <rob...@ycbcr.xyz> wrote: > > Mimick the existing structure and add the extra fields from the Range > Extension > in a wrapping structure. > > The FF_DXVA2_WORKAROUND_HEVC_REXT is set by the decoder user to signal the > selected decoder is expecting this extended structure rather than the default > one. > --- > libavcodec/d3d11va.h | 1 + > libavcodec/dxva2.h | 1 + > libavcodec/dxva2_hevc.c | 79 ++++++++++++++++++++++++++++++++++++++--- > 3 files changed, 76 insertions(+), 5 deletions(-) > > diff --git a/libavcodec/d3d11va.h b/libavcodec/d3d11va.h > index 6816b6c1e6..68a69c372d 100644 > --- a/libavcodec/d3d11va.h > +++ b/libavcodec/d3d11va.h > @@ -47,6 +47,7 @@ > > #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for > Direct3D11 and old UVD/UVD+ ATI video cards > #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for > Direct3D11 and old Intel GPUs with ClearVideo interface > +#define FF_DXVA2_WORKAROUND_HEVC_REXT 4 ///< Signal the D3D11VA > decoder is using the HEVC Rext picture structure > > /** > * This structure is used to provides the necessary configurations and data > diff --git a/libavcodec/dxva2.h b/libavcodec/dxva2.h > index 22c93992f2..024999239d 100644 > --- a/libavcodec/dxva2.h > +++ b/libavcodec/dxva2.h > @@ -47,6 +47,7 @@ > > #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 > and old UVD/UVD+ ATI video cards > #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 > and old Intel GPUs with ClearVideo interface > +#define FF_DXVA2_WORKAROUND_HEVC_REXT 4 ///< Signal the DXVA2 > decoder is using the HEVC Rext picture structure > > /** > * This structure is used to provides the necessary configurations and data > diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c > index dbb701fb1c..98b3e74bd7 100644 > --- a/libavcodec/dxva2_hevc.c > +++ b/libavcodec/dxva2_hevc.c > @@ -26,10 +26,47 @@ > #include "hevc_data.h" > #include "hevcdec.h" > > +#pragma pack(push, 1) > +typedef struct > +{ > + DXVA_PicParams_HEVC main; > + > + // HEVC Range Extension > + __C89_NAMELESS union { > + __C89_NAMELESS struct { > + UINT32 transform_skip_rotation_enabled_flag : 1; > + UINT32 transform_skip_context_enabled_flag : 1; > + UINT32 implicit_rdpcm_enabled_flag : 1; > + UINT32 explicit_rdpcm_enabled_flag : 1; > + UINT32 extended_precision_processing_flag : 1; > + UINT32 intra_smoothing_disabled_flag : 1; > + UINT32 high_precision_offsets_enabled_flag : 1; > + UINT32 persistent_rice_adaptation_enabled_flag : 1; > + UINT32 cabac_bypass_alignment_enabled_flag : 1; > + UINT32 cross_component_prediction_enabled_flag : 1; > + UINT32 chroma_qp_offset_list_enabled_flag : 1; > + UINT32 BitDepthLuma16 : 1; // TODO merge in ReservedBits5 if not > needed > + UINT32 BitDepthChroma16 : 1; // TODO merge in ReservedBits5 if > not needed > + UINT32 ReservedBits8 : 19; > + }; > + UINT32 dwRangeExtensionFlags; > + }; > + > + UCHAR diff_cu_chroma_qp_offset_depth; > + UCHAR chroma_qp_offset_list_len_minus1; > + UCHAR log2_sao_offset_scale_luma; > + UCHAR log2_sao_offset_scale_chroma; > + UCHAR log2_max_transform_skip_block_size_minus2; > + CHAR cb_qp_offset_list[6]; > + CHAR cr_qp_offset_list[6]; > + > +} DXVA_PicParams_HEVC_Rext; > +#pragma pack(pop) > +
Where is this struct specified? I don't see it in the latest released Windows SDK. - Hendrik _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".