VDPAU
Data Structures | Macros | Typedefs
VdpDecoder; Video Decoding object
Collaboration diagram for VdpDecoder; Video Decoding object:

Data Structures

struct  VdpBitstreamBuffer
 Application data buffer containing compressed video data. More...
 
struct  VdpPictureInfoMPEG1Or2
 Picture parameter information for an MPEG 1 or MPEG 2 picture. More...
 
struct  VdpReferenceFrameH264
 Information about an H.264 reference frame. More...
 
struct  VdpPictureInfoH264
 Picture parameter information for an H.264 picture. More...
 
struct  VdpPictureInfoH264Predictive
 Picture parameter information for an H.264 Hi444PP picture. More...
 
struct  VdpPictureInfoVC1
 Picture parameter information for a VC1 picture. More...
 
struct  VdpPictureInfoMPEG4Part2
 Picture parameter information for an MPEG-4 Part 2 picture. More...
 
struct  VdpPictureInfoHEVC
 Picture parameter information for an H.265/HEVC picture. More...
 

Macros

#define VDP_DECODER_PROFILE_MPEG1
 
#define VDP_DECODER_PROFILE_MPEG2_SIMPLE
 
#define VDP_DECODER_PROFILE_MPEG2_MAIN
 
#define VDP_DECODER_PROFILE_H264_BASELINE
 MPEG 4 part 10 == H.264 == AVC. More...
 
#define VDP_DECODER_PROFILE_H264_MAIN
 
#define VDP_DECODER_PROFILE_H264_HIGH
 
#define VDP_DECODER_PROFILE_VC1_SIMPLE
 
#define VDP_DECODER_PROFILE_VC1_MAIN
 
#define VDP_DECODER_PROFILE_VC1_ADVANCED
 
#define VDP_DECODER_PROFILE_MPEG4_PART2_SP
 
#define VDP_DECODER_PROFILE_MPEG4_PART2_ASP
 
#define VDP_DECODER_PROFILE_DIVX4_QMOBILE
 
#define VDP_DECODER_PROFILE_DIVX4_MOBILE
 
#define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER
 
#define VDP_DECODER_PROFILE_DIVX4_HD_1080P
 
#define VDP_DECODER_PROFILE_DIVX5_QMOBILE
 
#define VDP_DECODER_PROFILE_DIVX5_MOBILE
 
#define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER
 
#define VDP_DECODER_PROFILE_DIVX5_HD_1080P
 
#define VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE
 
#define VDP_DECODER_PROFILE_H264_EXTENDED
 
#define VDP_DECODER_PROFILE_H264_PROGRESSIVE_HIGH
 
#define VDP_DECODER_PROFILE_H264_CONSTRAINED_HIGH
 
#define VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
 Support for 8 bit depth only. More...
 
#define VDP_DECODER_PROFILE_HEVC_MAIN
 MPEG-H Part 2 == H.265 == HEVC. More...
 
#define VDP_DECODER_PROFILE_HEVC_MAIN_10
 
#define VDP_DECODER_PROFILE_HEVC_MAIN_STILL
 
#define VDP_DECODER_PROFILE_HEVC_MAIN_12
 
#define VDP_DECODER_PROFILE_HEVC_MAIN_444
 
#define VDP_DECODER_LEVEL_MPEG1_NA
 
#define VDP_DECODER_LEVEL_MPEG2_LL
 
#define VDP_DECODER_LEVEL_MPEG2_ML
 
#define VDP_DECODER_LEVEL_MPEG2_HL14
 
#define VDP_DECODER_LEVEL_MPEG2_HL
 
#define VDP_DECODER_LEVEL_H264_1
 
#define VDP_DECODER_LEVEL_H264_1b
 
#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_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_VC1_SIMPLE_LOW
 
#define VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM
 
#define VDP_DECODER_LEVEL_VC1_MAIN_LOW
 
#define VDP_DECODER_LEVEL_VC1_MAIN_MEDIUM
 
#define VDP_DECODER_LEVEL_VC1_MAIN_HIGH
 
#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_MPEG4_PART2_SP_L0
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L1
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L2
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L3
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L0
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L1
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L2
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L3
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L4
 
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L5
 
#define VDP_DECODER_LEVEL_DIVX_NA
 
#define VDP_DECODER_LEVEL_HEVC_1   30
 
#define VDP_DECODER_LEVEL_HEVC_2
 
#define VDP_DECODER_LEVEL_HEVC_2_1
 
#define VDP_DECODER_LEVEL_HEVC_3
 
#define VDP_DECODER_LEVEL_HEVC_3_1
 
#define VDP_DECODER_LEVEL_HEVC_4
 
#define VDP_DECODER_LEVEL_HEVC_4_1
 
#define VDP_DECODER_LEVEL_HEVC_5
 
#define VDP_DECODER_LEVEL_HEVC_5_1
 
#define VDP_DECODER_LEVEL_HEVC_5_2
 
#define VDP_DECODER_LEVEL_HEVC_6
 
#define VDP_DECODER_LEVEL_HEVC_6_1
 
#define VDP_DECODER_LEVEL_HEVC_6_2
 
#define VDP_BITSTREAM_BUFFER_VERSION   0
 

Typedefs

typedef uint32_t VdpDecoderProfile
 The set of all known compressed video formats, and associated profiles, that may be decoded. More...
 
typedef VdpStatus VdpDecoderQueryCapabilities(VdpDevice device, VdpDecoderProfile profile, VdpBool *is_supported, uint32_t *max_level, uint32_t *max_macroblocks, uint32_t *max_width, uint32_t *max_height)
 Query the implementation's VdpDecoder capabilities. More...
 
typedef uint32_t VdpDecoder
 An opaque handle representing a VdpDecoder object. More...
 
typedef VdpStatus VdpDecoderCreate(VdpDevice device, VdpDecoderProfile profile, uint32_t width, uint32_t height, uint32_t max_references, VdpDecoder *decoder)
 Create a VdpDecoder. More...
 
typedef VdpStatus VdpDecoderDestroy(VdpDecoder decoder)
 Destroy a VdpDecoder. More...
 
typedef VdpStatus VdpDecoderGetParameters(VdpDecoder decoder, VdpDecoderProfile *profile, uint32_t *width, uint32_t *height)
 Retrieve the parameters used to create a VdpDecoder. More...
 
typedef void VdpPictureInfo
 A generic "picture information" type. More...
 
typedef VdpPictureInfoMPEG4Part2 VdpPictureInfoDivX4
 Picture parameter information for a DivX 4 picture. More...
 
typedef VdpPictureInfoMPEG4Part2 VdpPictureInfoDivX5
 Picture parameter information for a DivX 5 picture. More...
 
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. More...
 

Detailed Description

The VdpDecoder object decodes compressed video data, writing the results to a VdpVideoSurface.

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.

Macro Definition Documentation

#define VDP_BITSTREAM_BUFFER_VERSION   0
#define VDP_DECODER_LEVEL_DIVX_NA
#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_HEVC_1   30

The VDPAU H.265/HEVC decoder levels correspond to the values of general_level_idc as described in the H.265 Specification, Annex A, Table A.1. The enumeration values are equal to thirty times the level number.

#define VDP_DECODER_LEVEL_HEVC_2
#define VDP_DECODER_LEVEL_HEVC_2_1
#define VDP_DECODER_LEVEL_HEVC_3
#define VDP_DECODER_LEVEL_HEVC_3_1
#define VDP_DECODER_LEVEL_HEVC_4
#define VDP_DECODER_LEVEL_HEVC_4_1
#define VDP_DECODER_LEVEL_HEVC_5
#define VDP_DECODER_LEVEL_HEVC_5_1
#define VDP_DECODER_LEVEL_HEVC_5_2
#define VDP_DECODER_LEVEL_HEVC_6
#define VDP_DECODER_LEVEL_HEVC_6_1
#define VDP_DECODER_LEVEL_HEVC_6_2
#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_MPEG4_PART2_ASP_L0
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L1
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L2
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L3
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L4
#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L5
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L0
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L1
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L2
#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L3
#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_DIVX4_HD_1080P
#define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER
#define VDP_DECODER_PROFILE_DIVX4_MOBILE
#define VDP_DECODER_PROFILE_DIVX4_QMOBILE
#define VDP_DECODER_PROFILE_DIVX5_HD_1080P
#define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER
#define VDP_DECODER_PROFILE_DIVX5_MOBILE
#define VDP_DECODER_PROFILE_DIVX5_QMOBILE
#define VDP_DECODER_PROFILE_H264_BASELINE

MPEG 4 part 10 == H.264 == AVC.

#define VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE
#define VDP_DECODER_PROFILE_H264_CONSTRAINED_HIGH
#define VDP_DECODER_PROFILE_H264_EXTENDED
#define VDP_DECODER_PROFILE_H264_HIGH
#define VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE

Support for 8 bit depth only.

#define VDP_DECODER_PROFILE_H264_MAIN
#define VDP_DECODER_PROFILE_H264_PROGRESSIVE_HIGH
#define VDP_DECODER_PROFILE_HEVC_MAIN

MPEG-H Part 2 == H.265 == HEVC.

#define VDP_DECODER_PROFILE_HEVC_MAIN_10
#define VDP_DECODER_PROFILE_HEVC_MAIN_12
#define VDP_DECODER_PROFILE_HEVC_MAIN_444
#define VDP_DECODER_PROFILE_HEVC_MAIN_STILL
#define VDP_DECODER_PROFILE_MPEG1
#define VDP_DECODER_PROFILE_MPEG2_MAIN
#define VDP_DECODER_PROFILE_MPEG2_SIMPLE
#define VDP_DECODER_PROFILE_MPEG4_PART2_ASP
#define VDP_DECODER_PROFILE_MPEG4_PART2_SP
#define VDP_DECODER_PROFILE_VC1_ADVANCED
#define VDP_DECODER_PROFILE_VC1_MAIN
#define VDP_DECODER_PROFILE_VC1_SIMPLE

Typedef Documentation

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.

Parameters
[in]deviceThe device that will contain the surface.
[in]profileThe video format the decoder will decode.
[in]widthThe width of the new surface.
[in]heightThe height of the new surface.
[in]max_referencesThe 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]decoderThe new decoder's handle.
Returns
VdpStatus The completion status of the operation.
typedef VdpStatus VdpDecoderDestroy(VdpDecoder decoder)

Destroy a VdpDecoder.

Parameters
[in]surfaceThe decoder's handle.
Returns
VdpStatus The completion status of the operation.
typedef VdpStatus VdpDecoderGetParameters(VdpDecoder decoder,VdpDecoderProfile *profile, uint32_t *width, uint32_t *height)

Retrieve the parameters used to create a VdpDecoder.

Parameters
[in]surfaceThe surface's handle.
[out]profileThe video format used to create the decoder.
[out]widthThe width of surfaces decode by the decoder.
[out]heightThe height of surfaces decode by the decoder
Returns
VdpStatus The completion status of the operation.
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_macroblocks, uint32_t *max_width, uint32_t *max_height)

Query the implementation's VdpDecoder capabilities.

Parameters
[in]deviceThe device to query.
[in]profileThe decoder profile for which information is requested.
[out]is_supportedIs this profile supported?
[out]max_levelThe maximum specification level supported for this profile.
[out]max_macroblocksThe maximum supported surface size in macroblocks. Note that this could be greater than that dictated by the maximum level.
[out]max_widthThe maximum supported surface width for this profile. Note that this could be greater than that dictated by the maximum level.
[out]max_heightThe maximum supported surface height for this profile. Note that this could be greater than that dictated by the maximum level.
Returns
VdpStatus The completion status of the operation.
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.

Parameters
[in]decoderThe decoder object that will perform the decode operation.
[in]targetThe video surface to render to.
[in]picture_infoA (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_countThe number of bitstream buffers containing compressed data for this picture.
[in]bitstream_buffersAn array of bitstream buffers.
Returns
VdpStatus The completion status of the operation.

See Video Mixer Usage for additional information.

typedef void VdpPictureInfo

A generic "picture information" 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.

Picture parameter information for a DivX 4 picture.

Due to similarites between MPEG-4 Part 2 and DivX 4, the picture parameter structure is re-used.

Picture parameter information for a DivX 5 picture.

Due to similarites between MPEG-4 Part 2 and DivX 5, the picture parameter structure is re-used.