vaapih264enc
Encodes raw video streams into H.264 bitstreams.
The rate-control property controls the type of encoding. In case of Constant Bitrate Encoding (CBR), the bitrate will determine the quality of the encoding. Alternatively, one may choose to perform Constant Quantizer or Variable Bitrate Encoding (VBR), in which case the bitrate is the maximum bitrate.
The H264 profile that is eventually used depends on a few settings. If dct8x8 is enabled, then High profile is used. Otherwise, if cabac entropy coding is enabled or max-bframes are allowed, then Main Profile is in effect. The element will alway go with the maximal profile available in the caps negotation and otherwise Baseline profile applies. But in some cases (e.g. hardware platforms) a more restrictedprofile/level may be necessary. The recommended way to set a profile is to set it in the downstream caps.
You can also set parameters to adjust the latency of encoding: quality-level is a number between 1-7, in the case of the Intel VAAPI driver, where a lower value will produce a higher quality output but with more latency; meanwhile a hihg number will produce a lower quality output with less latency. Also you can set tune, if your backend supports it, for low-power mode or high compression.
Example launch line
gst-launch-1.0 -ev videotestsrc num-buffers=60 ! timeoverlay ! vaapih264enc ! h264parse ! mp4mux ! filesink location=test.mp4
Hierarchy
GObject ╰──GInitiallyUnowned ╰──GstObject ╰──GstElement ╰──GstVideoEncoder ╰──GstVaapiEncode ╰──vaapih264enc
Implemented interfaces
Factory details
Authors: – Wind Yuan
Classification: – Codec/Encoder/Video/Hardware
Rank – primary
Plugin – vaapi
Package – gstreamer-vaapi
Pad Templates
sink
video/x-raw(memory:VASurface):
format: { ENCODED, NV12, YV12, I420, YUY2, UYVY, Y444, GRAY8, P010_10LE, P012_LE, VUYA, Y210, Y410, Y212_LE, Y412_LE, ARGB, xRGB, RGBA, RGBx, ABGR, xBGR, BGRA, BGRx, RGB16, RGB, BGR10A2_LE }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
interlace-mode: progressive
video/x-raw:
format: { ENCODED, NV12, YV12, I420, YUY2, UYVY, Y444, GRAY8, P010_10LE, P012_LE, VUYA, Y210, Y410, Y212_LE, Y412_LE, ARGB, xRGB, RGBA, RGBx, ABGR, xBGR, BGRA, BGRx, RGB16, RGB, BGR10A2_LE }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
interlace-mode: progressive
video/x-raw(memory:DMABuf):
format: { ENCODED, NV12, YV12, I420, YUY2, UYVY, Y444, GRAY8, P010_10LE, P012_LE, VUYA, Y210, Y410, Y212_LE, Y412_LE, ARGB, xRGB, RGBA, RGBx, ABGR, xBGR, BGRA, BGRx, RGB16, RGB, BGR10A2_LE }
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
interlace-mode: progressive
src
video/x-h264:
stream-format: { (string)avc, (string)byte-stream }
alignment: au
Properties
bitrate
“bitrate” guint
The desired bitrate expressed in kbps (0: auto-calculate)
Flags : Read / Write
Default value : 0
compliance-mode
“compliance-mode” Vaapi-encoder-h264compliance-mode *
Tune Encode quality/performance by relaxing specification compliance restrictions
Flags : Read / Write
Default value : strict (0)
cpb-length
“cpb-length” guint
Length of the CPB buffer in milliseconds
Flags : Read / Write
Default value : 1500
dct8x8
“dct8x8” gboolean
Enable adaptive use of 8x8 transforms in I-frames
Flags : Read / Write
Default value : false
default-roi-delta-qp
“default-roi-delta-qp” gint
The default delta-qp to apply to each Region of Interest(lower value means higher-quality, higher value means lower-quality)
Flags : Read / Write
Default value : -10
keyframe-period
“keyframe-period” guint
Maximal distance between two keyframes (0: auto-calculate)
Flags : Read / Write
Default value : 30
max-bframes
“max-bframes” guint
Number of B-frames between I and P
Flags : Read / Write
Default value : 0
mbbrc
“mbbrc” GstVaapiEncoderMbbrc *
Macroblock level Bitrate Control
Flags : Read / Write
Default value : auto (0)
prediction-type
“prediction-type” Vaapi-encoder-h264prediction-type *
Reference Picture Selection Modes
Flags : Read / Write
Default value : default (0)
qp-ib
“qp-ib” gint
Difference of QP between I and B frame (available only on CQP)
Flags : Read / Write
Default value : 0
qp-ip
“qp-ip” gint
Difference of QP between I and P frame (available only on CQP)
Flags : Read / Write
Default value : 0
quality-factor
“quality-factor” guint
quality factor for ICQ/QVBR bitrate control mode(low value means higher-quality, higher value means lower-quality)
Flags : Read / Write
Default value : 26
quality-level
“quality-level” guint
Encoding Quality Level (lower value means higher-quality/slow-encode, higher value means lower-quality/fast-encode)
Flags : Read / Write
Default value : 4
rate-control
“rate-control” Vaapi-rate-control-h264 *
Rate control mode
Flags : Read / Write
Default value : cqp (1)
target-percentage
“target-percentage” guint
The desired target percentage of bitrate for variable rate controls.
Flags : Read / Write
Default value : 70
temporal-levels
“temporal-levels” guint
Number of temporal levels in the encoded stream
Flags : Read / Write
Default value : 1
trellis
“trellis” gboolean
The Trellis Quantization Method of Encoder
Flags : Read / Write
Default value : false
tune
“tune” Vaapi-encoder-tune-h264 *
Encoder tuning option
Flags : Read / Write
Default value : none (0)
Named constants
Vaapi-encoder-h264compliance-mode
Members
strict
(0) – Strict compliance to the H264 Specification
restrict-buf-alloc
(1) – Restrict the allocation size of coded-buffer
Vaapi-encoder-h264prediction-type
Members
default
(0) – Default encode, prev/next frame as ref
hierarchical-p
(1) – Hierarchical P frame encode
hierarchical-b
(2) – Hierarchical B frame encode
Vaapi-encoder-tune-h264
Members
none
(0) – None
high-compression
(1) – High compression
low-power
(3) – Low power mode
Vaapi-rate-control-h264
Members
cqp
(1) – Constant QP
cbr
(2) – Constant bitrate
vbr
(4) – Variable bitrate
vbr_constrained
(5) – Variable bitrate - Constrained
icq
(7) – Constant QP - Intelligent
qvbr
(8) – Variable bitrate - Quality defined
The results of the search are