VA-API
Public Attributes

VAProcPipelineParameterBuffer Struct Reference

Video processing pipeline configuration. More...

#include <va_vpp.h>

List of all members.

Public Attributes

VASurfaceID surface
 Source surface ID.
const VARectangle * surface_region
 Region within the source surface to be processed.
VAProcColorStandardType surface_color_standard
 Requested input color primaries.
const VARectangle * output_region
 Region within the output surface.
unsigned int output_background_color
 Background color.
VAProcColorStandardType output_color_standard
 Requested output color primaries.
unsigned int pipeline_flags
 Pipeline filters. See video pipeline flags.
unsigned int filter_flags
 Extra filter flags. See vaPutSurface() flags.
VABufferID * filters
 Array of filters to apply to the surface.
unsigned int num_filters
 Actual number of filters.
VASurfaceID * forward_references
 Array of forward reference frames.
unsigned int num_forward_references
 Number of forward reference frames that were supplied.
VASurfaceID * backward_references
 Array of backward reference frames.
unsigned int num_backward_references
 Number of backward reference frames that were supplied.

Detailed Description

Video processing pipeline configuration.

This buffer defines a video processing pipeline. As for any buffer passed to vaRenderPicture(), this is a one-time usage model. However, the actual filters to be applied are provided in the filters field, so they can be re-used in other processing pipelines.

The target surface is specified by the render_target argument of vaBeginPicture(). The general usage model is described as follows:

If a filter (e.g. noise reduction) needs to be applied with different values for multiple surfaces, the application needs to create as many filter parameter buffers as necessary. i.e. the filter parameters shall not change between two calls to vaRenderPicture().

For composition usage models, the first surface to process will generally use an opaque background color, i.e. output_background_color set with the most significant byte set to 0xff. For instance, 0xff000000 for a black background. Then, subsequent surfaces would use a transparent background color.


Member Data Documentation

Extra filter flags. See vaPutSurface() flags.

Filter flags are used as a fast path, wherever possible, to use vaPutSurface() flags instead of explicit filter parameter buffers.

Allowed filter flags API-wise. Use vaQueryVideoProcPipelineCaps() to check for implementation details:

  • Bob-deinterlacing: VA_FRAME_PICTURE, VA_TOP_FIELD, VA_BOTTOM_FIELD. Note that any deinterlacing filter (VAProcFilterDeinterlacing) will override those flags.
  • Color space conversion: VA_SRC_BT601, VA_SRC_BT709, VA_SRC_SMPTE_240. Note that any color standard filter (VAProcFilterColorStandard) will override those flags.
  • Scaling: VA_FILTER_SCALING_DEFAULT, VA_FILTER_SCALING_FAST, VA_FILTER_SCALING_HQ, VA_FILTER_SCALING_NL_ANAMORPHIC.

Array of filters to apply to the surface.

The list of filters shall be ordered in the same way the driver expects them. i.e. as was returned from vaQueryVideoProcFilters(). Otherwise, a VA_STATUS_ERROR_INVALID_FILTER_CHAIN is returned from vaRenderPicture() with this buffer.

VA_STATUS_ERROR_UNSUPPORTED_FILTER is returned if the list contains an unsupported filter.

Note: no filter buffer is destroyed after a call to vaRenderPicture(), only this pipeline buffer will be destroyed as per the core API specification. This allows for flexibility in re-using the filter for other surfaces to be processed.

Background color.

Background color used to fill in pixels that reside outside of the specified output_region. The color is specified in ARGB format: [31:24] alpha, [23:16] red, [15:8] green, [7:0] blue.

Unless the alpha value is zero or the output_region represents the whole target surface size, implementations shall not render the source surface to the target surface directly. Rather, in order to maintain the exact semantics of output_background_color, the driver shall use a temporary surface and fill it in with the appropriate background color. Next, the driver will blend this temporary surface into the target surface.

Region within the output surface.

Pointer to a #VARectangle defining the region within the output surface that receives the processed pixels. If NULL, output_region implies the whole surface.

Note that any pixels residing outside the specified region will be filled in with the output_background_color.

Pipeline filters. See video pipeline flags.

Flags to control the pipeline, like whether to apply subpictures or not, notify the driver that it can opt for power optimizations, should this be needed.

Source surface ID.

ID of the source surface to process. If subpictures are associated with the video surfaces then they shall be rendered to the target surface, if the VA_PROC_PIPELINE_SUBPICTURES pipeline flag is set.

Requested input color primaries.

Color primaries are implicitly converted throughout the processing pipeline. The video processor chooses the best moment to apply this conversion. The set of supported color primaries primaries for input shall be queried with vaQueryVideoProcPipelineCaps().

Region within the source surface to be processed.

Pointer to a #VARectangle defining the region within the source surface to be processed. If NULL, surface_region implies the whole surface.


The documentation for this struct was generated from the following file:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines