Apple VideoToolbox

Supported hardware

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

Enabling support

If your computer is supported you will see one or more of the following video encoders added to the encoder control on the Video tab.

Choice of the underlying hardware encoder (AMD VCE or Intel Quick Sync Video) is not available. The highest quality option will typically be chosen.

Performance

Only video encoding is performed by the hardware encoder. Every stage prior to and after video encoding including decoding, filters, audio/video sync, audio encoding, muxing, etc., is performed by the CPU. As a result, it is normal to have high (even 100%) CPU utilisation during encodes.

It is common, particularly on lower-end hardware, for the CPU to be a bottleneck for the hardware video encoder. To minimize this effect, disable any filters that you do not require.

Advanced options

The VideoToolbox 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
gpu-registryid int GPU selection. If set, the VideoToolbox will only use a hardware encoder running on the GPU specified by the provided GPU registryID.
bframes boolean Set to 1 to enable Reference B-Frames (default), 0 to disable.
cabac boolean Set to 1 to enable cabac, 0 to disable. Note the hyphen for H.264.
slice-max-size boolean Set the maximum slice size for H.264 encoding in bytes.
vbv-bufsize boolean Sets the size of the VBV buffer in bytes per second.
vbv-maxrate boolean Sets the maximum rate the VBV buffer should be assumed to refill at, in bytes per second.
max-frame-delay int The maximum frame delay count is the maximum number of frames that a compressor is allowed to hold before it must output a compressed frame.