Skip to content

Add new frame and field mode chroma types. Add VdpDecoderQueryProfileCapability API

ManojBonda requested to merge ManojBonda/libvdpau:master into master

Add new frame and field mode chroma types. Add VdpDecoderQueryProfileCapability API

Chroma types : VDP_CHROMA_TYPE_420 VDP_CHROMA_TYPE_422 VDP_CHROMA_TYPE_444

already exist, surfaces of these types could be transparently used with any VdpVideoDecoder. The implementation is free to internally convert the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. The interop API would allow registration of these surfaces for either field or frame based interop.

This change adds new enums for frame and field chroma types: VDP_CHROMA_TYPE_420_FIELD VDP_CHROMA_TYPE_422_FIELD VDP_CHROMA_TYPE_444_FIELD VDP_CHROMA_TYPE_420_FRAME VDP_CHROMA_TYPE_422_FRAME VDP_CHROMA_TYPE_444_FRAME

So that frame/field based video surfaces can be created and exposed via VDPAU OpenGL interop.

The new chroma types could only be used by a VdpVideoDecoder that supports output to field/frame surfaces respectively. Internal surface convertion is not allowed. The interop API would allow registration of these surfaces to field/frame based interop only. This will avoid implicit conversions and allocation of shadow surface.

Existing VdpDecoderQueryCapabilities() returns maxlevel, maxwidth, height and macro blocks for a given decoder profile. Since it is not possible to extend this API to return more capabilities, adding new API VdpDecoderQueryProfileCapability(). In this change, new API will be able to return supported picture structure along with other existing capabilities.

VdpDecoderQueryProfileCapability() can be extended in future to query newer capabilities exposed. VdpDecoderCapabilities defines the capabilities that can be queried.

This function returns queried capability of the requested profile on the underlying h/w. By design, only one capability can be queried at a time.

Merge request reports