# vp9enc

This element encodes raw video into a VP9 stream. VP9 is a royalty-free video codec maintained by Google. It's the successor of On2 VP3, which was the base of the Theora video codec.

To control the quality of the encoding, the target-bitrate, min-quantizer, max-quantizer or cq-level properties can be used. Which one is used depends on the mode selected by the end-usage property. See Encoder Parameters for explanation, examples for useful encoding parameters and more details on the encoding parameters.

## Example pipeline

     gst-launch-1.0 -v videotestsrc num-buffers=1000 ! vp9enc ! webmmux ! filesink location=videotestsrc.webm

This example pipeline will encode a test video source to VP9 muxed in an WebM container.

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstVideoEncoder
                        ╰──GstVPXEnc
                            ╰──vp9enc

## Implemented interfaces

    GstPreset
    GstTagSetter

## Factory details

Authors: – David Schleef , Sebastian Dröge

Classification: – `Codec/Encoder/Video`

Rank – primary

Plugin – vpx

Package – GStreamer Good Plug-ins

## Pad Templates

### `sink`

    video/x-raw:
             format: { I420, YV12, Y444, I420_10LE, I420_12LE, I422_10LE, I422_12LE, Y444_10LE, Y444_12LE }
              width: [ 1, 2147483647 ]
             height: [ 1, 2147483647 ]
          framerate: [ 0/1, 2147483647/1 ]

Presence – always

Direction – sink

Object type – GstPad

### `src`

    video/x-vp9:
            profile: { (string)0, (string)1, (string)2, (string)3 }

Presence – always

Direction – src

Object type – GstPad

## Properties

### aq-mode

    “aq-mode” Vpxaq *

Adaptive Quantization Mode

Flags : Read / Write

Default value : off (0)

Since : 1.20

### frame-parallel-decoding

    “frame-parallel-decoding” gboolean

Whether encoded bitstream should allow parallel processing of video frames in the decoder

Flags : Read / Write

Default value : true

Since : 1.20

### row-mt

    “row-mt” gboolean

Whether each row should be encoded using multiple threads

Flags : Read / Write

Default value : false

Since : 1.20

### tile-columns

    “tile-columns” gint

Number of tile columns, log2

Flags : Read / Write

Default value : 6

Since : 1.20

### tile-rows

    “tile-rows” gint

Number of tile rows, log2

Flags : Read / Write

Default value : 0

Since : 1.20

## Named constants

### Vpxaq

VPX Adaptive Quantization modes.

#### Members

`off` (0) – GST_VPX_AQ_OFF
`variance` (1) – GST_VPX_AQ_VARIANCE
`complexity` (2) – GST_VPX_AQ_COMPLEXITY
`cyclic-refresh` (3) – GST_VPX_AQ_CYCLIC_REFRESH
`equator360` (4) – GST_VPX_AQ_EQUATOR360
`perceptual` (5) – GST_VPX_AQ_PERCEPTUAL
`psnr` (6) – GST_VPX_AQ_PSNR
`lookahead` (7) – GST_VPX_AQ_LOOKAHEAD

Since : 1.20

The results of the search are