# vapostproc

vapostproc applies different video filters to VA surfaces. These filters vary depending on the installed and chosen VA-API driver, but usually resizing and color conversion are available.

The generated surfaces can be mapped onto main memory as video frames.

Use gst-inspect-1.0 to introspect the available capabilities of the driver's post-processor entry point.

## Example launch line

    gst-launch-1.0 videotestsrc ! "video/x-raw,format=(string)NV12" ! vapostproc ! autovideosink

Cropping is supported via buffers' crop meta. It's only done if the postproccessor is not in passthrough mode or if downstream doesn't support the crop meta API.

### Cropping example

    gst-launch-1.0 videotestsrc ! "video/x-raw,format=(string)NV12" ! videocrop bottom=50 left=100 ! vapostproc ! autovideosink

If the VA driver support color balance filter, with controls such as hue, brightness, contrast, etc., those controls are exposed both as element properties and through the GstColorBalance interface.

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBaseTransform
                        ╰──GstVaBaseTransform
                            ╰──vapostproc

## Implemented interfaces

    GstColorBalance

## Factory details

Authors: – Víctor Jáquez <vjaquez></vjaquez>

Classification: – `Effect/Converter/Filter/Colorspace/Scaler/Video/Hardware`

Rank – none

Plugin – va

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    video/x-raw(memory:VAMemory):
             format: { NV12, I420, YV12, YUY2, RGBA, BGRA, P010_10LE, ARGB, ABGR }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    video/x-raw:
             format: { VUYA, GRAY8, NV12, NV21, YUY2, UYVY, YV12, I420, P010_10LE, RGBA, BGRA, ARGB, ABGR }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – sink

Object type – GstPad

### `src`

    video/x-raw(memory:VAMemory):
             format: { NV12, I420, YV12, YUY2, RGBA, BGRA, P010_10LE, ARGB, ABGR }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]
    video/x-raw:
             format: { VUYA, GRAY8, NV12, NV21, YUY2, UYVY, YV12, I420, P010_10LE, RGBA, BGRA, ARGB, ABGR }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – src

Object type – GstPad

## Properties

### add-borders

    “add-borders” gboolean

If set to TRUE the filter will add black borders if necessary to keep the display aspect ratio.

Flags : Read / Write

Default value : false

Since : 1.20

### disable-passthrough

    “disable-passthrough” gboolean

If set to TRUE the filter will not enable passthrough mode, thus each frame will be processed. It's useful for cropping, for example.

Flags : Read / Write

Default value : false

Since : 1.20

### scale-method

    “scale-method” GstVaScaleMethod *

Sets the scale method algorithm to use when resizing.

Flags : Read / Write

Default value : default (0)

Since : 1.22

## Named constants

### GstVaScaleMethod

#### Members

`default` (0) – Default scaling method
`fast` (256) – Fast scaling method
`hq` (512) – High quality scaling method

Since : 1.22

The results of the search are