VDPAU - VDPAU
Pierwotny autor (autorzy) | Nvidia |
---|---|
Deweloper(zy) | freedesktop.org |
Wersja stabilna | 1.3 / 18 października 2019
|
Napisane w | C , C++ |
System operacyjny | Wieloplatformowy |
Rodzaj | |
Licencja | Licencja MIT |
Strona internetowa | www |
Video Decode and Presentation API for Unix ( VDPAU ) to darmowy interfejs programowania aplikacji (API), a także jego implementacja jako bezpłatna biblioteka o otwartym kodzie źródłowym ( libvdpau ) dystrybuowana na licencji MIT . VDPAU jest również obsługiwany przez Nvidię .
Interfejs VDPAU ma być zaimplementowany przez sterowniki urządzeń , takie jak sterownik Nvidia GeForce , nouveau , amdgpu , aby zaoferować oprogramowanie użytkownika końcowego, takie jak VLC media player czy GStreamer , ustandaryzowany dostęp do dostępnego sprzętu przyspieszającego dekompresję wideo w postaci aplikacji specyficzne bloki układów scalonych (ASIC) na procesorach graficznych (GPU), takich jak PureVideo firmy Nvidia lub Unified Video Decoder firmy AMD, i korzystają z nich.
VDPAU jest przeznaczony dla systemów operacyjnych typu Unix (w tym Linux , FreeBSD , Solaris ).
Zakres funkcjonalny interfejsu
VDPAU umożliwia programom wideo dostęp do wyspecjalizowanego dekodowania wideo ASIC na GPU w celu odciążenia części procesu dekodowania wideo i przetwarzania końcowego wideo z procesora CPU na procesor graficzny.
Obecnie częściami, które można przenieść przez VDPAU na GPU, są kompensacja ruchu (mo comp), odwrócona dyskretna transformacja kosinusowa (iDCT), VLD (dekodowanie o zmiennej długości) i odblokowywanie dla MPEG-1 , MPEG-2 , MPEG-4 Asp (MPEG-4 Część 2) , H.264 / MPEG-4 AVC i VC-1 , WMV3 / WMV9 kodowane filmy. To, które z tych kodeków można odciążyć na GPU, zależy od wersji generacji sprzętu GPU.
Historia
VDPAU został pierwotnie zaprojektowany przez Nvidię dla ich bloku PureVideo SIP obecnego w ich serii GeForce 8 i późniejszych procesorach graficznych.
9 marca 2015 r. Nvidia wydała VDPAU w wersji 1.0, która obsługuje dekodowanie High Efficiency Video Coding (HEVC) dla profili Main, Main 4: 4: 4, Main Still Picture, Main 10 i Main 12.
Sterowniki urządzeń i kontrolery wideo implementujące VDPAU
VDPAU jest zaimplementowany w sterownikach urządzeń programowych X11 , ale opiera się na funkcjach akceleracji w sprzętowym GPU.
Wszystkie karty graficzne Nvidii, dla których sterownik implementuje VDPAU, są wymienione w Nvidia PureVideo .
Firma S3 Graphics dodała VDPAU do sterowników Linuksa swoich kart graficznych Chrome 400 . Od wersji 14.02.17 sterownika urządzenia dla systemu Linux, VDPAU jest dostępny ze sprzętem S3 Chrome 430 GT, S3 Chrome 440 GTX, S3 Chrome 530 GT i S3 Chrome 540 GTX.
Firma ATI/AMD wydała sterownik open source dla kart graficznych Radeon HD 4000+ z akceleracją VDPAU.
Intel nie oferuje sterowników VDPAU, obsługują tylko ich VA-API . Możliwe jest jednak użycie sterowników VA-API firmy Intel za pomocą libvdpau-va-gl .
Nvidia ma nadzieję, że inni projektanci GPU uczynią swoje produkty kompatybilne z biblioteką VDPAU open source i zapewnią sterowniki z akceleracją VDPAU, podając przykładowe nazwy sterowników specyficznych dla sprzętu dla Intela i ATI: libvdpau_intel.so i libvdpau_ati.so. Intel oświadczył, że rozważa VDPAU.
Sunxi SoC ( Allwinner ) mają eksperymentalną implementację VDPAU.
Mesa od wersji 8.0 zawiera VDPAU dla kart graficznych wykorzystujących Gallium3D .
Ogólny sterownik VDPAU
Od końca 2013 r. istnieje niezależnie opracowany sterownik zaplecza, który z kolei wykorzystuje OpenGL (do rysowania i skalowania) oraz VA-API, jeśli jest dostępny (do dekodowania). Zgłoszono, że działa na niektórych grafikach Intela i Adobe Flash Playerze .
Przyspieszone skalowanie z samą funkcjonalnością OpenGL jest potrzebne głównie z powodu Flash Playera, który używa nieprzyspieszonego skalowania, jeśli VDPAU jest niedostępne. Prawie każde inne oprogramowanie wideo działające pod Linuksem lub FreeBSD obsługuje Xv . Jest to niezbędne w przypadku pełnoekranowego wideo na wolniejszych komputerach bez natywnej obsługi VDPAU.
Translacja VDPAU do VA-API w celu dekodowania sprzętowego jest przydatna w przypadku najnowszego sprzętu graficznego firmy Intel, ponieważ niektóre programy obsługują dekodowanie sprzętowe przez VDPAU, ale nie VA-API.
Oprogramowanie obsługujące VDPAU
- Avidemux od wersji 2.6
- Boxee
- FFmpeg
- GStreamer
- Fluendo
- MPlayer
- MitTV
- Kodi (dawniej XBMC)
- Xine
- MLT
- Adobe Flash 10.2 Stage Video i nowsze wersje
- Odtwarzacz multimedialny VLC 2.1
- mpv
VDPAU może być również używany jako backend dla VA-API i OpenMAX IL , które same obejmują podzbiór możliwości VDPAU; więc każde oprogramowanie, które używa VA-API lub OpenMAX IL, jest również częściowo zdolne do korzystania z VDPAU (np. VLC media player).
Zestawy funkcji Nvidia VDPAU
Zestawy funkcji Nvidia VDPAU to różne generacje sprzętowe procesorów graficznych obsługujące różne poziomy możliwości dekodowania sprzętowego (Nvidia PureVideo). W przypadku zestawów funkcji A, B i C maksymalna szerokość i wysokość wideo to 2048 pikseli , minimalna szerokość i wysokość 48 pikseli, a wszystkie kodeki są obecnie ograniczone do maksymalnie 8192 makrobloków (8190 dla VC-1/WMV9). Przyspieszenie częściowe oznacza, że dekodowanie VLD (strumienia bitów) jest wykonywane przez procesor, a GPU wykonuje tylko IDCT , kompensację ruchu i odblokowywanie . Pełna akceleracja oznacza, że GPU wykonuje wszystkie VLD, IDCT, kompensację ruchu i odblokowywanie.
- Zestaw funkcji A
- Obsługuje pełną akcelerację dla H.264 i częściową akcelerację dla MPEG-1 , MPEG-2 , VC-1 / WMV9
- Zestaw funkcji B
- Obsługuje pełną akcelerację dla MPEG-1, MPEG-2, VC-1/WMV9 i H.264.
- Należy zauważyć, że wszystkie elementy zestawu funkcji B nie mogą dekodować H.264 dla następujących szerokości: 769-784, 849-864, 929-944, 1009-1024, 1793-1808, 1873-1888, 1953-1968, 2033-2048 pikseli.
- Zestaw funkcji C
- Obsługuje pełną akcelerację dla MPEG-1, MPEG-2, MPEG-4 Part 2 (aka MPEG-4 ASP) , VC-1/WMV9 i H.264.
- Globalna kompensacja ruchu i partycjonowanie danych nie są obsługiwane w przypadku MPEG-4 część 2.
- Zestaw funkcji D
- Podobny do zestawu funkcji C, ale dodano obsługę dekodowania H.264 z rozdzielczością do 4032 × 4080 i MPEG-1/MPEG-2 z rozdzielczością do 4032 × 4048 pikseli.
- Zestaw funkcji E
- Podobny do zestawu funkcji D, ale dodano obsługę dekodowania H.264 z rozdzielczością do 4096 × 4096 i MPEG-1/MPEG-2 z rozdzielczością do 4080 × 4080 pikseli. Procesory GPU z zestawem funkcji VDPAU E obsługują ulepszony tryb ukrywania błędów, który zapewnia bardziej niezawodną obsługę błędów podczas dekodowania uszkodzonych strumieni wideo.
- Zestaw funkcji F
- Wprowadzono dedykowane dekodowanie wideo HEVC Main (8-bit) i Main 10 (10-bit) z rozdzielczością do 4096 × 2304 pikseli.
- Zestaw funkcji G
- Obsługa sprzętowa dekodowania wideo HEVC Main 12 (12-bitowego), ale VDPAU nie obsługuje obecnie tego profilu.
- Zestaw funkcji H
- Zestaw funkcji H umożliwia dekodowanie z przyspieszeniem sprzętowym strumieni wideo 8192x8192 (rozdzielczość 8k) H.265/HEVC.
libvdpau samodzielna biblioteka VDPAU
Samodzielna biblioteka VDPAU libvdpau jest dystrybuowana przez firmę Nvidia niezależnie od jej prawnie zastrzeżonego sterownika graficznego Linux, aby pomóc w adopcji VDPAU przez osoby spoza Nvidii. Ten pakiet bibliotek typu open source zawiera bibliotekę otoki i bibliotekę debugowania, umożliwiającą innym producentom implementację VDPAU w swoich sterownikach urządzeń.
Zobacz też
- PureVideo
- Zunifikowany dekoder wideo
- DirectX Video Acceleration (DXVA) — odpowiednik interfejsu API VDPAU dla systemu operacyjnego Microsoft Windows .
- Video Acceleration API (VA API) – alternatywny interfejs API akceleracji wideo dla systemu operacyjnego Linux/UNIX.
- X-Video Bitstream Acceleration (XvBA) – alternatywny interfejs API akceleracji wideo dla systemu operacyjnego Linux/UNIX.
- X-Video Motion Compensation (XvMC) API – alternatywny i najstarszy interfejs API akceleracji wideo dla systemu operacyjnego Linux/UNIX.
- Distributed Codec Engine (libcde) to interfejs API firmy Texas Instruments dla silnika kodeków wideo w systemach wbudowanych opartych na OMAP
- Video Decode Acceleration Framework to interfejs API firmy Apple Inc. do sprzętowego dekodowania H.264 w systemie Mac OS X
- VideoToolbox to API firmy Apple Inc. do dekodowania z przyspieszeniem sprzętowym w Apple TV i Mac OS X .
- OpenMAX IL (Open Media Acceleration Integration Layer) — bezpłatny wieloplatformowy interfejs API abstrakcji mediów od Khronos Group