AMD VCN

Supported Hardware and Configurations

Please note, these are not hard limits. Hardware encoding via VCN might work on older series GPUs and older operating systems, but this is not officially supported.

On Ubuntu Linux, AMD Radeon Software for Linux version 22.40 or later is required to use the VCN encoder. Install using the amdgpu-pro-install script according to AMD’s installation guide. Additionally, you must manually install the amf-amdgpu-pro package included in the download.

Enabling support

Support for the AMD VCN encoder is enabled in preferences on the video tab. If your system is not supported, the option will be disabled.

Presets

The following presets are available under the ‘Hardware’ category in the presets menu:

These are a good starting point for configuring HandBrake to use these encoders.

Performance

HandBrake supports the AMD VCN hardware encoder but does NOT support the hardware decoder.

The CPU will still be used for:

These operations all happen in parallel as the job progresses. As such, it is normal to see high (or even 100%) CPU utilisation even when using VCN.

It is also common, particularly on lower-end or older hardware, for the CPU to be a bottleneck which will cause lower than expected performance. To minimize this effect, disable any filters that you do not require.

Advanced options

The AMD VCN hardware encoder has a limited set of advanced encoder options. Generally speaking, it is not recommended to change these parameters, as the built-in presets offer a good range of options for common uses.

If using HandBrake’s graphical interface, you can set the options in the Advanced Options field on the Video tab in the following format:

option1=value1:option2=value2

If using HandBrake’s command line interface, use the --encopts parameter as follows:

--encopts="option1=value1:option2=value2"

Option value types

The following value types are supported (each option only accepts one value type):

Options list

Option Type H.264 H.265 Detail
usage string Options: transcoding, ultralowlatency, lowlatency, webcam
coder string Coder selection. Values: auto (default), cabac, cavlc.
preanalysis boolean Set to 1 to enable preliminary analysis, 0 to disable (default).
vbaq boolean Set to 1 to enable Variance Based Adaptive Quantization, 0 to disable (default).
enforce_hrd boolean Set to 1 to enforce Hypothetical Reference Decoder, 0 to disable (default).
max_au_size int Maximum Access Unit size for rate control, in bits. Default: 0 (automatic).
me_half_pel boolean Set to 1 to enable half-pixel motion estimation (default), 0 to disable.
me_quarter_pel boolean Set to 1 to enable quarter-pixel motion estimation (default), 0 to disable.
bf_delta_qp int B-Picture Delta QP. The values scale is -1010. Default: 4.
bf_ref boolean Set to 1 to enable Reference B-Frames (default), 0 to disable.
bf_ref_delta_qp int Reference B-Picture Delta QP. The values scale is -1010. Default: 4.
intra_refresh_mb int Number of Intra-Refresh Macroblocks per slot. Default: 0 (automatic).
header_insertion_mode string Options: none, gop, idr
gops_per_idr int GOPs per IDR 0-no IDR will be inserted