A hardveresen támogatott videólejátszás bekapcsolásával a videólejátszástól tehermentesíteni lehet a CPU-t, mert a dekódolási munkát a GPU végzi. Ezzel a videólejátszás folyamatosabb lehet és kevesebb energiát is fogyaszt.
A számítógépben lévő grafikuskártyától függően, az alábbi lehetőségek adottak:
- Video Acceleration API (VA-API) egy egységesített felület és nyílt forráskódú programkönyvtár a hardveresen gyorsított videó-lejátszáshoz és -készítéshez. Az Intel fejlesztése.
- Video Decode and Presentation API for Unix (VDPAU) egy nyílt forráskódú programkönyvtár és alkalmazásprogramozási interfésze (API) amivel a a videólejátszási feladatok egy része átterhelhető a GPU hardverre. Az NVIDIA fejlesztése.
- NVDECODE/NVENCODE - Az NVIDIA tulajdonosi alkalmazásprogramozási interfésze (API) a hardveresen gyorsított videó-lejátszáshoz és -készítéshez. Az NVIDIA GPU- működik csak a Fermi kódjelű kártyáktól kezdve. Az NVIDIA fejlesztése.
A Video Acceleration API (VA-API) lehetővé teszi a hardveresen gyorsított videódekódolást és -dekódolást különböző műveletek (VLD, IDCT, mozgáskompenzáció stb.) és a a napjainkban elterjedt kódolási szabványokhoz (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264 és VC-1/WMV3). Interfészt biztosítja a mai GPU-k videódekódolási képességeinek teljes körű kiaknázásához. Linux alatt ez a legszélesebb körben támogatott eljjárás.
AMD és Intel gyártmányok, valamint a nyílt forráskódú illesztőprogramot használó NVIDIA gyártmány esetén közvetlenül használható a VA-API. Linux-on jelenleg a VA-API támogatását több csomag valósítja meg, gyártók szerint ezek a következőek:
AMD Radeon , NVIDIA nyílt forráskódú illesztőprogramok
AMDGPU és Radeon és nouveau
A mesa-va-drivers csomag
Ezek a könyvtárak biztosítják a videó gyorsító API-t (VA-API) Unix számára. Gyorsított videolejátszást és videó utófeldolgozást biztosítanak a támogatott grafikus kártyák számára. Ez a csomag lehetővé teszi a VA-API támogatását egyes gallium illesztőprogramok számára.
Támogatott illesztőprogramok: amdgpu, radeon, nouveau
Telepítés AMD AMDGPU és Radeon illesztőprogram esetén:
sudo apt install mesa-va-drivers libva2 vainfo
Telepítés NVIDIA nouveau illesztőprogram esetén:
sudo apt install mesa-va-drivers libva2 vainfo
Intel
Intel G45 & HD Graphics hardvercsalád
Az i965-va-driver és az i965-va-driver-shaders csomagok
Ez a csomag tartalmazza az Intel G45 lapkakészletekhez és az Intel Core processzorcsaládhoz tartozó Intel HD Graphics-hoz tartozó videó dekódoló és kódoló illesztőprogramokat. A támogatott platformok a következők:
- Cantiga, Intel GMA 4500MHD (GM45)
- Ironlake, Intel HD Graphics a 2010-es Intel Core processzorcsalád számára
- Sandy Bridge, Intel HD Graphics a 2011-es Intel Core processzorcsalád számára
- Ivy Bridge
- Haswell
- Broadwell
- Skylake
- Kaby Lake
- Coffee Lake
- Cannon Lake
Telepítés Intel G45 lapkakészletekhez és az Intel Core processzorcsaládhoz tartozó Intel HD Graphics-hoz illesztőprogram esetén:
sudo apt install i965-va-driver libva2 vainfo
Intel GEN8+ Graphics hadvercsalád
Az intel-media-va-driver-non-free és az intel-media-va-driver-non-free csomagok
Ez a csomag az Intel Core processzorcsalád Intel HD Graphics processzoraihoz tartozó videó dekódoló és kódoló illesztőprogramokat tartalmazza. A támogatott platformok a következők:
- Broadwell
- Skylake
- Broxton
- Apollo Lake
- Kaby Lake
- Coffee Lake
- Whiskey Lake
- Cannon Lake
- Ice Lake
Telepítés Intel G45 lapkakészletekhez és az Intel Core processzorcsaládhoz tartozó Intel HD Graphics-hoz illesztőprogram esetén:
sudo apt install intel-media-va-driver intel-media-va-driver-non-free libva2 vainfo
NVIDIA zárt illesztőprogramok
A vdpau-va-driver csomag
A zárt NVIDIA illesztőprogram nem támogatja a VA-API-t, csak a VDPAU-t. A Video Decode and Presentation API for Unix (VDPAU) egy nyílt forráskódú programkönyvtár és alkalmazásprogramozási interfésze (API) amivel a a videólejátszási feladatok egy része átterhelhető a GPU hardverre. Az NVIDIA fejlesztése. Zárt forráskódú NVIDIA illesztőprogram esetén használható a VDPAU hívásokat VA-API hívásokká alakító illesztőprogram, a vdpau-va-illesztőprogram.
sudo apt install vdpau-va-driver libva2 vainfo
Az összes illesztőprogram telepíthető a „va-driver-all” csomag telepítésével.
VDPAU telepítése
Amennyiben nem a VA-API-t kívánja a hardveresen gyorsított videólejátszáshoz használni.
A VDPAU telepíthető a Mesa illesztőprogramok esetében a következő módon:
sudo apt install libvdpau1 mesa-vdpau-drivers
A VDPAU telepíthető a NVIDIA zárt illesztőprogramok esetében a következő módon:
sudo apt install libvdpau1 nvidia-vdpau-driver
Az összes illesztőprogram telepíthető a „vdpau-driver-all” csomag telepítésével.
VA-API információk lekérdezése
Az információk lekérdezésével megtudhatja, hogy a videólejátszó hardver milyen formátumok lejátszását tudja hardveresen gyorsítani.
A VA-API információs eszköz telepítése:
apt install vainfo
Futtassuk a parancsot:
vainfo
Az általa kinyerhető információk:
error: XDG_RUNTIME_DIR not set in the environment. libva info: VA-API version 1.7.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so libva info: Found init function __vaDriverInit_1_7 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.7 (libva 2.6.0) vainfo: Driver version: Mesa Gallium driver 20.0.8 for AMD Radeon RX 5700 XT (NAVI10, DRM 3.37.0, 5.7.1-050701-generic, LLVM 10.0.0) 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 VAProfileJPEGBaseline : VAEntrypointVLD VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc
Példa egy régebbi videokártya szerényebb képességeire:
vainfo libva info: VA-API version 1.7.0 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_7 libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed libva info: va_openDriver() returns 1 libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so libva info: Found init function __vaDriverInit_1_6 libva info: va_openDriver() returns 0 vainfo: VA-API version: 1.7 (libva 2.6.0) vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Mobile - 2.4.0 vainfo: Supported profile and entrypoints VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Simple : VAEntrypointEncSlice VAProfileMPEG2Main : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointEncSlice VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSlice VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSlice VAProfileH264MultiviewHigh : VAEntrypointVLD VAProfileH264MultiviewHigh : VAEntrypointEncSlice VAProfileH264StereoHigh : VAEntrypointVLD VAProfileH264StereoHigh : VAEntrypointEncSlice VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileNone : VAEntrypointVideoProc VAProfileJPEGBaseline : VAEntrypointVLD
Látható, hogy míg az előbbi 5700XT GPU-val szerelt kártya képes például a Youtube által használt H264, VP9 formátumokat is gyorsítani, a HEVC és VC1 mellett, addig a szerényebb képességekkel rendelkező Haswell Mobile GPU a VP9 formátumot sem támogatja. Ebből is látható, hogy fontos megnézni, hogy pontosan az adott eszköz hardveresen milyen formátumokat támogat.
Másodlagos videólejátszó elérése
Ha az adott eszközben több GPU is található, lekérdezhető a másodlagos eszküz képessége is:
DRI_PRIME=1 vainfo
Amennyiben ez nem működne, megadható még a második GPU-hoz használandó illesztőprogram is a következő módon:
DRI_PRIME=1 LIBVA_DRIVER_NAME=radeonsi vainfo
Az elérhető illesztőprogramok listájának lekérése:
ls -1 /usr/lib/x86_64-linux-gnu/dri/*_video.so
A jelenlegi lista:
- i965
- iHD
- nouveau
- r600
- radeonsi
VDPAU információk lekérdezése
Az információk lekérdezésével megtudhatja, hogy a videólejátszó hardver milyen formátumok lejátszását tudja hardveresen gyorsítani.
A VDPAU információs eszköz telepítése:
apt install vdpauinfo
Futtassuk a parancsot:
vdpauinfo
Az általa kinyerhető információk:
display: :0 screen: 0 API version: 1 Information string: G3DVL VDPAU Driver Shared Library version 1.0 Video surface: name width height types ------------------------------------------- 420 16384 16384 NV12 YV12 422 16384 16384 UYVY YUYV 444 16384 16384 Y8U8V8A8 V8U8Y8A8 Decoder capabilities: name level macbs width height ---------------------------------------------------- MPEG1 --- not supported --- MPEG2_SIMPLE 3 65536 4096 4096 MPEG2_MAIN 3 65536 4096 4096 H264_BASELINE 52 65536 4096 4096 H264_MAIN 52 65536 4096 4096 H264_HIGH 52 65536 4096 4096 VC1_SIMPLE 1 65536 4096 4096 VC1_MAIN 2 65536 4096 4096 VC1_ADVANCED 4 65536 4096 4096 MPEG4_PART2_SP 3 65536 4096 4096 MPEG4_PART2_ASP 5 65536 4096 4096 DIVX4_QMOBILE --- not supported --- DIVX4_MOBILE --- not supported --- DIVX4_HOME_THEATER --- not supported --- DIVX4_HD_1080P --- not supported --- DIVX5_QMOBILE --- not supported --- DIVX5_MOBILE --- not supported --- DIVX5_HOME_THEATER --- not supported --- DIVX5_HD_1080P --- not supported --- H264_CONSTRAINED_BASELINE 0 65536 4096 4096 H264_EXTENDED --- not supported --- H264_PROGRESSIVE_HIGH --- not supported --- H264_CONSTRAINED_HIGH --- not supported --- H264_HIGH_444_PREDICTIVE --- not supported --- HEVC_MAIN 186 139264 8192 4352 HEVC_MAIN_10 186 139264 8192 4352 HEVC_MAIN_STILL --- not supported --- HEVC_MAIN_12 --- not supported --- HEVC_MAIN_444 --- not supported --- Output surface: name width height nat types ---------------------------------------------------- B8G8R8A8 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8 R8G8B8A8 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8 R10G10B10A2 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8 B10G10R10A2 16384 16384 y NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8 Bitmap surface: name width height ------------------------------ B8G8R8A8 16384 16384 R8G8B8A8 16384 16384 R10G10B10A2 16384 16384 B10G10R10A2 16384 16384 A8 16384 16384 Video mixer: feature name sup ------------------------------------ DEINTERLACE_TEMPORAL y DEINTERLACE_TEMPORAL_SPATIAL - INVERSE_TELECINE - NOISE_REDUCTION y SHARPNESS y LUMA_KEY y HIGH QUALITY SCALING - L1 y HIGH QUALITY SCALING - L2 - HIGH QUALITY SCALING - L3 - HIGH QUALITY SCALING - L4 - HIGH QUALITY SCALING - L5 - HIGH QUALITY SCALING - L6 - HIGH QUALITY SCALING - L7 - HIGH QUALITY SCALING - L8 - HIGH QUALITY SCALING - L9 - parameter name sup min max ----------------------------------------------------- VIDEO_SURFACE_WIDTH y 48 4096 VIDEO_SURFACE_HEIGHT y 48 4096 CHROMA_TYPE y LAYERS y 0 4 attribute name sup min max ----------------------------------------------------- BACKGROUND_COLOR y CSC_MATRIX y NOISE_REDUCTION_LEVEL y 0.00 1.00 SHARPNESS_LEVEL y -1.00 1.00 LUMA_KEY_MIN_LUMA y LUMA_KEY_MAX_LUMA y
https://directory.fsf.org/wiki/VDPAU_info_tool
A GPU használat ellenőrzése
A videókártya GPU használata alapján látható, hogy a rendszer a CPU-t vagy a GPU-t használja a videólejátszáshoz. A CPU használat és load értékek megtekinthetőek a „top” és „htop” alkalmazásokban. A GPU használatához az adott GPU-hoz szabott szeközt használhatja.
AMD Radeon GPU
AMD Radeon GPU esetében a „radeontop” amelyet telepíthet, a
sudo apt install radeontop
paranccsal, majd pedig futtathat a:
sudo radeontop
paranccsal.
Intel GPU
Intel GPU esetében a „sudo intel_gpu_top” amelyet telepíthet, a
sudo apt install intel-gpu-tools
paranccsal, majd pedig futtathat a:
sudo sudo intel_gpu_top
paranccsal.
Beállítások a lejátszó szoftverekben
MVP alapú lejátszók
Az MVP alapú lejátszók (MVP, Hypnotix) számára lehetőség van a
hwdec=vaapi
beállítás elvégzésére a VAAPI beállytás támogatására. Ez azonban az MVP dokumentációja szerint nem támogatott:
A HW-dekódolás állandó engedélyezése a konfigurációs fájlban nem javasolt. Ha az Ubuntu csomagot használja, törölje az /etc/mpv/mpv.conf állományt, mivel a csomag a hwdec=vaapi beállításával megpróbálja alapértelmezés szerint engedélyezni a hardver dekódolást (ami nem ideális, és még az optimálistól eltérő wrapperek használatát is okozhatja). Vagy legalább változtassa meg
hwdec=auto-safe
beállításra.
FFmpeg alapú lejátszók
FFmpeg-ben terminálban megadható a VA-API használata, az alábbi terminállal parancssori kapcsolóval:
ffmpeg -hwaccel vaapi
- Hardware video acceleration#Verifying VA-API
- Firefox hardware video acceleration