VDPAU

Data Structures | Macros | Typedefs
Miscellaneous Types
Core API
Collaboration diagram for Miscellaneous Types:

## Data Structures
struct | VdpPoint
| A location within a surface. More...
struct | VdpRect
| A rectangular region of a surface. More...
struct | VdpColor

## Macros
#define | VDP_INVALID_HANDLE 0xffffffffU
| An invalid object handle value.
#define | VDP_CHROMA_TYPE_420
| 4:2:0 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.
#define | VDP_CHROMA_TYPE_422
| 4:2:2 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.
#define | VDP_CHROMA_TYPE_444
| 4:4:4 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.
#define | VDP_CHROMA_TYPE_420_FIELD
| 4:2:0 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_422_FIELD
| 4:2:2 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_444_FIELD
| 4:4:4 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_420_FRAME
| 4:2:0 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_422_FRAME
| 4:2:2 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_444_FRAME
| 4:4:4 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_420_16
| 4:2:0 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.
#define | VDP_CHROMA_TYPE_422_16
| 4:2:2 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.
#define | VDP_CHROMA_TYPE_444_16
| 4:4:4 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.
#define | VDP_CHROMA_TYPE_420_FIELD_16
| 4:2:0 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_422_FIELD_16
| 4:2:2 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_444_FIELD_16
| 4:4:4 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_420_FRAME_16
| 4:2:0 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_422_FRAME_16
| 4:2:2 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_CHROMA_TYPE_444_FRAME_16
| 4:4:4 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API
#define | VDP_YCBCR_FORMAT_NV12
| The "NV12" YCbCr surface format.
#define | VDP_YCBCR_FORMAT_YV12
| The "YV12" YCbCr surface format.
#define | VDP_YCBCR_FORMAT_UYVY
| The "UYVY" YCbCr surface format.
#define | VDP_YCBCR_FORMAT_YUYV
| The "YUYV" YCbCr surface format.
#define | VDP_YCBCR_FORMAT_Y8U8V8A8
| A packed YCbCr format.
#define | VDP_YCBCR_FORMAT_V8U8Y8A8
| A packed YCbCr format.
#define | VDP_YCBCR_FORMAT_Y_UV_444
| The "Y_UV_444" YCbCr surface format.
#define | VDP_YCBCR_FORMAT_Y_U_V_444
| The "Y_U_V_444" YCbCr surface format.
#define | VDP_YCBCR_FORMAT_P010
| The P010 surface format.
#define | VDP_YCBCR_FORMAT_P016
| The P016 surface format.
#define | VDP_YCBCR_FORMAT_Y_U_V_444_16
| The "Y_U_V_444_16" YCbCr surface format.
#define | VDP_RGBA_FORMAT_B8G8R8A8
| A packed RGB format.
#define | VDP_RGBA_FORMAT_R8G8B8A8
| A packed RGB format.
#define | VDP_RGBA_FORMAT_R10G10B10A2
| A packed RGB format.
#define | VDP_RGBA_FORMAT_B10G10R10A2
| A packed RGB format.
#define | VDP_RGBA_FORMAT_A8
| An alpha-only surface format.
#define | VDP_INDEXED_FORMAT_A4I4
| A 4-bit indexed format, with alpha.
#define | VDP_INDEXED_FORMAT_I4A4
| A 4-bit indexed format, with alpha.
#define | VDP_INDEXED_FORMAT_A8I8
| A 8-bit indexed format, with alpha.
#define | VDP_INDEXED_FORMAT_I8A8
| A 8-bit indexed format, with alpha.

## Typedefs
typedef uint32_t | VdpChromaType
| The set of all chroma formats for VdpVideoSurfaces.
typedef uint32_t | VdpYCbCrFormat
| The set of all known YCbCr surface formats.
typedef uint32_t | VdpRGBAFormat
| The set of all known RGB surface formats.
typedef uint32_t | VdpIndexedFormat
| The set of all known indexed surface formats.

## Detailed Description

## Macro Definition Documentation

## ◆ VDP_CHROMA_TYPE_420

#define VDP_CHROMA_TYPE_420

4:2:0 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.

## ◆ VDP_CHROMA_TYPE_420_16

#define VDP_CHROMA_TYPE_420_16

4:2:0 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.

## ◆ VDP_CHROMA_TYPE_420_FIELD

#define VDP_CHROMA_TYPE_420_FIELD

4:2:0 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_420_FIELD_16

#define VDP_CHROMA_TYPE_420_FIELD_16

4:2:0 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_420_FRAME

#define VDP_CHROMA_TYPE_420_FRAME

4:2:0 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_420_FRAME_16

#define VDP_CHROMA_TYPE_420_FRAME_16

4:2:0 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_422

#define VDP_CHROMA_TYPE_422

4:2:2 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.

## ◆ VDP_CHROMA_TYPE_422_16

#define VDP_CHROMA_TYPE_422_16

4:2:2 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.

## ◆ VDP_CHROMA_TYPE_422_FIELD

#define VDP_CHROMA_TYPE_422_FIELD

4:2:2 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_422_FIELD_16

#define VDP_CHROMA_TYPE_422_FIELD_16

4:2:2 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_422_FRAME

#define VDP_CHROMA_TYPE_422_FRAME

4:2:2 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_422_FRAME_16

#define VDP_CHROMA_TYPE_422_FRAME_16

4:2:2 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_444

#define VDP_CHROMA_TYPE_444

4:4:4 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field(NV12/NV24) as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.

## ◆ VDP_CHROMA_TYPE_444_16

#define VDP_CHROMA_TYPE_444_16

4:4:4 chroma format. Undefined field/frame based Video surfaces allocated with this chroma type have undefined field/frame structure. The implementation is free to internally morph the surface between frame/field as required by VdpVideoDecoder operation. Interop with OpenGL allows registration of these surfaces for either field- or frame-based interop. But, an implicit field/frame structure conversion may be performed.

## ◆ VDP_CHROMA_TYPE_444_FIELD

#define VDP_CHROMA_TYPE_444_FIELD

4:4:4 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_444_FIELD_16

#define VDP_CHROMA_TYPE_444_FIELD_16

4:4:4 chroma format. Field based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_444_FRAME

#define VDP_CHROMA_TYPE_444_FRAME

4:4:4 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_CHROMA_TYPE_444_FRAME_16

#define VDP_CHROMA_TYPE_444_FRAME_16

4:4:4 chroma format. Frame based. Video surfaces allocated with this chroma type can only be interoped with OpenGL if the matching field/frame structure is specified in the OpenGL API

## ◆ VDP_INDEXED_FORMAT_A4I4

#define VDP_INDEXED_FORMAT_A4I4

A 4-bit indexed format, with alpha.

This format has a single plane.

This plane is an array of byte-sized components. Within each byte, bits [7:4] contain I (index), and bits [3:0] contain A.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_INDEXED_FORMAT_A8I8

#define VDP_INDEXED_FORMAT_A8I8

A 8-bit indexed format, with alpha.

This format has a single plane.

This plane is an array of interleaved byte-sized A and I (index) components, in the order A, I, A, I.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_INDEXED_FORMAT_I4A4

#define VDP_INDEXED_FORMAT_I4A4

A 4-bit indexed format, with alpha.

This format has a single plane.

This plane is an array of byte-sized components. Within each byte, bits [7:4] contain A, and bits [3:0] contain I (index).

Applications should access this data via a uint8_t pointer.

## ◆ VDP_INDEXED_FORMAT_I8A8

#define VDP_INDEXED_FORMAT_I8A8

A 8-bit indexed format, with alpha.

This format has a single plane.

This plane is an array of interleaved byte-sized A and I (index) components, in the order I, A, I, A.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_INVALID_HANDLE

#define VDP_INVALID_HANDLE 0xffffffffU

An invalid object handle value.

This value may be used to represent an invalid, or non-existent, object (VdpDevice, VdpVideoSurface, etc.)

Note that most APIs require valid object handles in all cases, and will fail when presented with this value.

## ◆ VDP_RGBA_FORMAT_A8

#define VDP_RGBA_FORMAT_A8

An alpha-only surface format.

This format has a single plane.

This plane is an array of byte-sized components.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_RGBA_FORMAT_B10G10R10A2

#define VDP_RGBA_FORMAT_B10G10R10A2

A packed RGB format.

This format has a single plane.

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, bits [19:10] contain G, and bits [9:0] contain B.

Applications should access this data via a uint32_t pointer.

## ◆ VDP_RGBA_FORMAT_B8G8R8A8

#define VDP_RGBA_FORMAT_B8G8R8A8

A packed RGB format.

This format has a single plane.

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, bits [15:8] contain G, and bits [7:0] contain B.

Applications should access this data via a uint32_t pointer.

## ◆ VDP_RGBA_FORMAT_R10G10B10A2

#define VDP_RGBA_FORMAT_R10G10B10A2

A packed RGB format.

This format has a single plane.

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, bits [19:10] contain G, and bits [9:0] contain R.

Applications should access this data via a uint32_t pointer.

## ◆ VDP_RGBA_FORMAT_R8G8B8A8

#define VDP_RGBA_FORMAT_R8G8B8A8

A packed RGB format.

This format has a single plane.

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, bits [15:8] contain G, and bits [7:0] contain R.

Applications should access this data via a uint32_t pointer.

## ◆ VDP_YCBCR_FORMAT_NV12

#define VDP_YCBCR_FORMAT_NV12

The "NV12" YCbCr surface format.

This format has a two planes, a Y plane and a UV plane.

The Y plane is an array of byte-sized Y components. Applications should access this data via a uint8_t pointer.

The UV plane is an array of interleaved byte-sized U and V components, in the order U, V, U, V. Applications should access this data via a uint8_t pointer.

## ◆ VDP_YCBCR_FORMAT_P010

#define VDP_YCBCR_FORMAT_P010

The P010 surface format.

This format has two planes, a Y plane and a UV plane.

The Y plane is an array of two byte sized Y components. Applications should access this data via a uint16_t pointer.

The UV plane is an array of interleaved two byte sized U and V components, in the order U, V, U, V. Applications should access this data via a uint8_t pointer.

Note that the P010 surface format has an identical memory layout as the P016 surface format, with bits 0 through 5 set to zero.

## ◆ VDP_YCBCR_FORMAT_P016

#define VDP_YCBCR_FORMAT_P016

The P016 surface format.

This format has two planes, a Y plane and a UV plane.

The Y plane is an array of two byte sized Y components. Applications should access this data via a uint16_t pointer.

The UV plane is an array of interleaved two byte sized U and V components, in the order U, V, U, V. Applications should access this data via a uint8_t pointer.

## ◆ VDP_YCBCR_FORMAT_UYVY

#define VDP_YCBCR_FORMAT_UYVY

The "UYVY" YCbCr surface format.

This format may also be known as Y422, UYNV, HDYC.

This format has a single plane.

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.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_YCBCR_FORMAT_V8U8Y8A8

#define VDP_YCBCR_FORMAT_V8U8Y8A8

A packed YCbCr format.

This format has a single plane.

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, bits [15:8] contain U, and bits [7:0] contain V.

Applications should access this data via a uint32_t pointer.

## ◆ VDP_YCBCR_FORMAT_Y8U8V8A8

#define VDP_YCBCR_FORMAT_Y8U8V8A8

A packed YCbCr format.

This format has a single plane.

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, bits [15:8] contain U, and bits [7:0] contain Y.

Applications should access this data via a uint32_t pointer.

## ◆ VDP_YCBCR_FORMAT_Y_U_V_444

#define VDP_YCBCR_FORMAT_Y_U_V_444

The "Y_U_V_444" YCbCr surface format.

This format has three planes, a Y plane, a V plane, and a U plane.

Each of the planes is an array of byte-sized components.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_YCBCR_FORMAT_Y_U_V_444_16

#define VDP_YCBCR_FORMAT_Y_U_V_444_16

The "Y_U_V_444_16" YCbCr surface format.

This format has three planes, a Y plane, a V plane, and a U plane.

Each of the planes is an array of two byte-sized components.

Applications should access this data via a uint16_t pointer.

## ◆ VDP_YCBCR_FORMAT_Y_UV_444

#define VDP_YCBCR_FORMAT_Y_UV_444

The "Y_UV_444" YCbCr surface format.

This format has two planes, a Y plane and a UV plane.

The Y plane is an array of byte-sized Y components. Applications should access this data via a uint8_t pointer.

The UV plane is an array of interleaved byte-sized U and V components, in the order U, V, U, V. Applications should access this data via a uint8_t pointer.

## ◆ VDP_YCBCR_FORMAT_YUYV

#define VDP_YCBCR_FORMAT_YUYV

The "YUYV" YCbCr surface format.

This format may also be known as YUY2, YUNV, V422.

This format has a single plane.

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.

Applications should access this data via a uint8_t pointer.

## ◆ VDP_YCBCR_FORMAT_YV12

#define VDP_YCBCR_FORMAT_YV12

The "YV12" YCbCr surface format.

This format has a three planes, a Y plane, a V plane, and a U plane.

Each of the planes is an array of byte-sized components.

Applications should access this data via a uint8_t pointer.

## Typedef Documentation

## ◆ VdpChromaType

typedef uint32_t VdpChromaType

The set of all chroma formats for VdpVideoSurfaces.

## ◆ VdpIndexedFormat

typedef uint32_t VdpIndexedFormat

The set of all known indexed surface formats.

## ◆ VdpRGBAFormat

typedef uint32_t VdpRGBAFormat

The set of all known RGB surface formats.

## ◆ VdpYCbCrFormat

typedef uint32_t VdpYCbCrFormat

The set of all known YCbCr surface formats.