Collaboration diagram for VdpVideoMixer; Video Post-processing and Compositing object:
![]() |
A VdpVideoMixer takes a source VdpVideoSurface VdpVideoSurface and performs various video processing steps on it (potentially using information from past or future video surfaces). It scales the video and converts it to RGB, then optionally composites it with multiple auxiliary VdpOutputSurfaces before writing the result to the destination VdpOutputSurface.
The video mixer compositing model is as follows:
Data Structures | |
struct | VdpLayer |
Definition of an additional VdpOutputSurface layer in the composting model. More... | |
Defines | |
#define | VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_SHARPNESS |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_LUMA_KEY |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 |
A VdpVideoMixerFeature. | |
#define | VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH |
The exact width of input video surfaces. | |
#define | VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT |
The exact height of input video surfaces. | |
#define | VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE |
The chroma type of the input video surfaces the will process. | |
#define | VDP_VIDEO_MIXER_PARAMETER_LAYERS |
The number of auxiliary layers in the mixer's compositing model. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR |
The background color in the VdpVideoMixer's compositing model. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX |
The color-space conversion matrix used by the VdpVideoMixer. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL |
The amount of noise reduction algorithm to apply. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL |
The amount of sharpening, or blurring, to apply. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA |
The minimum luma value for the luma key algorithm. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA |
The maximum luma value for the luma key algorithm. | |
#define | VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE |
Whether de-interlacers should operate solely on luma, and bob chroma. | |
#define | VDP_LAYER_VERSION 0 |
Typedefs | |
typedef uint32_t | VdpVideoMixerFeature |
A VdpVideoMixer feature that must be requested at creation time to be used. | |
typedef uint32_t | VdpVideoMixerParameter |
A VdpVideoMixer creation parameter. | |
typedef uint32_t | VdpVideoMixerAttribute |
An adjustable attribute of VdpVideoMixer operation. | |
typedef VdpStatus | VdpVideoMixerQueryFeatureSupport (VdpDevice device, VdpVideoMixerFeature feature, VdpBool *is_supported) |
Query the implementation's support for a specific feature. | |
typedef VdpStatus | VdpVideoMixerQueryParameterSupport (VdpDevice device, VdpVideoMixerParameter parameter, VdpBool *is_supported) |
Query the implementation's support for a specific parameter. | |
typedef VdpStatus | VdpVideoMixerQueryAttributeSupport (VdpDevice device, VdpVideoMixerAttribute attribute, VdpBool *is_supported) |
Query the implementation's support for a specific attribute. | |
typedef VdpStatus | VdpVideoMixerQueryParameterValueRange (VdpDevice device, VdpVideoMixerParameter parameter, void *min_value, void *max_value) |
Query the implementation's supported for a specific parameter. | |
typedef VdpStatus | VdpVideoMixerQueryAttributeValueRange (VdpDevice device, VdpVideoMixerAttribute attribute, void *min_value, void *max_value) |
Query the implementation's supported for a specific attribute. | |
typedef uint32_t | VdpVideoMixer |
An opaque handle representing a VdpVideoMixer object. | |
typedef VdpStatus | VdpVideoMixerCreate (VdpDevice device, uint32_t feature_count, VdpVideoMixerFeature const *features, uint32_t parameter_count, VdpVideoMixerParameter const *parameters, void const *const *parameter_values, VdpVideoMixer *mixer) |
Create a VdpVideoMixer. | |
typedef VdpStatus | VdpVideoMixerSetFeatureEnables (VdpVideoMixer mixer, uint32_t feature_count, VdpVideoMixerFeature const *features, VdpBool const *feature_enables) |
Enable or disable features. | |
typedef VdpStatus | VdpVideoMixerSetAttributeValues (VdpVideoMixer mixer, uint32_t attribute_count, VdpVideoMixerAttribute const *attributes, void const *const *attribute_values) |
Set attribute values. | |
typedef VdpStatus | VdpVideoMixerGetFeatureSupport (VdpVideoMixer mixer, uint32_t feature_count, VdpVideoMixerFeature const *features, VdpBool *feature_supports) |
Retrieve whether features were requested at creation time. | |
typedef VdpStatus | VdpVideoMixerGetFeatureEnables (VdpVideoMixer mixer, uint32_t feature_count, VdpVideoMixerFeature const *features, VdpBool *feature_enables) |
Retrieve whether features are enabled. | |
typedef VdpStatus | VdpVideoMixerGetParameterValues (VdpVideoMixer mixer, uint32_t parameter_count, VdpVideoMixerParameter const *parameters, void *const *parameter_values) |
Retrieve parameter values given at creation time. | |
typedef VdpStatus | VdpVideoMixerGetAttributeValues (VdpVideoMixer mixer, uint32_t attribute_count, VdpVideoMixerAttribute const *attributes, void *const *attribute_values) |
Retrieve current attribute values. | |
typedef VdpStatus | VdpVideoMixerDestroy (VdpVideoMixer mixer) |
Destroy a VdpVideoMixer. | |
typedef VdpStatus | VdpVideoMixerRender (VdpVideoMixer mixer, VdpOutputSurface background_surface, VdpRect const *background_source_rect, VdpVideoMixerPictureStructure current_picture_structure, uint32_t video_surface_past_count, VdpVideoSurface const *video_surface_past, VdpVideoSurface video_surface_current, uint32_t video_surface_future_count, VdpVideoSurface const *video_surface_future, VdpRect const *video_source_rect, VdpOutputSurface destination_surface, VdpRect const *destination_rect, VdpRect const *destination_video_rect, uint32_t layer_count, VdpLayer const *layers) |
Perform a video post-processing and compositing operation. | |
Enumerations | |
enum | VdpVideoMixerPictureStructure { VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD, VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD, VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME } |
The structure of the picture present in a VdpVideoSurface. More... |
|
|
|
The background color in the VdpVideoMixer's compositing model. This attribute's type is VdpColor. This parameter defaults to black (all color components 0.0 and alpha 1.0). The application may not query this parameter's supported range, since the type is not scalar. |
|
The color-space conversion matrix used by the VdpVideoMixer. This attribute's type is VdpCSCMatrix; CSC Matrix Manipulation. Note: When using VdpVideoMixerGetAttributeValues to retrieve the current CSC matrix, the attribute_values array must contain a pointer to a pointer a VdpCSCMatrix (VdpCSCMatrix** as a void *). The get function will either initialize the referenced CSC matrix to the current value, *or* clear the supplied pointer to NULL, if the previous set call supplied a value of NULL in parameter_values, to request the default matrix.
VdpCSCMatrix matrix; VdpCSCMatrix * matrix_ptr; void * attribute_values[] = {&matrix_ptr}; VdpStatus st = vdp_video_mixer_get_attribute_values(..., attribute_values, ...); This parameter defaults to a matrix suitable for ITU-R BT.601 input surfaces, with no procamp adjustments. The application may not query this parameter's supported range, since the type is not scalar. |
|
The maximum luma value for the luma key algorithm. This attribute's type is float. This parameter defaults to 1.0. The application may query this parameter's supported range. However, the range is fixed as 0.0...1.0. |
|
The minimum luma value for the luma key algorithm. This attribute's type is float. This parameter defaults to 0.0. The application may query this parameter's supported range. However, the range is fixed as 0.0...1.0. |
|
The amount of noise reduction algorithm to apply. This attribute's type is float. This parameter defaults to 0.0, which equates to no noise reduction. The application may query this parameter's supported range. However, the range is fixed as 0.0...1.0. |
|
The amount of sharpening, or blurring, to apply. This attribute's type is float. This parameter defaults to 0.0, which equates to no sharpening. Positive values request sharpening. Negative values request blurring. The application may query this parameter's supported range. However, the range is fixed as -1.0...1.0. |
|
Whether de-interlacers should operate solely on luma, and bob chroma. Note: This attribute only affects advanced de-interlacing algorithms, not bob or weave. This attribute's type is uint8_t. This parameter defaults to 0. The application may query this parameter's supported range. However, the range is fixed as 0 (no/off) ... 1 (yes/on). |
|
A VdpVideoMixerFeature. When requested and enabled, motion adaptive temporal deinterlacing will be used on interlaced content. When multiple de-interlacing options are requested and enabled, the back-end implementation chooses the best algorithm to apply. |
|
A VdpVideoMixerFeature. When requested and enabled, this enables a more advanced version of temporal de-interlacing, that additionally uses edge-guided spatial interpolation. When multiple de-interlacing options are requested and enabled, the back-end implementation chooses the best algorithm to apply. |
|
A VdpVideoMixerFeature. A VDPAU implementation may support multiple scaling algorithms of differing quality, and may potentially support a different subset of algorithms on different hardware. In some cases, higher quality algorithms may require more resources (memory size, memory bandwidth, etc.) to operate. Hence, these high quality algorithms must be explicitly requested and enabled by the client application. This allows applications operating in a resource-constrained environment to have some level of control over resource usage. Basic scaling is always built into any video mixer, and is known as level 0. Scaling quality increases beginning with optional level 1, through optional level 9. If an application requests and enables multiple high quality scaling algorithms, the highest level enabled scaling algorithm will be used. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. See VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 for details. |
|
A VdpVideoMixerFeature. When requested and enabled, cadence detection will be enabled on interlaced content and the video mixer will try to extract progressive frames from pull-down material. |
|
A VdpVideoMixerFeature. When requested and enabled, the alpha of the rendered surface, which is normally set to the alpha of the background color, will be forced to 0.0 on pixels corresponding to source video surface luminance values in the range specified by attributes VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA to VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA. This keying is performed after scaling and de-interlacing. |
|
A VdpVideoMixerFeature. When requested and enabled, a noise reduction algorithm will be applied to the video. |
|
A VdpVideoMixerFeature. When requested and enabled, a sharpening algorithm will be applied to the video. |
|
The chroma type of the input video surfaces the will process. This parameter's type is VdpChromaType. If not specified, this parameter defaults to VDP_CHROMA_TYPE_420. The application may not query this application's supported range, since it is a potentially disjoint enumeration. |
|
The number of auxiliary layers in the mixer's compositing model. Note that this indicates the maximum number of layers that may be processed by a given VdpVideoMixer object. Each individual VdpVideoMixerRender invocation may choose to use a different number of actual layers, from 0 up to this limit. This attribute's type is uint32_t. If not specified, this parameter defaults to 0. The application may query this parameter's supported range. |
|
The exact height of input video surfaces. This parameter's type is uint32_t. This parameter defaults to 0 if not specified, which entails that it must be specified. The application may query this parameter's supported range. |
|
The exact width of input video surfaces. This parameter's type is uint32_t. This parameter defaults to 0 if not specified, which entails that it must be specified. The application may query this parameter's supported range. |
|
An opaque handle representing a VdpVideoMixer object.
|
|
An adjustable attribute of VdpVideoMixer operation. Various attributes of VdpVideoMixer operation may be adjusted at any time. Each attribute is named via a specific VdpVideoMixerAttribute value. Each attribute has a specific type, and specific default value if not specified at VdpVideoMixer creation time. The application may query the legal supported range for some attributes. |
|
Create a VdpVideoMixer.
Initially, all attributes will have default values. Values can be changed using VdpVideoMixerSetAttributeValues. |
|
Destroy a VdpVideoMixer.
|
|
A VdpVideoMixer feature that must be requested at creation time to be used. Certain advanced VdpVideoMixer features are optional, and the ability to use those features at all must be requested when the VdpVideoMixer object is created. Each feature is named via a specific VdpVideoMixerFeature value. Once requested, these features are permanently available within that specific VdpVideoMixer object. All features that are not explicitly requested at creation time default to being permanently unavailable. Even when requested, all features default to being initially disabled. However, applications can subsequently enable and disable features at any time. See VdpVideoMixerSetFeatureEnables. Some features allow configuration of their operation. Each configurable item is an VdpVideoMixerAttribute. These attributes may be manipulated at any time using VdpVideoMixerSetAttributeValues. |
|
Retrieve current attribute values.
|
|
Retrieve whether features are enabled.
|
|
Retrieve whether features were requested at creation time.
|
|
Retrieve parameter values given at creation time.
|
|
A VdpVideoMixer creation parameter. When a VdpVideoMixer is created, certain parameters may be supplied. Each parameter is named via a specific VdpVideoMixerParameter value. Each parameter has a specific type, and specific default value if not specified at VdpVideoMixer creation time. The application may query the legal supported range for some parameters. |
|
Query the implementation's support for a specific attribute.
|
|
Query the implementation's supported for a specific attribute.
|
|
Query the implementation's support for a specific feature.
|
|
Query the implementation's support for a specific parameter.
|
|
Query the implementation's supported for a specific parameter.
|
|
Perform a video post-processing and compositing operation.
|
|
Set attribute values.
|
|
Enable or disable features.
|
|
The structure of the picture present in a VdpVideoSurface.
|