Skip to content

Add HEVC Main 10/12 and HEVC Main 444 10/12 decode support in VDPAU API

ManojBonda requested to merge ManojBonda/libvdpau:10Bit_Decode_Support_1 into master

Add new profiles present in Range Extension profiles.

A.3.5 in Annexures of HEVC draft mentions of various profiles Main 12, Main 444, Main 444 10/12, Main 422 10/12, etc. under format range extension profiles. All these profiles have single profile_idc value 4 These are distinguished by additional flags present in the bistream specified in Table A.2 of HEVC draft.

FFmpeg skips parsing the additional flags and maintains single profile for all the format range extension profiles. However since various GPU generations support various features we are adding all the profiles separately so that support can be specified accurately.

This Change adds the new HEVC profiles in VDPAU.h

Add new VdpPictureInfoHEVCRangeExt picture parameter structure. As HEVC444 profile falls under RangeExtension profiles, Due to similarities between Range Extensions profiles, the picture parameter structure is re-used.

Also Adding new VdpChromaTypes for 16bit.

For 10/12 bit HEVC decoding, the output memory layout will be P010/P012 respectivley which are similar to P016 format i.e. each component is of 2 Byte width (16bit) with MSBs as valid bits as per the format.

Hence adding 16bit surfaces which can accommodate both P010 and P012 formats and can be used for both 10/12 bit decoding.

This Change also adds VDP_YCBCR_FORMAT_P016, VDP_YCBCR_FORMAT_P010 YCrCb formats to be used by get/put bits functions(transfer functions) to access the 16Bit Decoded Surface.

Merge request reports