Interfejs API przyspieszania wideo — Video Acceleration API
Pierwotny autor (autorzy) | Intel |
---|---|
Pierwsze wydanie | 2008 |
Wersja stabilna | 2.13.0 / 16 września 2021
|
Magazyn | |
Napisane w | C |
System operacyjny | Linux , Android , BSD |
Rodzaj | API |
Licencja | Licencja MIT |
Strona internetowa |
www |
Video Acceleration API ( VA-API ) jest open source API , który pozwala aplikacji, takich jak odtwarzacz VLC media lub GStreamer do możliwości akceleracji wideo użycie sprzętu, zazwyczaj dostarczane przez grafika jednostki przetwarzającej (GPU). Jest zaimplementowany przez darmową i open-source bibliotekę libva , połączoną ze sterownikiem specyficznym dla sprzętu, zwykle dostarczanym razem ze sterownikiem GPU.
Interfejs VA-API wideo dekodowania / kodowania jest platforma i system okienny niezależne, ale jest kierowana przede wszystkim na Direct Rendering Infrastructure (DRI) w X Window System na Unix -jak systemów operacyjnych (w tym Linux , FreeBSD , Solaris ) i Androida , jednak może ona potencjalnie może być również używany z bezpośrednimi podsystemami bufora ramki i grafiki dla wyjścia wideo. Akceleracji obsługuje dekodowanie obrazu , kodowanie wideo , podobrazu mieszania rendering.
Specyfikacja VA-API została pierwotnie zaprojektowana przez firmę Intel dla urządzeń GPU z serii GMA (Graphics Media Accelerator) w celu ostatecznego zastąpienia standardu XvMC jako domyślnego wieloplatformowego uniksowego odpowiednika interfejsu API Microsoft Windows DirectX Video Acceleration (DxVA) , ale obecnie interfejs API nie jest już ograniczony do sprzętu lub procesorów graficznych Intela. Inny sprzęt i producenci mogą swobodnie korzystać z tego otwartego standardu API do przyspieszania sprzętowego przetwarzania wideo na własnym sprzęcie bez płacenia tantiem.
Przegląd
Główną motywacją dla VA-API jest umożliwienie akcelerowanego sprzętowo dekodowania wideo w różnych punktach wejścia ( VLD , IDCT , kompensacja ruchu , odblokowywanie ) zgodnie z obowiązującymi obecnie standardami kodowania ( MPEG-2 , MPEG-4 ASP / H.263 , MPEG-4 AVC/H.264 , H.265/HEVC i VC-1/WMV3 ). Rozważano rozszerzenie XvMC, ale ze względu na oryginalny projekt tylko dla MPEG-2 MotionComp , bardziej sensowne było zaprojektowanie od podstaw interfejsu, który może w pełni wykorzystać możliwości dekodowania wideo w dzisiejszych procesorach graficznych .
Obsługiwany sprzęt i sterowniki
Od 2019 r. VA-API jest natywnie obsługiwane przez:
- Sterowniki open source Intel Quick Sync dla systemu Linux
- Otwarte sterowniki Mesa dla kart graficznych AMD i Intel
- Sterowniki AMDGPU-PRO dla kart graficznych AMD w systemie Linux
- libva-vdpau-sterownik dla kart obsługiwanych przez VDPAU
Obsługiwane kodeki wideo
VA-API obsługuje obecnie te kodeki wideo w oficjalnej wersji głównej, ale należy pamiętać, że dokładnie obsługiwane kodeki wideo zależą od sprzętu i możliwości sterownika.
- Akceleracja dekodowania MPEG-2 Profil główny
- Przyspieszenie dekodowania VC-1 / WMV3 Profil zaawansowany
- Przyspieszenie dekodowania MPEG-4 Part 2 (H.263) (aka MPEG-4 SP / MPEG-4 ASP, bardziej znane jako Xvid )
- Akceleracja kodowania H.264 AVC Główny profil
- Akceleracja dekodowania H.264 AVC Wysoki profil
- Sprzętowe dekodowanie zmiennej długości H.264 / AVC (VLD) — CABAC
- Sprzętowe dekodowanie zmiennej długości H.264 / AVC (VLD) — CAVLC
- Sprzętowa transformacja odwrotna H.264 / AVC (IT)
- Sprzętowa kompensacja ruchu H.264 / AVC (HWMC)
- Sprzętowe odblokowywanie w pętli H.264 / AVC (ILDB)
- Przyspieszenie kodowania H.265/HEVC
- Przyspieszenie dekodowania H.265/HEVC
- 8-bitowa akceleracja kodowania VP9
- 8-bitowa i 10-bitowa akceleracja dekodowania VP9
Procesy, które można przyspieszyć za pomocą VA-API
Procesy dekodowania i przetwarzania końcowego wideo, które można odciążyć i przyspieszyć, jeśli obsługują je zarówno sterowniki urządzeń, jak i sprzęt GPU:
- Kompensacja ruchu (mocomp)
- Odwrotna dyskretna transformata kosinusowa (iDCT)
- Filtr odblokowujący w pętli
- Przewidywanie wewnątrzramkowe
- dekodowanie o zmiennej długości (VLD), powszechnie znane jako przyspieszenie na poziomie plastra
- Przetwarzanie strumienia bitów ( CAVLC / CABAC )
Architektura oprogramowania
Obecny interfejs jest niezależny od systemu okien, dzięki czemu może być potencjalnie używany z podsystemami graficznymi innymi niż DRI (Direct Rendering Infrastructure) w X Window System , takimi jak bezpośredni z buforem ramki , i może współpracować z DRM innych firm ( Direct Rendering Manager) . W skrócie, jest to system do przekazywania różnych typów buforów danych z aplikacji na graficznego dla dekodowania i kodowania do sprężonego strumienia bitów .
Oprogramowanie wspierające VA-API
- Bałagan (zestaw narzędzi)
- Serwer mediów Jellyfin
- Serwer multimedialny Emby (od wersji 3.0.6400)
- Odtwarzacz multimedialny Helix ( Linux )
- ffmpeg , narzędzie wiersza poleceń z projektu FFmpeg , obsługuje kodowanie VA-API przez CLI w wersji od 3.1, a także libavcodec (również część projektu FFmpeg) zawiera kod, którego używają inne aplikacje do obsługi dekodowania przyspieszonego sprzętowo, w tym VA- API.
- Fluendo
- Zgrzyt Flash / odtwarzacz SWF
- GStreamer przez gstreamer-vaapi
- Kodi (dawniej XBMC Media Center) ( Linux )
- Kodibuntu (dawniej XBMC Live) (system operacyjny Linux Live CD/USB)
- MPlayer (v1 z łatkami) i jego widelec mpv (natywny)
- MythTV (od wydania 0.25)
- Odtwarzacz multimedialny VLC (od wersji 1.1.0)
- Klient Bluecherry DVR (od wersji 2.2.6)
- Xine (poprzez bibliotekę „ xine-lib-vaapi ”) od wersji 1.2.3
- Otwórz oprogramowanie dla nadawców
- Firefox (na Wayland od wydania 78 i na X11 od wydania 80)
Zobacz też
- Distributed Codec Engine (libdce) — Texas Instruments API dla silnika kodeków wideo w systemach wbudowanych opartych na OMAP
- OpenMAX — bezpłatny, wieloplatformowy interfejs API abstrakcji mediów od Khronos Group