Accelerated Video Playback: Difference between revisions

Sdht0 (talk | contribs)
"See also" section
Sdht0 (talk | contribs)
Copy edit
Line 1: Line 1:
This page is meant to help with techniques for getting accelerated video playback working in NixOS. This is generally done via libva and vaapi (and sometimes vdpau).
Accelerated video playback in NixOS is generally done by adding relevant packages to {{nixos:option|hardware.opengl.extraPackages}}.


This is done by adding relevant <code>libva</code>-related packages to the <code>hardware.opengl.extraPackages</code> option.
== Installation ==
 
=== Intel ===
Additionally, the <code>intel-vaapi-driver</code> (previously <code>vaapiIntel</code>) package can be overridden to enable [https://github.com/01org/intel-hybrid-driver Intel's Hybrid Driver].
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
 
Intel users also can enable <code>intel-media-driver</code>. It can be used at runtime with <code>LIBVA_DRIVER_NAME=iHD mpv ...</code> for example, if you use Mic92's mpv settings below.
 
Sample Intel configuration:
<syntaxHighlight lang=nix>
{
{
  ...
  nixpkgs.config.packageOverrides = pkgs: {
    intel-vaapi-driver = pkgs.intel-vaapi-driver.override { enableHybridCodec = true; };
  };
   hardware.opengl = {
   hardware.opengl = {
     enable = true;
     enable = true;
     extraPackages = with pkgs; [
     extraPackages = with pkgs; [
       intel-media-driver # LIBVA_DRIVER_NAME=iHD
       intel-media-driver # For Broadwell or newer processors. LIBVA_DRIVER_NAME=iHD
       intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
       intel-vaapi-driver # For older processors. LIBVA_DRIVER_NAME=i965
      libvdpau-va-gl
     ];
     ];
   };
   };
   environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Force intel-media-driver
   environment.sessionVariables = { LIBVA_DRIVER_NAME = "iHD"; }; # Optionally, set the environment variable
  ...
}
}
</syntaxHighlight>
</nowiki>}}
For 32-bit support, use {{nixos:option|hardware.opengl.extraPackages32}}:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
}
</nowiki>}}
=== AMD ===


32 bit example:
AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:
<syntaxhighlight lang="nix">
hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ intel-vaapi-driver ];
</syntaxhighlight>


AMD configuration (at least for Ryzen 5 iGPUs) works out of the box:<syntaxhighlight lang="nix">
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
{
   hardware.opengl.enable = true;
   hardware.opengl.enable = true;
}
}
</syntaxhighlight>
</nowiki>}}
 
== Prepared Hardware configuration ==
Sometimes different opengl packages are required to achieve full performance. You can check different configuration repositories for similar hardware configuration:
* [https://github.com/NixOS/nixos-hardware The NixOS-Hardware Repository]
 
== Testing your configuration ==
== Testing your configuration ==


You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code>
You can test your configuration by running: <code>nix-shell -p libva-utils --run vainfo</code>


See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Hardware video acceleration: Verification (Arch Wiki)] for more information.
See [https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Verification Arch Linux wiki#Hardware video acceleration] for more information.


== Applications ==
== Applications ==


===Chromium===
=== Chromium ===


See [[Chromium#Enable GPU accelerated video decoding (VA-API) | Chromium]].
See [[Chromium#Enable GPU accelerated video decoding (VA-API)]].


=== Firefox ===
=== Firefox ===


See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Firefox#Hardware_video_acceleration (ArchWiki)].
See [https://wiki.archlinux.org/index.php/Firefox#Hardware_video_acceleration Arch Linux wiki#Firefox].


===[[MPV]]===
=== MPV ===
You can place the following configuration in <code>~/.config/mpv/mpv.conf</code>
You can place the following configuration in {{ic|~/.config/mpv/mpv.conf}}:
for mpv to use hardware acceleration for VP9 on Intel Broadwell (and probably later):


<syntaxHighlight lang=ini>
<syntaxHighlight lang=ini>
Line 66: Line 53:
vo=gpu
vo=gpu
profile=gpu-hq
profile=gpu-hq
gpu-context=wayland ; On wayland only
</syntaxHighlight>
</syntaxHighlight>


With Wayland, you need to nudge mpv to do the right thing:
See [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux wiki#mpv].
 
<syntaxHighlight lang=ini>
gpu-context=wayland
</syntaxHighlight>
 
This is based on the [https://wiki.archlinux.org/title/mpv#Hardware_video_acceleration Arch Linux mpv article].


== Also see ==
== Also see ==
* [https://wiki.archlinux.org/index.php/Hardware_video_acceleration Arch Linux wiki#Hardware video acceleration].
* [https://wiki.archlinux.org/index.php/Hardware_video_acceleration Arch Linux wiki#Hardware video acceleration].
* [https://github.com/NixOS/nixos-hardware nixOS-hardware] contains example configuration for different hardware.