NVidia VA-API implementation v0.0.1 release

Hey

As you may already know I’ve been attempting to build a VA-API implementation backed by NVDEC. This would allow firefox (aswell as other apps) to finally have hardware accelerated video playback.

Well, I’m happy to announce it’s finally ready. It’s available here.

There are a couple of caveats:

  1. You need Firefox 96, which is currently in beta.
  2. You’ll need to open up Firefox’s security considerably to allow this to work. This is improved with Firefox 97 where we only need to open up a few syscalls, but this will still decrease the security of your browser.
  3. This package conflicts with the libva-vdpau-driver, so installing this will overwrite that driver.

Feedback is welcome, especially if you find any videos that fail to playback correctly.

Regards
elFarto

8 Likes

Thanks for your work on this!

Since it’s still early phase, I wonder if you could rename the project to nvdec-vaapi-backend instead of nvidia.
That’s because as you pointed out, this will conflicts with the existing vdpau-va-driver (handling the nvidia_drv_video.so symlink).

So if using nvdec_drv_video.so as the VAAPI backend name, it will allow packagers to amend the packages, holding the symlink with “updates-alternatives” so either backend can be selected at runtime.

In the long run, we can probably introduce a dedicated mapping within libva to try nvdec, then vdpau when the “DRI driver” is nvidia… This will both avoid the conflicts and the needs of the env variable.

Looking forward to test this VAAPI backend in the next days…

I’m not sure it requires renaming the whole project (since I haven’t ruled out adding NVENC support), but I understand the issue.
However, there’s nothing that prevents the library being renamed by the packagers and pointing the existing nvidia_drv_video.so symlink to it.
I’m not opposed to renaming it, but I don’t see a pressing need to do it at the moment. We’ll see what comes of my patch to libva to add the ‘nvidia’ mapping in.