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. https://www.intel.com/content/www/us/en/docs/onevpl/developer-reference-media-intel-hardware/1-0/overview.html

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. https://www.amd.com/en/technologies/software-gaming-media

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/radeonsi_drv_video.so
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