[VDPAU] [PATCH 1/1] Add VP9 decode support in VDPAU API
Philip Langdale
philipl at overt.org
Thu Jul 18 10:19:18 UTC 2019
On 2019-07-18 00:13, ManojGuptaBonda wrote:
> Added VP9 decoder profiles and level to VDPAU header file.
> VP9 specification has 4 profiles and 1 level defined.
> A new VdpPictureInfoVP9 structure is defined to pass VP9 specific
> params
> to the driver.
> ---
> include/vdpau/vdpau.h | 72 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 72 insertions(+)
>
> diff --git a/include/vdpau/vdpau.h b/include/vdpau/vdpau.h
> index 67aeacf..402d119 100644
> --- a/include/vdpau/vdpau.h
> +++ b/include/vdpau/vdpau.h
> @@ -2560,6 +2560,14 @@ typedef uint32_t VdpDecoderProfile;
> /** \brief Support for 8 bit depth only */
> #define VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
> ((VdpDecoderProfile)26)
> /** \hideinitializer */
> +#define VDP_DECODER_PROFILE_VP9_PROFILE_0
> ((VdpDecoderProfile)27)
> +/** \hideinitializer */
> +#define VDP_DECODER_PROFILE_VP9_PROFILE_1
> ((VdpDecoderProfile)28)
> +/** \hideinitializer */
> +#define VDP_DECODER_PROFILE_VP9_PROFILE_2
> ((VdpDecoderProfile)29)
> +/** \hideinitializer */
> +#define VDP_DECODER_PROFILE_VP9_PROFILE_3
> ((VdpDecoderProfile)30)
> +/** \hideinitializer */
> /** \brief MPEG-H Part 2 == H.265 == HEVC */
> #define VDP_DECODER_PROFILE_HEVC_MAIN
> ((VdpDecoderProfile)100)
> /** \hideinitializer */
> @@ -2664,6 +2672,9 @@ typedef uint32_t VdpDecoderProfile;
> /** \hideinitializer */
> #define VDP_DECODER_LEVEL_DIVX_NA 0
>
> +/** \hideinitializer */
> +#define VDP_DECODER_LEVEL_VP9_L1 1
> +
> /**
> * The VDPAU H.265/HEVC decoder levels correspond to the values of
> * general_level_idc as described in the H.265 Specification, Annex A,
> @@ -3202,6 +3213,67 @@ typedef VdpPictureInfoMPEG4Part2
> VdpPictureInfoDivX4;
> */
> typedef VdpPictureInfoMPEG4Part2 VdpPictureInfoDivX5;
>
> +typedef struct
> +{
> + unsigned int width;
> + unsigned int height;
> +
> + //Frame Indices
> + VdpVideoSurface lastReference;
> + VdpVideoSurface goldenReference;
> + VdpVideoSurface altReference;
> +
> + unsigned char colorSpace;
> +
> + unsigned short profile;
> + unsigned short frameContextIdx;
> + unsigned short keyFrame;
> + unsigned short showFrame;
> + unsigned short errorResilient;
> + unsigned short frameParallelDecoding;
> + unsigned short subSamplingX;
> + unsigned short subSamplingY;
> + unsigned short intraOnly;
> + unsigned short allowHighPrecisionMv;
> + unsigned short refreshEntropyProbs;
> + unsigned short prevIsKeyFrame;
This field is missing in the nvdec struct. What does it mean?
> +
> + unsigned char refFrameSignBias[4];
> +
> + unsigned char bitDepthMinus8Luma;
> + unsigned char bitDepthMinus8Chroma;
> + unsigned char loopFilterLevel;
> + unsigned char loopFilterSharpness;
> +
> + unsigned char modeRefLfEnabled;
> + unsigned char log2TileColumns;
> + unsigned char log2TileRows;
> +
> + unsigned char segmentEnabled;
> + unsigned char segmentMapUpdate;
> + unsigned char segmentMapTemporalUpdate;
> + unsigned char segmentFeatureMode;
> +
> + unsigned char segmentFeatureEnable[8][4];
> + short segmentFeatureData[8][4];
> + unsigned char mbSegmentTreeProbs[7];
> + unsigned char segmentPredProbs[3];
> + unsigned char reservedSegment16Bits[2];
> +
> + int qpYAc;
> + int qpYDc;
> + int qpChDc;
> + int qpChAc;
> +
> + unsigned int activeRefIdx[3];
> + unsigned int resetFrameContext;
> + unsigned int mcompFilterType;
> + unsigned int mbRefLfDelta[4];
> + unsigned int mbModeLfDelta[2];
> + unsigned int uncompressedHeaderSize;
> + unsigned int compressedHeaderSize;
I notice you've used the ffmpeg names for these rather than
the nvdec ones. To the extent that these have names in the spec,
I'd use those, but I don't know what they are. I don't mind either
way; just making an observation.
> +} VdpPictureInfoVP9;
> +
> /**
> * \brief Picture parameter information for an H.265/HEVC picture.
> *
Rest looks fine.
Thanks,
--phil
More information about the VDPAU
mailing list