vdpau.h   vdpau.h 
skipping to change at line 710 skipping to change at line 710
* *
* In most case, VDPAU includes no provision for modifying existing * In most case, VDPAU includes no provision for modifying existing
* structure definitions, although they may be deprecated. * structure definitions, although they may be deprecated.
* *
* New structures may be created, together with new API entry * New structures may be created, together with new API entry
* points or feature/attribute/parameter values, to expose new * points or feature/attribute/parameter values, to expose new
* functionality. * functionality.
* *
* A few structures are considered plausible candidates for future extensio n. * A few structures are considered plausible candidates for future extensio n.
* Such structures include a version number as the first field, indicating the * Such structures include a version number as the first field, indicating the
* exact layout of the client-provided data. Such structures may only be * exact layout of the client-provided data. When changing such structures,
* modified by adding new fields to the end of the structure, so that the the
* original structure definition is completely compatible with a leading * old structure must be preserved and a new structure created. This allows
* subset of fields of the extended structure. * applications built against the old version of the structure to continue
to
* interoperate. For example, to extend the VdpProcamp structure, define a
new
* VdpProcamp1 and update VdpGenerateCSCMatrix to take the new structure as
an
* argument. Document in a comment that the caller must fill the struct_ver
sion
* field with the value 1. VDPAU implementations should use the struct_vers
ion
* field to determine which version of the structure the application was bu
ilt
* against. Note that you cannot simply increment the value of
* VDP_PROCAMP_VERSION because applications recompiled against a newer vers
ion
* of vdpau.h but that have not been updated to use the new structure must
still
* report that they're using version 0.
*
* Note that the layouts of VdpPictureInfo structures are defined by their
* corresponding VdpDecoderProfile numbers, so no struct_version field is
* needed for them. This layout includes the size of the structure, so new
* profiles that extend existing functionality may incorporate the old
* VdpPictureInfo as a substructure, but may not modify existing VdpPicture
Info
* structures.
* *
* \subsection extend_functions Functions * \subsection extend_functions Functions
* *
* Existing functions may not be modified, although they may be * Existing functions may not be modified, although they may be
* deprecated. * deprecated.
* *
* New functions may be added at will. Note the enumeration * New functions may be added at will. Note the enumeration
* requirements when modifying the enumeration that defines the * requirements when modifying the enumeration that defines the
* list of entry points. * list of entry points.
* *
skipping to change at line 807 skipping to change at line 822
*/ */
#define VDP_INVALID_HANDLE 0xffffffffU #define VDP_INVALID_HANDLE 0xffffffffU
/** /**
* \brief The set of all chroma formats for \ref VdpVideoSurface * \brief The set of all chroma formats for \ref VdpVideoSurface
* "VdpVideoSurface"s. * "VdpVideoSurface"s.
*/ */
typedef uint32_t VdpChromaType; typedef uint32_t VdpChromaType;
/** \hideinitializer \brief 4:2:0 chroma format. */ /** \hideinitializer \brief 4:2:0 chroma format. */
#define VDP_CHROMA_TYPE_420 (VdpChromaType)0 #define VDP_CHROMA_TYPE_420 ((VdpChromaType)0)
/** \hideinitializer \brief 4:2:2 chroma format. */ /** \hideinitializer \brief 4:2:2 chroma format. */
#define VDP_CHROMA_TYPE_422 (VdpChromaType)1 #define VDP_CHROMA_TYPE_422 ((VdpChromaType)1)
/** \hideinitializer \brief 4:4:4 chroma format. */ /** \hideinitializer \brief 4:4:4 chroma format. */
#define VDP_CHROMA_TYPE_444 (VdpChromaType)2 #define VDP_CHROMA_TYPE_444 ((VdpChromaType)2)
/** /**
* \brief The set of all known YCbCr surface formats. * \brief The set of all known YCbCr surface formats.
*/ */
typedef uint32_t VdpYCbCrFormat; typedef uint32_t VdpYCbCrFormat;
/** /**
* \hideinitializer * \hideinitializer
* \brief The "NV12" YCbCr surface format. * \brief The "NV12" YCbCr surface format.
* *
* This format has a two planes, a Y plane and a UV plane. * This format has a two planes, a Y plane and a UV plane.
* *
* The Y plane is an array of byte-sized Y components. * The Y plane is an array of byte-sized Y components.
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
* *
* The UV plane is an array of interleaved byte-sized U and V * The UV plane is an array of interleaved byte-sized U and V
* components, in the order U, V, U, V. Applications should * components, in the order U, V, U, V. Applications should
* access this data via a uint8_t pointer. * access this data via a uint8_t pointer.
*/ */
#define VDP_YCBCR_FORMAT_NV12 (VdpYCbCrFormat)0 #define VDP_YCBCR_FORMAT_NV12 ((VdpYCbCrFormat)0)
/** /**
* \hideinitializer * \hideinitializer
* \brief The "YV12" YCbCr surface format. * \brief The "YV12" YCbCr surface format.
* *
* This format has a three planes, a Y plane, a V plane, and a U * This format has a three planes, a Y plane, a V plane, and a U
* plane. * plane.
* *
* Each of the planes is an array of byte-sized components. * Each of the planes is an array of byte-sized components.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_YCBCR_FORMAT_YV12 (VdpYCbCrFormat)1 #define VDP_YCBCR_FORMAT_YV12 ((VdpYCbCrFormat)1)
/** /**
* \hideinitializer * \hideinitializer
* \brief The "UYVY" YCbCr surface format. * \brief The "UYVY" YCbCr surface format.
* *
* This format may also be known as Y422, UYNV, HDYC. * This format may also be known as Y422, UYNV, HDYC.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of interleaved byte-sized Y, U, and V * This plane is an array of interleaved byte-sized Y, U, and V
* components, in the order U, Y, V, Y, U, Y, V, Y. * components, in the order U, Y, V, Y, U, Y, V, Y.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_YCBCR_FORMAT_UYVY (VdpYCbCrFormat)2 #define VDP_YCBCR_FORMAT_UYVY ((VdpYCbCrFormat)2)
/** /**
* \hideinitializer * \hideinitializer
* \brief The "YUYV" YCbCr surface format. * \brief The "YUYV" YCbCr surface format.
* *
* This format may also be known as YUY2, YUNV, V422. * This format may also be known as YUY2, YUNV, V422.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of interleaved byte-sized Y, U, and V * This plane is an array of interleaved byte-sized Y, U, and V
* components, in the order Y, U, Y, V, Y, U, Y, V. * components, in the order Y, U, Y, V, Y, U, Y, V.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_YCBCR_FORMAT_YUYV (VdpYCbCrFormat)3 #define VDP_YCBCR_FORMAT_YUYV ((VdpYCbCrFormat)3)
/** /**
* \hideinitializer * \hideinitializer
* \brief A packed YCbCr format. * \brief A packed YCbCr format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array packed 32-bit pixel data. Within each * This plane is an array packed 32-bit pixel data. Within each
* 32-bit pixel, bits [31:24] contain A, bits [23:16] contain V, * 32-bit pixel, bits [31:24] contain A, bits [23:16] contain V,
* bits [15:8] contain U, and bits [7:0] contain Y. * bits [15:8] contain U, and bits [7:0] contain Y.
* *
* Applications should access this data via a uint32_t pointer. * Applications should access this data via a uint32_t pointer.
*/ */
#define VDP_YCBCR_FORMAT_Y8U8V8A8 (VdpYCbCrFormat)4 #define VDP_YCBCR_FORMAT_Y8U8V8A8 ((VdpYCbCrFormat)4)
/** /**
* \hideinitializer * \hideinitializer
* \brief A packed YCbCr format. * \brief A packed YCbCr format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array packed 32-bit pixel data. Within each * This plane is an array packed 32-bit pixel data. Within each
* 32-bit pixel, bits [31:24] contain A, bits [23:16] contain Y, * 32-bit pixel, bits [31:24] contain A, bits [23:16] contain Y,
* bits [15:8] contain U, and bits [7:0] contain V. * bits [15:8] contain U, and bits [7:0] contain V.
* *
* Applications should access this data via a uint32_t pointer. * Applications should access this data via a uint32_t pointer.
*/ */
#define VDP_YCBCR_FORMAT_V8U8Y8A8 (VdpYCbCrFormat)5 #define VDP_YCBCR_FORMAT_V8U8Y8A8 ((VdpYCbCrFormat)5)
/** /**
* \brief The set of all known RGB surface formats. * \brief The set of all known RGB surface formats.
*/ */
typedef uint32_t VdpRGBAFormat; typedef uint32_t VdpRGBAFormat;
/** /**
* \hideinitializer * \hideinitializer
* \brief A packed RGB format. * \brief A packed RGB format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array packed 32-bit pixel data. Within each * This plane is an array packed 32-bit pixel data. Within each
* 32-bit pixel, bits [31:24] contain A, bits [23:16] contain R, * 32-bit pixel, bits [31:24] contain A, bits [23:16] contain R,
* bits [15:8] contain G, and bits [7:0] contain B. * bits [15:8] contain G, and bits [7:0] contain B.
* *
* Applications should access this data via a uint32_t pointer. * Applications should access this data via a uint32_t pointer.
*/ */
#define VDP_RGBA_FORMAT_B8G8R8A8 (VdpRGBAFormat)0 #define VDP_RGBA_FORMAT_B8G8R8A8 ((VdpRGBAFormat)0)
/** /**
* \hideinitializer * \hideinitializer
* \brief A packed RGB format. * \brief A packed RGB format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array packed 32-bit pixel data. Within each * This plane is an array packed 32-bit pixel data. Within each
* 32-bit pixel, bits [31:24] contain A, bits [23:16] contain B, * 32-bit pixel, bits [31:24] contain A, bits [23:16] contain B,
* bits [15:8] contain G, and bits [7:0] contain R. * bits [15:8] contain G, and bits [7:0] contain R.
* *
* Applications should access this data via a uint32_t pointer. * Applications should access this data via a uint32_t pointer.
*/ */
#define VDP_RGBA_FORMAT_R8G8B8A8 (VdpRGBAFormat)1 #define VDP_RGBA_FORMAT_R8G8B8A8 ((VdpRGBAFormat)1)
/** /**
* \hideinitializer * \hideinitializer
* \brief A packed RGB format. * \brief A packed RGB format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array packed 32-bit pixel data. Within each * This plane is an array packed 32-bit pixel data. Within each
* 32-bit pixel, bits [31:30] contain A, bits [29:20] contain B, * 32-bit pixel, bits [31:30] contain A, bits [29:20] contain B,
* bits [19:10] contain G, and bits [9:0] contain R. * bits [19:10] contain G, and bits [9:0] contain R.
* *
* Applications should access this data via a uint32_t pointer. * Applications should access this data via a uint32_t pointer.
*/ */
#define VDP_RGBA_FORMAT_R10G10B10A2 (VdpRGBAFormat)2 #define VDP_RGBA_FORMAT_R10G10B10A2 ((VdpRGBAFormat)2)
/** /**
* \hideinitializer * \hideinitializer
* \brief A packed RGB format. * \brief A packed RGB format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array packed 32-bit pixel data. Within each * This plane is an array packed 32-bit pixel data. Within each
* 32-bit pixel, bits [31:30] contain A, bits [29:20] contain R, * 32-bit pixel, bits [31:30] contain A, bits [29:20] contain R,
* bits [19:10] contain G, and bits [9:0] contain B. * bits [19:10] contain G, and bits [9:0] contain B.
* *
* Applications should access this data via a uint32_t pointer. * Applications should access this data via a uint32_t pointer.
*/ */
#define VDP_RGBA_FORMAT_B10G10R10A2 (VdpRGBAFormat)3 #define VDP_RGBA_FORMAT_B10G10R10A2 ((VdpRGBAFormat)3)
/** /**
* \hideinitializer * \hideinitializer
* \brief An alpha-only surface format. * \brief An alpha-only surface format.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of byte-sized components. * This plane is an array of byte-sized components.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_RGBA_FORMAT_A8 (VdpRGBAFormat)4 #define VDP_RGBA_FORMAT_A8 ((VdpRGBAFormat)4)
/** /**
* \brief The set of all known indexed surface formats. * \brief The set of all known indexed surface formats.
*/ */
typedef uint32_t VdpIndexedFormat; typedef uint32_t VdpIndexedFormat;
/** /**
* \hideinitializer * \hideinitializer
* \brief A 4-bit indexed format, with alpha. * \brief A 4-bit indexed format, with alpha.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of byte-sized components. Within each * This plane is an array of byte-sized components. Within each
* byte, bits [7:4] contain I (index), and bits [3:0] contain A. * byte, bits [7:4] contain I (index), and bits [3:0] contain A.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_INDEXED_FORMAT_A4I4 (VdpIndexedFormat)0 #define VDP_INDEXED_FORMAT_A4I4 ((VdpIndexedFormat)0)
/** /**
* \hideinitializer * \hideinitializer
* \brief A 4-bit indexed format, with alpha. * \brief A 4-bit indexed format, with alpha.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of byte-sized components. Within each * This plane is an array of byte-sized components. Within each
* byte, bits [7:4] contain A, and bits [3:0] contain I (index). * byte, bits [7:4] contain A, and bits [3:0] contain I (index).
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_INDEXED_FORMAT_I4A4 (VdpIndexedFormat)1 #define VDP_INDEXED_FORMAT_I4A4 ((VdpIndexedFormat)1)
/** /**
* \hideinitializer * \hideinitializer
* \brief A 8-bit indexed format, with alpha. * \brief A 8-bit indexed format, with alpha.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of interleaved byte-sized A and I * This plane is an array of interleaved byte-sized A and I
* (index) components, in the order A, I, A, I. * (index) components, in the order A, I, A, I.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_INDEXED_FORMAT_A8I8 (VdpIndexedFormat)2 #define VDP_INDEXED_FORMAT_A8I8 ((VdpIndexedFormat)2)
/** /**
* \hideinitializer * \hideinitializer
* \brief A 8-bit indexed format, with alpha. * \brief A 8-bit indexed format, with alpha.
* *
* This format has a single plane. * This format has a single plane.
* *
* This plane is an array of interleaved byte-sized A and I * This plane is an array of interleaved byte-sized A and I
* (index) components, in the order I, A, I, A. * (index) components, in the order I, A, I, A.
* *
* Applications should access this data via a uint8_t pointer. * Applications should access this data via a uint8_t pointer.
*/ */
#define VDP_INDEXED_FORMAT_I8A8 (VdpIndexedFormat)3 #define VDP_INDEXED_FORMAT_I8A8 ((VdpIndexedFormat)3)
/** /**
* \brief A location within a surface. * \brief A location within a surface.
* *
* The VDPAU co-ordinate system has its origin at the top-left * The VDPAU co-ordinate system has its origin at the top-left
* of a surface, with x and y components increasing right and * of a surface, with x and y components increasing right and
* down. * down.
*/ */
typedef struct { typedef struct {
/** X co-ordinate. */ /** X co-ordinate. */
skipping to change at line 1418 skipping to change at line 1433
/** /**
* \brief YCbCr color space specification. * \brief YCbCr color space specification.
* *
* A number of YCbCr color spaces exist. This enumeration * A number of YCbCr color spaces exist. This enumeration
* defines the specifications known to VDPAU. * defines the specifications known to VDPAU.
*/ */
typedef uint32_t VdpColorStandard; typedef uint32_t VdpColorStandard;
/** \hideinitializer \brief ITU-R BT.601 */ /** \hideinitializer \brief ITU-R BT.601 */
#define VDP_COLOR_STANDARD_ITUR_BT_601 (VdpColorStandard)0 #define VDP_COLOR_STANDARD_ITUR_BT_601 ((VdpColorStandard)0)
/** \hideinitializer \brief ITU-R BT.709 */ /** \hideinitializer \brief ITU-R BT.709 */
#define VDP_COLOR_STANDARD_ITUR_BT_709 (VdpColorStandard)1 #define VDP_COLOR_STANDARD_ITUR_BT_709 ((VdpColorStandard)1)
/** \hideinitializer \brief SMPTE-240M */ /** \hideinitializer \brief SMPTE-240M */
#define VDP_COLOR_STANDARD_SMPTE_240M (VdpColorStandard)2 #define VDP_COLOR_STANDARD_SMPTE_240M ((VdpColorStandard)2)
/** /**
* \brief Generate a color space conversion matrix * \brief Generate a color space conversion matrix
* \param[in] procamp The procamp adjustments to make. If NULL, * \param[in] procamp The procamp adjustments to make. If NULL,
* no adjustments will be made. * no adjustments will be made.
* \param[in] standard The YCbCr color space to convert from. * \param[in] standard The YCbCr color space to convert from.
* \param[out] csc_matrix The CSC matrix to initialize. * \param[out] csc_matrix The CSC matrix to initialize.
* \return VdpStatus The completion status of the operation. * \return VdpStatus The completion status of the operation.
*/ */
typedef VdpStatus VdpGenerateCSCMatrix( typedef VdpStatus VdpGenerateCSCMatrix(
skipping to change at line 1695 skipping to change at line 1710
* \hideinitializer * \hideinitializer
* \brief 8-bit per component packed into 32-bits * \brief 8-bit per component packed into 32-bits
* *
* This format is an array of packed 32-bit RGB color values. * This format is an array of packed 32-bit RGB color values.
* Bits [31:24] are unused, bits [23:16] contain R, bits [15:8] * Bits [31:24] are unused, bits [23:16] contain R, bits [15:8]
* contain G, and bits [7:0] contain B. Note: The format is * contain G, and bits [7:0] contain B. Note: The format is
* physically an array of uint32_t values, and should be accessed * physically an array of uint32_t values, and should be accessed
* as such by the application in order to avoid endianness * as such by the application in order to avoid endianness
* issues. * issues.
*/ */
#define VDP_COLOR_TABLE_FORMAT_B8G8R8X8 (VdpColorTableFormat)0 #define VDP_COLOR_TABLE_FORMAT_B8G8R8X8 ((VdpColorTableFormat)0)
/** /**
* \brief Query the implementation's VdpOutputSurface * \brief Query the implementation's VdpOutputSurface
* capabilities. * capabilities.
* \param[in] device The device to query. * \param[in] device The device to query.
* \param[in] surface_rgba_format The surface format for * \param[in] surface_rgba_format The surface format for
* which information is requested. * which information is requested.
* \param[out] is_supported Is this surface format supported? * \param[out] is_supported Is this surface format supported?
* \param[out] max_width The maximum supported surface width for * \param[out] max_width The maximum supported surface width for
* this chroma type. * this chroma type.
skipping to change at line 2234 skipping to change at line 2249
* compositing operation. * compositing operation.
* \param[in] destination_rect The sub-rectangle of the * \param[in] destination_rect The sub-rectangle of the
* destination surface to update. If NULL, the entire * destination surface to update. If NULL, the entire
* destination surface will be updated. * destination surface will be updated.
* \param[in] source_surface The source surface for the * \param[in] source_surface The source surface for the
* compositing operation. The surface is treated as having * compositing operation. The surface is treated as having
* four components: red, green, blue and alpha. Any * four components: red, green, blue and alpha. Any
* missing components are treated as 1.0. For example, for * missing components are treated as 1.0. For example, for
* an A8 VdpOutputSurface, alpha will come from the surface * an A8 VdpOutputSurface, alpha will come from the surface
* but red, green and blue will be treated as 1.0. If * but red, green and blue will be treated as 1.0. If
* source_surface is NULL, all components will be treated * source_surface is VDP_INVALID_HANDLE, all components will
* as 1.0. Note that destination_surface and * be treated as 1.0. Note that destination_surface and
* source_surface must have been allocated via the same * source_surface must have been allocated via the same
* \ref VdpDevice "VdpDevice". * \ref VdpDevice "VdpDevice".
* \param[in] source_rect The sub-rectangle of the source * \param[in] source_rect The sub-rectangle of the source
* surface to read from. If NULL, the entire * surface to read from. If NULL, the entire
* source_surface will be read. Left/right and/or top/bottom * source_surface will be read. Left/right and/or top/bottom
* co-ordinates may be swapped to flip the source. Any * co-ordinates may be swapped to flip the source. Any
* flip occurs prior to any requested rotation. Values * flip occurs prior to any requested rotation. Values
* from outside the source surface are valid and samples * from outside the source surface are valid and samples
* at those locations will be taken from the nearest edge. * at those locations will be taken from the nearest edge.
* \param[in] colors A pointer to an array of \ref VdpColor * \param[in] colors A pointer to an array of \ref VdpColor
skipping to change at line 2314 skipping to change at line 2329
* compositing operation. * compositing operation.
* \param[in] destination_rect The sub-rectangle of the * \param[in] destination_rect The sub-rectangle of the
* destination surface to update. If NULL, the entire * destination surface to update. If NULL, the entire
* destination surface will be updated. * destination surface will be updated.
* \param[in] source_surface The source surface for the * \param[in] source_surface The source surface for the
* compositing operation. The surface is treated as having * compositing operation. The surface is treated as having
* four components: red, green, blue and alpha. Any * four components: red, green, blue and alpha. Any
* missing components are treated as 1.0. For example, for * missing components are treated as 1.0. For example, for
* an A8 VdpBitmapSurface, alpha will come from the surface * an A8 VdpBitmapSurface, alpha will come from the surface
* but red, green and blue will be treated as 1.0. If * but red, green and blue will be treated as 1.0. If
* source_surface is NULL, all components will be treated * source_surface is VDP_INVALID_HANDLE, all components will
* as 1.0. Note that destination_surface and * be treated as 1.0. Note that destination_surface and
* source_surface must have been allocated via the same * source_surface must have been allocated via the same
* \ref VdpDevice "VdpDevice". * \ref VdpDevice "VdpDevice".
* \param[in] source_rect The sub-rectangle of the source * \param[in] source_rect The sub-rectangle of the source
* surface to read from. If NULL, the entire * surface to read from. If NULL, the entire
* source_surface will be read. Left/right ot top/bottom * source_surface will be read. Left/right ot top/bottom
* co-ordinates may be swapped to flip the source. Any * co-ordinates may be swapped to flip the source. Any
* flip occurs prior to any requested rotation. Values * flip occurs prior to any requested rotation. Values
* from outside the source surface are valid and samples * from outside the source surface are valid and samples
* at those locations will be taken from the nearest edge. * at those locations will be taken from the nearest edge.
* \param[in] colors A pointer to an array of \ref VdpColor * \param[in] colors A pointer to an array of \ref VdpColor
skipping to change at line 2402 skipping to change at line 2417
* @{ * @{
*/ */
/** /**
* \brief The set of all known compressed video formats, and * \brief The set of all known compressed video formats, and
* associated profiles, that may be decoded. * associated profiles, that may be decoded.
*/ */
typedef uint32_t VdpDecoderProfile; typedef uint32_t VdpDecoderProfile;
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_MPEG1 (VdpDecoderProfile) 0 #define VDP_DECODER_PROFILE_MPEG1 ((VdpDecoderProfile )0)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_MPEG2_SIMPLE (VdpDecoderProfile) 1 #define VDP_DECODER_PROFILE_MPEG2_SIMPLE ((VdpDecoderProfile )1)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_MPEG2_MAIN (VdpDecoderProfile) 2 #define VDP_DECODER_PROFILE_MPEG2_MAIN ((VdpDecoderProfile )2)
/** \hideinitializer */ /** \hideinitializer */
/** \brief MPEG 4 part 10 == H.264 == AVC */ /** \brief MPEG 4 part 10 == H.264 == AVC */
#define VDP_DECODER_PROFILE_H264_BASELINE (VdpDecoderProfile) 6 #define VDP_DECODER_PROFILE_H264_BASELINE ((VdpDecoderProfile )6)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_H264_MAIN (VdpDecoderProfile) 7 #define VDP_DECODER_PROFILE_H264_MAIN ((VdpDecoderProfile )7)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_H264_HIGH (VdpDecoderProfile) 8 #define VDP_DECODER_PROFILE_H264_HIGH ((VdpDecoderProfile )8)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_VC1_SIMPLE (VdpDecoderProfile) 9 #define VDP_DECODER_PROFILE_VC1_SIMPLE ((VdpDecoderProfile )9)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_VC1_MAIN (VdpDecoderProfile) 10 #define VDP_DECODER_PROFILE_VC1_MAIN ((VdpDecoderProfile )10)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_VC1_ADVANCED (VdpDecoderProfile) 11 #define VDP_DECODER_PROFILE_VC1_ADVANCED ((VdpDecoderProfile )11)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_MPEG4_PART2_SP (VdpDecoderProfile) 12 #define VDP_DECODER_PROFILE_MPEG4_PART2_SP ((VdpDecoderProfile )12)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_MPEG4_PART2_ASP (VdpDecoderProfile) 13 #define VDP_DECODER_PROFILE_MPEG4_PART2_ASP ((VdpDecoderProfile )13)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX4_QMOBILE (VdpDecoderProfile) 14 #define VDP_DECODER_PROFILE_DIVX4_QMOBILE ((VdpDecoderProfile )14)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX4_MOBILE (VdpDecoderProfile) 15 #define VDP_DECODER_PROFILE_DIVX4_MOBILE ((VdpDecoderProfile )15)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER (VdpDecoderProfile) 16 #define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER ((VdpDecoderProfile )16)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX4_HD_1080P (VdpDecoderProfile) 17 #define VDP_DECODER_PROFILE_DIVX4_HD_1080P ((VdpDecoderProfile )17)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX5_QMOBILE (VdpDecoderProfile) 18 #define VDP_DECODER_PROFILE_DIVX5_QMOBILE ((VdpDecoderProfile )18)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX5_MOBILE (VdpDecoderProfile) 19 #define VDP_DECODER_PROFILE_DIVX5_MOBILE ((VdpDecoderProfile )19)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER (VdpDecoderProfile) 20 #define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER ((VdpDecoderProfile )20)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_PROFILE_DIVX5_HD_1080P (VdpDecoderProfile) #define VDP_DECODER_PROFILE_DIVX5_HD_1080P ((VdpDecoderProfile
21 )21)
/** \hideinitializer */
#define VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE ((VdpDecoderProfile
)22)
/** \hideinitializer */
#define VDP_DECODER_PROFILE_H264_EXTENDED ((VdpDecoderProfile
)23)
/** \hideinitializer */
#define VDP_DECODER_PROFILE_H264_PROGRESSIVE_HIGH ((VdpDecoderProfile
)24)
/** \hideinitializer */
#define VDP_DECODER_PROFILE_H264_CONSTRAINED_HIGH ((VdpDecoderProfile
)25)
/** \hideinitializer */
/** \brief Support for 8 bit depth only */
#define VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE ((VdpDecoderProfile
)26)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_LEVEL_MPEG1_NA 0 #define VDP_DECODER_LEVEL_MPEG1_NA 0
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_LEVEL_MPEG2_LL 0 #define VDP_DECODER_LEVEL_MPEG2_LL 0
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_LEVEL_MPEG2_ML 1 #define VDP_DECODER_LEVEL_MPEG2_ML 1
/** \hideinitializer */ /** \hideinitializer */
#define VDP_DECODER_LEVEL_MPEG2_HL14 2 #define VDP_DECODER_LEVEL_MPEG2_HL14 2
skipping to change at line 2759 skipping to change at line 2785
* any future frame. Once a surface is removed from the DPB, it can * any future frame. Once a surface is removed from the DPB, it can
* no longer be used as a reference, unless decoded again. * no longer be used as a reference, unless decoded again.
* *
* Also note that only surfaces previously generated using \ref * Also note that only surfaces previously generated using \ref
* VdpDecoderRender may be used as reference frames. In particular, * VdpDecoderRender may be used as reference frames. In particular,
* surfaces filled using any "put bits" API will not work. * surfaces filled using any "put bits" API will not work.
* *
* Note: References to "copy of bitstream field" in the field descriptions * Note: References to "copy of bitstream field" in the field descriptions
* may refer to data literally parsed from the bitstream, or derived from * may refer to data literally parsed from the bitstream, or derived from
* the bitstream using a mechanism described in the specification. * the bitstream using a mechanism described in the specification.
*
* Note: VDPAU clients must use VdpPictureInfoH264Predictive to describe th
e
* attributes of a frame being decoded with
* VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE.
*/ */
typedef struct { typedef struct {
/** Number of slices in the bitstream provided. */ /** Number of slices in the bitstream provided. */
uint32_t slice_count; uint32_t slice_count;
/** [0]: top, [1]: bottom */ /** [0]: top, [1]: bottom */
int32_t field_order_cnt[2]; int32_t field_order_cnt[2];
/** Will the decoded frame be used as a reference later. */ /** Will the decoded frame be used as a reference later. */
VdpBool is_reference; VdpBool is_reference;
/** Copy of the H.264 bitstream field. */ /** Copy of the H.264 bitstream field. */
skipping to change at line 2827 skipping to change at line 2857
/** Copy of the H.264 bitstream field, converted to raster order. */ /** Copy of the H.264 bitstream field, converted to raster order. */
uint8_t scaling_lists_4x4[6][16]; uint8_t scaling_lists_4x4[6][16];
/** Copy of the H.264 bitstream field, converted to raster order. */ /** Copy of the H.264 bitstream field, converted to raster order. */
uint8_t scaling_lists_8x8[2][64]; uint8_t scaling_lists_8x8[2][64];
/** See \ref VdpPictureInfoH264 for instructions regarding this field. */ /** See \ref VdpPictureInfoH264 for instructions regarding this field. */
VdpReferenceFrameH264 referenceFrames[16]; VdpReferenceFrameH264 referenceFrames[16];
} VdpPictureInfoH264; } VdpPictureInfoH264;
/** /**
* \brief Picture parameter information for an H.264 Hi444PP picture.
*
* Note: VDPAU clients must use VdpPictureInfoH264Predictive to describe th
e
* attributes of a frame being decoded with
* VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE.
*
* Note: software drivers may choose to honor values of
* qpprime_y_zero_transform_bypass_flag greater than 1 for internal use.
*/
typedef struct {
/** \ref VdpPictureInfoH264 struct. */
VdpPictureInfoH264 pictureInfo;
/** Copy of the H.264 bitstream field.
*
* 0 - lossless disabled
* 1 - lossless enabled
*/
uint8_t qpprime_y_zero_transform_bypass_flag;
/** Copy of the H.264 bitstream field.
* 0 - disabled
* 1 - enabled
*/
uint8_t separate_colour_plane_flag;
} VdpPictureInfoH264Predictive;
/**
* \brief Picture parameter information for a VC1 picture. * \brief Picture parameter information for a VC1 picture.
* *
* Note: References to "copy of bitstream field" in the field descriptions * Note: References to "copy of bitstream field" in the field descriptions
* may refer to data literally parsed from the bitstream, or derived from * may refer to data literally parsed from the bitstream, or derived from
* the bitstream using a mechanism described in the specification. * the bitstream using a mechanism described in the specification.
*/ */
typedef struct { typedef struct {
/** /**
* Reference used by B and P frames. * Reference used by B and P frames.
* Set to VDP_INVALID_HANDLE when not used. * Set to VDP_INVALID_HANDLE when not used.
skipping to change at line 3117 skipping to change at line 3174
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* When requested and enabled, motion adaptive temporal * When requested and enabled, motion adaptive temporal
* deinterlacing will be used on interlaced content. * deinterlacing will be used on interlaced content.
* *
* When multiple de-interlacing options are requested and * When multiple de-interlacing options are requested and
* enabled, the back-end implementation chooses the best * enabled, the back-end implementation chooses the best
* algorithm to apply. * algorithm to apply.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL (VdpVideoMixer Feature)0 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL ((VdpVideoMixe rFeature)0)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* When requested and enabled, this enables a more advanced * When requested and enabled, this enables a more advanced
* version of temporal de-interlacing, that additionally uses * version of temporal de-interlacing, that additionally uses
* edge-guided spatial interpolation. * edge-guided spatial interpolation.
* *
* When multiple de-interlacing options are requested and * When multiple de-interlacing options are requested and
* enabled, the back-end implementation chooses the best * enabled, the back-end implementation chooses the best
* algorithm to apply. * algorithm to apply.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL (VdpVideoMixer Feature)1 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL ((VdpVideoMixe rFeature)1)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* When requested and enabled, cadence detection will be enabled * When requested and enabled, cadence detection will be enabled
* on interlaced content and the video mixer will try to extract * on interlaced content and the video mixer will try to extract
* progressive frames from pull-down material. * progressive frames from pull-down material.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE (VdpVideoMixer Feature)2 #define VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE ((VdpVideoMixe rFeature)2)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* When requested and enabled, a noise reduction algorithm will * When requested and enabled, a noise reduction algorithm will
* be applied to the video. * be applied to the video.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION (VdpVideoMixer Feature)3 #define VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION ((VdpVideoMixe rFeature)3)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* When requested and enabled, a sharpening algorithm will be * When requested and enabled, a sharpening algorithm will be
* applied to the video. * applied to the video.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_SHARPNESS (VdpVideoMixer Feature)4 #define VDP_VIDEO_MIXER_FEATURE_SHARPNESS ((VdpVideoMixe rFeature)4)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* When requested and enabled, the alpha of the rendered * When requested and enabled, the alpha of the rendered
* surface, which is normally set to the alpha of the background * surface, which is normally set to the alpha of the background
* color, will be forced to 0.0 on pixels corresponding to * color, will be forced to 0.0 on pixels corresponding to
* source video surface luminance values in the range specified * source video surface luminance values in the range specified
* by attributes \ref VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA * by attributes \ref VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA
* to \ref VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA. This * to \ref VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA. This
* keying is performed after scaling and de-interlacing. * keying is performed after scaling and de-interlacing.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_LUMA_KEY (VdpVideoMixer Feature)5 #define VDP_VIDEO_MIXER_FEATURE_LUMA_KEY ((VdpVideoMixe rFeature)5)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* A VDPAU implementation may support multiple scaling algorithms of * A VDPAU implementation may support multiple scaling algorithms of
* differing quality, and may potentially support a different subset * differing quality, and may potentially support a different subset
* of algorithms on different hardware. * of algorithms on different hardware.
* *
* In some cases, higher quality algorithms may require more resources * In some cases, higher quality algorithms may require more resources
* (memory size, memory bandwidth, etc.) to operate. Hence, these high * (memory size, memory bandwidth, etc.) to operate. Hence, these high
skipping to change at line 3190 skipping to change at line 3247
* application. This allows applications operating in a resource-constraine d * application. This allows applications operating in a resource-constraine d
* environment to have some level of control over resource usage. * environment to have some level of control over resource usage.
* *
* Basic scaling is always built into any video mixer, and is known as * Basic scaling is always built into any video mixer, and is known as
* level 0. Scaling quality increases beginning with optional level 1, * level 0. Scaling quality increases beginning with optional level 1,
* through optional level 9. * through optional level 9.
* *
* If an application requests and enables multiple high quality scaling * If an application requests and enables multiple high quality scaling
* algorithms, the highest level enabled scaling algorithm will be used. * algorithms, the highest level enabled scaling algorithm will be used.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 (VdpVideoMixer Feature)11 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 ((VdpVideoMixe rFeature)11)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 (VdpVideoMixer Feature)12 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 ((VdpVideoMixe rFeature)12)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 (VdpVideoMixer Feature)13 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 ((VdpVideoMixe rFeature)13)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 (VdpVideoMixer Feature)14 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 ((VdpVideoMixe rFeature)14)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 (VdpVideoMixer Feature)15 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 ((VdpVideoMixe rFeature)15)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 (VdpVideoMixer Feature)16 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 ((VdpVideoMixe rFeature)16)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 (VdpVideoMixer Feature)17 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 ((VdpVideoMixe rFeature)17)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 (VdpVideoMixer Feature)18 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 ((VdpVideoMixe rFeature)18)
/** /**
* \hideinitializer * \hideinitializer
* \brief A VdpVideoMixerFeature. * \brief A VdpVideoMixerFeature.
* *
* See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. * See \ref VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details.
*/ */
#define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 (VdpVideoMixer Feature)19 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 ((VdpVideoMixe rFeature)19)
/** /**
* \brief A VdpVideoMixer creation parameter. * \brief A VdpVideoMixer creation parameter.
* *
* When a VdpVideoMixer is created, certain parameters may be * When a VdpVideoMixer is created, certain parameters may be
* supplied. Each parameter is named via a specific * supplied. Each parameter is named via a specific
* VdpVideoMixerParameter value. * VdpVideoMixerParameter value.
* *
* Each parameter has a specific type, and specific default * Each parameter has a specific type, and specific default
* value if not specified at VdpVideoMixer creation time. The * value if not specified at VdpVideoMixer creation time. The
skipping to change at line 3274 skipping to change at line 3331
* \brief The exact width of input video surfaces. * \brief The exact width of input video surfaces.
* *
* This parameter's type is uint32_t. * This parameter's type is uint32_t.
* *
* This parameter defaults to 0 if not specified, which entails * This parameter defaults to 0 if not specified, which entails
* that it must be specified. * that it must be specified.
* *
* The application may query this parameter's supported * The application may query this parameter's supported
* range. * range.
*/ */
#define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH (VdpVideoMixerParame ter)0 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH ((VdpVideoMixerParam eter)0)
/** /**
* \hideinitializer * \hideinitializer
* \brief The exact height of input video surfaces. * \brief The exact height of input video surfaces.
* *
* This parameter's type is uint32_t. * This parameter's type is uint32_t.
* *
* This parameter defaults to 0 if not specified, which entails * This parameter defaults to 0 if not specified, which entails
* that it must be specified. * that it must be specified.
* *
* The application may query this parameter's supported * The application may query this parameter's supported
* range. * range.
*/ */
#define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT (VdpVideoMixerParame ter)1 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT ((VdpVideoMixerParam eter)1)
/** /**
* \hideinitializer * \hideinitializer
* \brief The chroma type of the input video surfaces the will * \brief The chroma type of the input video surfaces the will
* process. * process.
* *
* This parameter's type is VdpChromaType. * This parameter's type is VdpChromaType.
* *
* If not specified, this parameter defaults to * If not specified, this parameter defaults to
* VDP_CHROMA_TYPE_420. * VDP_CHROMA_TYPE_420.
* *
* The application may not query this application's supported * The application may not query this application's supported
* range, since it is a potentially disjoint enumeration. * range, since it is a potentially disjoint enumeration.
*/ */
#define VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE (VdpVideoMixerParame ter)2 #define VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE ((VdpVideoMixerParam eter)2)
/** /**
* \hideinitializer * \hideinitializer
* \brief The number of auxiliary layers in the mixer's * \brief The number of auxiliary layers in the mixer's
* compositing model. * compositing model.
* *
* Note that this indicates the maximum number of layers that * Note that this indicates the maximum number of layers that
* may be processed by a given \ref VdpVideoMixer "VdpVideoMixer" * may be processed by a given \ref VdpVideoMixer "VdpVideoMixer"
* object. Each individual \ref VdpVideoMixerRender invocation * object. Each individual \ref VdpVideoMixerRender invocation
* may choose to use a different number of actual layers, from 0 * may choose to use a different number of actual layers, from 0
* up to this limit. * up to this limit.
* *
* This attribute's type is uint32_t. * This attribute's type is uint32_t.
* *
* If not specified, this parameter defaults to 0. * If not specified, this parameter defaults to 0.
* *
* The application may query this parameter's supported * The application may query this parameter's supported
* range. * range.
*/ */
#define VDP_VIDEO_MIXER_PARAMETER_LAYERS (VdpVideoMixerParame ter)3 #define VDP_VIDEO_MIXER_PARAMETER_LAYERS ((VdpVideoMixerParam eter)3)
/** /**
* \brief An adjustable attribute of VdpVideoMixer operation. * \brief An adjustable attribute of VdpVideoMixer operation.
* *
* Various attributes of VdpVideoMixer operation may be adjusted * Various attributes of VdpVideoMixer operation may be adjusted
* at any time. Each attribute is named via a specific * at any time. Each attribute is named via a specific
* VdpVideoMixerAttribute value. * VdpVideoMixerAttribute value.
* *
* Each attribute has a specific type, and specific default * Each attribute has a specific type, and specific default
* value if not specified at VdpVideoMixer creation time. The * value if not specified at VdpVideoMixer creation time. The
skipping to change at line 3349 skipping to change at line 3406
* model. * model.
* *
* This attribute's type is VdpColor. * This attribute's type is VdpColor.
* *
* This parameter defaults to black (all color components 0.0 * This parameter defaults to black (all color components 0.0
* and alpha 1.0). * and alpha 1.0).
* *
* The application may not query this parameter's supported * The application may not query this parameter's supported
* range, since the type is not scalar. * range, since the type is not scalar.
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR (VdpVideoMixerAttri bute)0 #define VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR ((VdpVideoMixerAttr ibute)0)
/** /**
* \hideinitializer * \hideinitializer
* \brief The color-space conversion matrix used by the * \brief The color-space conversion matrix used by the
* VdpVideoMixer. * VdpVideoMixer.
* *
* This attribute's type is \ref VdpCSCMatrix. * This attribute's type is \ref VdpCSCMatrix.
* *
* Note: When using \ref VdpVideoMixerGetAttributeValues to retrieve the * Note: When using \ref VdpVideoMixerGetAttributeValues to retrieve the
* current CSC matrix, the attribute_values array must contain a pointer to * current CSC matrix, the attribute_values array must contain a pointer to
* a pointer a VdpCSCMatrix (VdpCSCMatrix** as a void *). The get function will * a pointer a VdpCSCMatrix (VdpCSCMatrix** as a void *). The get function will
skipping to change at line 3377 skipping to change at line 3434
* void * attribute_values[] = {&matrix_ptr}; * void * attribute_values[] = {&matrix_ptr};
* VdpStatus st = vdp_video_mixer_get_attribute_values(..., attribute_value s, ...); * VdpStatus st = vdp_video_mixer_get_attribute_values(..., attribute_value s, ...);
* \endcode * \endcode
* *
* This parameter defaults to a matrix suitable for ITU-R BT.601 * This parameter defaults to a matrix suitable for ITU-R BT.601
* input surfaces, with no procamp adjustments. * input surfaces, with no procamp adjustments.
* *
* The application may not query this parameter's supported * The application may not query this parameter's supported
* range, since the type is not scalar. * range, since the type is not scalar.
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX (VdpVideoMixerAttri bute)1 #define VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX ((VdpVideoMixerAttr ibute)1)
/** /**
* \hideinitializer * \hideinitializer
* \brief The amount of noise reduction algorithm to apply. * \brief The amount of noise reduction algorithm to apply.
* *
* This attribute's type is float. * This attribute's type is float.
* *
* This parameter defaults to 0.0, which equates to no noise * This parameter defaults to 0.0, which equates to no noise
* reduction. * reduction.
* *
* The application may query this parameter's supported range. * The application may query this parameter's supported range.
* However, the range is fixed as 0.0...1.0. * However, the range is fixed as 0.0...1.0.
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL (VdpVideoMixerAttri bute)2 #define VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL ((VdpVideoMixerAttr ibute)2)
/** /**
* \hideinitializer * \hideinitializer
* \brief The amount of sharpening, or blurring, to apply. * \brief The amount of sharpening, or blurring, to apply.
* *
* This attribute's type is float. * This attribute's type is float.
* *
* This parameter defaults to 0.0, which equates to no * This parameter defaults to 0.0, which equates to no
* sharpening. * sharpening.
* *
* Positive values request sharpening. Negative values request * Positive values request sharpening. Negative values request
* blurring. * blurring.
* *
* The application may query this parameter's supported range. * The application may query this parameter's supported range.
* However, the range is fixed as -1.0...1.0. * However, the range is fixed as -1.0...1.0.
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL (VdpVideoMixerAttri bute)3 #define VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL ((VdpVideoMixerAttr ibute)3)
/** /**
* \hideinitializer * \hideinitializer
* \brief The minimum luma value for the luma key algorithm. * \brief The minimum luma value for the luma key algorithm.
* *
* This attribute's type is float. * This attribute's type is float.
* *
* This parameter defaults to 0.0. * This parameter defaults to 0.0.
* *
* The application may query this parameter's supported range. * The application may query this parameter's supported range.
* However, the range is fixed as 0.0...1.0. * However, the range is fixed as 0.0...1.0.
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA (VdpVideoMixerAttri bute)4 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA ((VdpVideoMixerAttr ibute)4)
/** /**
* \hideinitializer * \hideinitializer
* \brief The maximum luma value for the luma key algorithm. * \brief The maximum luma value for the luma key algorithm.
* *
* This attribute's type is float. * This attribute's type is float.
* *
* This parameter defaults to 1.0. * This parameter defaults to 1.0.
* *
* The application may query this parameter's supported range. * The application may query this parameter's supported range.
* However, the range is fixed as 0.0...1.0. * However, the range is fixed as 0.0...1.0.
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA (VdpVideoMixerAttri bute)5 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA ((VdpVideoMixerAttr ibute)5)
/** /**
* \hideinitializer * \hideinitializer
* \brief Whether de-interlacers should operate solely on luma, and bob chr oma. * \brief Whether de-interlacers should operate solely on luma, and bob chr oma.
* *
* Note: This attribute only affects advanced de-interlacing algorithms, no t * Note: This attribute only affects advanced de-interlacing algorithms, no t
* bob or weave. * bob or weave.
* *
* This attribute's type is uint8_t. * This attribute's type is uint8_t.
* *
* This parameter defaults to 0. * This parameter defaults to 0.
* *
* The application may query this parameter's supported range. * The application may query this parameter's supported range.
* However, the range is fixed as 0 (no/off) ... 1 (yes/on). * However, the range is fixed as 0 (no/off) ... 1 (yes/on).
*/ */
#define VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE (VdpVideoMixerAtt ribute)6 #define VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE ((VdpVideoMixerAt tribute)6)
/** /**
* \brief Query the implementation's support for a specific * \brief Query the implementation's support for a specific
* feature. * feature.
* \param[in] device The device to query. * \param[in] device The device to query.
* \param[in] feature The feature for which support is to be * \param[in] feature The feature for which support is to be
* queried. * queried.
* \param[out] is_supported Is the specified feature supported? * \param[out] is_supported Is the specified feature supported?
* \return VdpStatus The completion status of the operation. * \return VdpStatus The completion status of the operation.
*/ */
skipping to change at line 4166 skipping to change at line 4223
* @{ * @{
*/ */
/** /**
* \brief A type suitable for \ref VdpGetProcAddress * \brief A type suitable for \ref VdpGetProcAddress
* "VdpGetProcAddress"'s \b function_id parameter. * "VdpGetProcAddress"'s \b function_id parameter.
*/ */
typedef uint32_t VdpFuncId; typedef uint32_t VdpFuncId;
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_GET_ERROR_STRING (VdpFuncId)0 #define VDP_FUNC_ID_GET_ERROR_STRING ((VdpFuncId)0)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_GET_PROC_ADDRESS (VdpFuncId)1 #define VDP_FUNC_ID_GET_PROC_ADDRESS ((VdpFuncId)1)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_GET_API_VERSION (VdpFuncId)2 #define VDP_FUNC_ID_GET_API_VERSION ((VdpFuncId)2)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_GET_INFORMATION_STRING (VdpFuncId)4 #define VDP_FUNC_ID_GET_INFORMATION_STRING ((VdpFuncId)4)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_DEVICE_DESTROY (VdpFuncId)5 #define VDP_FUNC_ID_DEVICE_DESTROY ((VdpFuncId)5)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_GENERATE_CSC_MATRIX (VdpFuncId)6 #define VDP_FUNC_ID_GENERATE_CSC_MATRIX ((VdpFuncId)6)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES (VdpFuncId)7 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES ((VdpFuncId)7)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES (VdpFuncId)8 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES ((VdpFuncId)8)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_CREATE (VdpFuncId)9 #define VDP_FUNC_ID_VIDEO_SURFACE_CREATE ((VdpFuncId)9)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_DESTROY (VdpFuncId)10 #define VDP_FUNC_ID_VIDEO_SURFACE_DESTROY ((VdpFuncId)10)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS (VdpFuncId)11 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS ((VdpFuncId)11)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR (VdpFuncId)12 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR ((VdpFuncId)12)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR (VdpFuncId)13 #define VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR ((VdpFuncId)13)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES (VdpFuncId)14 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES ((VdpFuncId)14)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES (VdpFuncId)15 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES ((VdpFuncId)15)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES (VdpFuncId)16 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES ((VdpFuncId)16)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES (VdpFuncId)17 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES ((VdpFuncId)17)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_CREATE (VdpFuncId)18 #define VDP_FUNC_ID_OUTPUT_SURFACE_CREATE ((VdpFuncId)18)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY (VdpFuncId)19 #define VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY ((VdpFuncId)19)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS (VdpFuncId)20 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS ((VdpFuncId)20)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE (VdpFuncId)21 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE ((VdpFuncId)21)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE (VdpFuncId)22 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE ((VdpFuncId)22)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED (VdpFuncId)23 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED ((VdpFuncId)23)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR (VdpFuncId)24 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR ((VdpFuncId)24)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES (VdpFuncId)25 #define VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES ((VdpFuncId)25)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_BITMAP_SURFACE_CREATE (VdpFuncId)26 #define VDP_FUNC_ID_BITMAP_SURFACE_CREATE ((VdpFuncId)26)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_BITMAP_SURFACE_DESTROY (VdpFuncId)27 #define VDP_FUNC_ID_BITMAP_SURFACE_DESTROY ((VdpFuncId)27)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS (VdpFuncId)28 #define VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS ((VdpFuncId)28)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE (VdpFuncId)29 #define VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE ((VdpFuncId)29)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE (VdpFuncId)33 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE ((VdpFuncId)33)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE (VdpFuncId)34 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE ((VdpFuncId)34)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA (VdpFuncId)35 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA ((VdpFuncId)35)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES (VdpFuncId)36 #define VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES ((VdpFuncId)36)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_DECODER_CREATE (VdpFuncId)37 #define VDP_FUNC_ID_DECODER_CREATE ((VdpFuncId)37)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_DECODER_DESTROY (VdpFuncId)38 #define VDP_FUNC_ID_DECODER_DESTROY ((VdpFuncId)38)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_DECODER_GET_PARAMETERS (VdpFuncId)39 #define VDP_FUNC_ID_DECODER_GET_PARAMETERS ((VdpFuncId)39)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_DECODER_RENDER (VdpFuncId)40 #define VDP_FUNC_ID_DECODER_RENDER ((VdpFuncId)40)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT (VdpFuncId)41 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT ((VdpFuncId)41)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT (VdpFuncId)42 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT ((VdpFuncId)42)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT (VdpFuncId)43 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT ((VdpFuncId)43)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE (VdpFuncId)44 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE ((VdpFuncId)44)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE (VdpFuncId)45 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE ((VdpFuncId)45)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_CREATE (VdpFuncId)46 #define VDP_FUNC_ID_VIDEO_MIXER_CREATE ((VdpFuncId)46)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES (VdpFuncId)47 #define VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES ((VdpFuncId)47)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES (VdpFuncId)48 #define VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES ((VdpFuncId)48)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT (VdpFuncId)49 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT ((VdpFuncId)49)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES (VdpFuncId)50 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES ((VdpFuncId)50)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES (VdpFuncId)51 #define VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES ((VdpFuncId)51)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES (VdpFuncId)52 #define VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES ((VdpFuncId)52)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_DESTROY (VdpFuncId)53 #define VDP_FUNC_ID_VIDEO_MIXER_DESTROY ((VdpFuncId)53)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_VIDEO_MIXER_RENDER (VdpFuncId)54 #define VDP_FUNC_ID_VIDEO_MIXER_RENDER ((VdpFuncId)54)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY (VdpFuncId)55 #define VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY ((VdpFuncId)55)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE (VdpFuncId)56 #define VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE ((VdpFuncId)56)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY (VdpFuncId)57 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY ((VdpFuncId)57)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR (VdpFuncId)58 #define VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR ((VdpFuncId)58)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR (VdpFuncId)59 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR ((VdpFuncId)59)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME (VdpFuncId)62 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME ((VdpFuncId)62)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY (VdpFuncId)63 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY ((VdpFuncId)63)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE (VdpFuncId)64 #define VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE ((VdpFuncId)64)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS (VdpFuncId)65 #define VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS ((VdpFuncId)65)
/** \hideinitializer */ /** \hideinitializer */
#define VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER (VdpFuncId)66 #define VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER ((VdpFuncId)66)
#define VDP_FUNC_ID_BASE_WINSYS 0x1000 #define VDP_FUNC_ID_BASE_WINSYS 0x1000
/** /**
* \brief Retrieve a VDPAU function pointer. * \brief Retrieve a VDPAU function pointer.
* \param[in] device The device that the function will operate * \param[in] device The device that the function will operate
* against. * against.
* \param[in] function_id The specific function to retrieve. * \param[in] function_id The specific function to retrieve.
* \param[out] function_pointer The actual pointer for the * \param[out] function_pointer The actual pointer for the
* application to call. * application to call.
 End of changes. 133 change blocks. 
137 lines changed or deleted 211 lines changed or added


 vdpau_x11.h   vdpau_x11.h 
skipping to change at line 88 skipping to change at line 88
* --variable=moduledir vdpau` to locate the driver install path. * --variable=moduledir vdpau` to locate the driver install path.
* - \c $moduledir/libvdpau_\%s.so.1 * - \c $moduledir/libvdpau_\%s.so.1
* For example: * For example:
* - \c /usr/lib/vdpau/libvdpau_nvidia.so.1 * - \c /usr/lib/vdpau/libvdpau_nvidia.so.1
* - \c /usr/lib/vdpau/libvdpau_intel.so.1 * - \c /usr/lib/vdpau/libvdpau_intel.so.1
* - \c /usr/lib/vdpau/libvdpau_ati.so.1 * - \c /usr/lib/vdpau/libvdpau_ati.so.1
* The library path can be overridden by the VDPAU_DRIVER_PATH * The library path can be overridden by the VDPAU_DRIVER_PATH
* environment variable. * environment variable.
* *
* The VDPAU wrapper library implements just one function; \ref * The VDPAU wrapper library implements just one function; \ref
* vdp_device_create_x11. The wrapper will implement this function * vdp_device_create_x11. The wrapper implements this function by
* by dynamically loading the appropriate back-end driver file * dynamically loading the appropriate back-end driver file mentioned
* mentioned above. Long-term, the wrapper will use a * above. When available, the wrapper uses the DRI2 extension's
* VDPAU-specific X extension to determine which back-end driver * DRI2Connect request with the driver type 'DRI2DriverVDPAU' to
* to load. Currently, the wrapper library hard-codes the driver * determine which back-end driver to load. If that fails, the wrapper
* name as "nvidia", although this can be overridden using the * library hard-codes the driver name as "nvidia", although this can
* environment variable VDPAU_DRIVER. * be overridden using the environment variable VDPAU_DRIVER.
* *
* The back-end driver is expected to implement a function named * The back-end driver is expected to implement a function named
* \b vdp_imp_device_create_x11. The wrapper will call this function to * \b vdp_imp_device_create_x11. The wrapper will call this function to
* actually implement the \ref vdp_device_create_x11 application call. * actually implement the \ref vdp_device_create_x11 application call.
* *
* Note that it is theoretically possible for an application to * Note that it is theoretically possible for an application to
* create multiple \ref VdpDevice "VdpDevice" objects. In this * create multiple \ref VdpDevice "VdpDevice" objects. In this
* case, the wrapper library may load multiple back-end drivers * case, the wrapper library may load multiple back-end drivers
* into the same application, and/or invoke a specific back-end * into the same application, and/or invoke a specific back-end
* driver's \b VdpImpDeviceCreateX11 multiple times. The wrapper * driver's \b VdpImpDeviceCreateX11 multiple times. The wrapper
* libray imposes no policy regarding whether the application * library imposes no policy regarding whether the application
* may instantiate multiple \ref VdpDevice "VdpDevice" objects for * may instantiate multiple \ref VdpDevice "VdpDevice" objects for
* the same display and/or screen. However, back-end drivers are * the same display and/or screen. However, back-end drivers are
* free to limit the number of \ref VdpDevice "VdpDevice" objects * free to limit the number of \ref VdpDevice "VdpDevice" objects
* as required by their implementation. * as required by their implementation.
* *
* @{ * @{
*/ */
/** /**
* \brief Create a VdpDevice object for use with X11. * \brief Create a VdpDevice object for use with X11.
 End of changes. 2 change blocks. 
8 lines changed or deleted 8 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/