Skip to content

Add support for the vp9_vaapi encoder

Noah Davis requested to merge work/ndavis/vp9_vaapi into master

The vp9_vaapi encoder mostly just copies settings from the libvpx-vp9 encoder wherever it was straight forward to do so.

Depends on !90 (merged)

I am unable to test this patch because my integrated AMD GPU does not support VP9 encoding.

Newer Intel GPUs may support VP9.

It seems like AMD GPUs support at most H.264, H.265 and AV1, although I couldn't find a page for AMD that was as clear as the Intel one.

To see what your GPU supports, install libva-utils and run vainfo. Codec profiles with VAEntrypointEncSlice are codecs you can encode with.

❯ vainfo
Trying display: wayland
libva info: VA-API version 1.19.0
libva info: Trying to open /usr/lib64/dri/
libva info: Found init function __vaDriverInit_1_19
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.19 (libva 2.19.0)
vainfo: Driver version: Mesa Gallium driver 23.1.8 for AMD Radeon Graphics (renoir, LLVM 17.0.1, DRM 3.54, 6.5.4-1-default)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc

Merge request reports