A specific VDPAU implementation may support decoding multiple types of compressed video data. However, VdpDecoder objects are able to decode a specific type of compressed video data. This type must be specified during creation.
#define VDP_BITSTREAM_BUFFER_VERSION 0 |
#define VDP_DECODER_LEVEL_H264_1 |
#define VDP_DECODER_LEVEL_H264_1_1 |
#define VDP_DECODER_LEVEL_H264_1_2 |
#define VDP_DECODER_LEVEL_H264_1_3 |
#define VDP_DECODER_LEVEL_H264_1b |
#define VDP_DECODER_LEVEL_H264_2 |
#define VDP_DECODER_LEVEL_H264_2_1 |
#define VDP_DECODER_LEVEL_H264_2_2 |
#define VDP_DECODER_LEVEL_H264_3 |
#define VDP_DECODER_LEVEL_H264_3_1 |
#define VDP_DECODER_LEVEL_H264_3_2 |
#define VDP_DECODER_LEVEL_H264_4 |
#define VDP_DECODER_LEVEL_H264_4_1 |
#define VDP_DECODER_LEVEL_H264_4_2 |
#define VDP_DECODER_LEVEL_H264_5 |
#define VDP_DECODER_LEVEL_H264_5_1 |
#define VDP_DECODER_LEVEL_MPEG1_NA |
#define VDP_DECODER_LEVEL_MPEG2_HL |
#define VDP_DECODER_LEVEL_MPEG2_HL14 |
#define VDP_DECODER_LEVEL_MPEG2_LL |
#define VDP_DECODER_LEVEL_MPEG2_ML |
#define VDP_DECODER_LEVEL_VC1_ADVANCED_L0 |
#define VDP_DECODER_LEVEL_VC1_ADVANCED_L1 |
#define VDP_DECODER_LEVEL_VC1_ADVANCED_L2 |
#define VDP_DECODER_LEVEL_VC1_ADVANCED_L3 |
#define VDP_DECODER_LEVEL_VC1_ADVANCED_L4 |
#define VDP_DECODER_LEVEL_VC1_MAIN_HIGH |
#define VDP_DECODER_LEVEL_VC1_MAIN_LOW |
#define VDP_DECODER_LEVEL_VC1_MAIN_MEDIUM |
#define VDP_DECODER_LEVEL_VC1_SIMPLE_LOW |
#define VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM |
#define VDP_DECODER_PROFILE_H264_BASELINE |
MPEG 4 part 10 == H.264 == AVC.
#define VDP_DECODER_PROFILE_H264_HIGH |
#define VDP_DECODER_PROFILE_H264_MAIN |
#define VDP_DECODER_PROFILE_MPEG1 |
#define VDP_DECODER_PROFILE_MPEG2_MAIN |
#define VDP_DECODER_PROFILE_MPEG2_SIMPLE |
#define VDP_DECODER_PROFILE_VC1_ADVANCED |
#define VDP_DECODER_PROFILE_VC1_MAIN |
#define VDP_DECODER_PROFILE_VC1_SIMPLE |
typedef uint32_t VdpDecoder |
An opaque handle representing a VdpDecoder object.
typedef VdpStatus VdpDecoderCreate(VdpDevice device, VdpDecoderProfile profile, uint32_t width, uint32_t height, uint32_t max_references,VdpDecoder *decoder) |
Create a VdpDecoder.
[in] | device | The device that will contain the surface. |
[in] | profile | The video format the decoder will decode. |
[in] | width | The width of the new surface. |
[in] | height | The height of the new surface. |
[in] | max_references | The maximum number of references that may be used by a single frame in the stream to be decoded. This parameter exists mainly for formats such as H.264, where different streams may use a different number of references. Requesting too many references may waste memory, but decoding should still operate correctly. Requesting too few references will cause decoding to fail. |
[out] | decoder | The new decoder's handle. |
typedef VdpStatus VdpDecoderDestroy(VdpDecoder decoder) |
Destroy a VdpDecoder.
[in] | surface | The decoder's handle. |
typedef VdpStatus VdpDecoderGetParameters(VdpDecoder decoder,VdpDecoderProfile *profile, uint32_t *width, uint32_t *height) |
Retrieve the parameters used to create a VdpDecoder.
[in] | surface | The surface's handle. |
[out] | profile | The video format used to create the decoder. |
[out] | width | The width of surfaces decode by the decoder. |
[out] | height | The height of surfaces decode by the decoder |
typedef uint32_t VdpDecoderProfile |
The set of all known compressed video formats, and associated profiles, that may be decoded.
typedef VdpStatus VdpDecoderQueryCapabilities(VdpDevice device, VdpDecoderProfile profile,VdpBool *is_supported, uint32_t *max_level, uint32_t *max_references, uint32_t *max_width, uint32_t *max_height) |
Query the implementation's VdpDecoder capabilities.
[in] | device | The device to query. |
[in] | profile | The decoder profile for which information is requested. |
[out] | is_supported | Is this profile supported? |
[out] | max_level | The maximum specification level supported for this profile. |
[out] | max_references | The maximum number of reference frames supported for this level. This mainly makes sense for formats such as H.264, although the value will be valid in all cases. Note that this could be greater than that dictated by the maximum level. |
[out] | max_width | The maximum supported surface width for this profile. Note that this could be greater than that dictated by the maximum level. |
[out] | max_height | The maximum supported surface height for this profile. Note that this could be greater than that dictated by the maximum level. |
typedef VdpStatus VdpDecoderRender(VdpDecoder decoder, VdpVideoSurface target, VdpPictureInfo const *picture_info, uint32_t bitstream_buffer_count, VdpBitstreamBuffer const *bitstream_buffers) |
Decode a compressed field/frame and render the result into a VdpVideoSurface.
[in] | decoder | The decoder object that will perform the decode operation. |
[in] | target | The video surface to render to. |
[in] | picture_info | A (pointer to a) structure containing information about the picture to be decoded. Note that the appropriate type of VdpPictureInfo* structure must be provided to match to profile that the decoder was created for. |
[in] | bitstream_buffer_count | The number of bitstream buffers containing compressed data for this picture. |
[in] | bitstream_buffers | An array of bitstream buffers. |
typedef void* VdpPictureInfo |
A generic "picture information" pointer type.
This type serves solely to document the expected usage of a generic (void *) function parameter. In actual usage, the application is expected to physically provide a pointer to an instance of one of the "real" VdpPictureInfo* structures, picking the type appropriate for the decoder object in question.