Kompenzace pohybu X-Video - X-Video Motion Compensation

X-Video Motion Compensation (XvMC) , je rozšíření X video rozšíření (Xv) pro X Window System . Rozhraní XvMC API umožňuje videoprogramům odebírat části procesu dekódování videa na grafický hardware GPU . Teoreticky by tento proces měl také snížit požadavky na šířku pásma sběrnice. V současné době jsou podporovanými částmi, které má XvMC uvolnit na GPU, kompenzace pohybu (mo comp) a inverzní diskrétní kosinová transformace (iDCT) pro video MPEG-2 . XvMC také podporuje odlehčení dekódování mo comp , iDCT a VLD („Variable-Length Decoding“, běžněji známé jako „slice level acceleration“) nejen pro MPEG-2, ale také MPEG-4 ASP video na VIA Unichrome (S3 Graphics Chrome Series) .

XvMC byl prvním unixovým ekvivalentem rozhraní Microsoft Windows DirectX Video Acceleration (DxVA) API . Mezi populární softwarové aplikace, o nichž je známo, že využívají výhod XvMC, patří MPlayer , MythTV a xine .

Ovladače zařízení

Každý hardwarový grafický grafický procesor schopný akcelerace videa XvMC vyžaduje k povolení těchto funkcí ovladač softwarového zařízení X11 .

Výrobci hardwaru

Nvidia

V současné době jsou k dispozici tři ovladače X11 Nvidia: otevřený zdroj pouze pro 2D, ale zastřený ovladač udržovaný společností Nvidia s názvem nv, proprietární binární ovladač společnosti Nvidia a ovladač otevřeného zdroje založený na zpětném inženýrství binárního ovladače vyvinutého komunitou Linux s názvem Nouveau . Nouveau nesleduje podporu XvMC, ovladač 2D nv nepodporuje XvMC a oficiální proprietární binární ovladač Nvidia podporuje pouze vykládání MPEG-2 (mo comp a iDCT) na hardwaru až do řady GeForce 7000 včetně .

PŘES

VIA poskytuje ovladače zařízení s otevřeným zdrojovým kódem pro některý ze svých hardwaru VIA Unichrome (S3 Graphics Chrome Series) , které podporují vykládání videa MPEG-2 a MPEG-4 ASP . Díky úrovni dekódování VLD vykládá VIA mnohem více dekódovacích úloh z CPU než GPU podporující pouze úrovně iDCT nebo mo comp. Mějte na paměti, že ne všechna zařízení jsou podporována a existují i ​​další upozornění. t

Intel

Společnost Intel poskytuje oficiální ovladače zařízení s otevřeným zdrojovým kódem, které podporují vykládání MPEG-2 (mo comp a iDCT) na řadě integrovaných grafických čipů Intel 8xx / 9xx.

ATI / AMD

Ačkoli společnost ATI byla prvním výrobcem, který na svých grafických deskách poskytoval akceleraci MPEG2 s grafickým procesorem Rage 128, nikdy neposkytl dokumentaci o tom, jak ji používat. Žádný XvMC tedy není k dispozici a pravděpodobně ani nikdy nebude. XvMC je podporován na kartách Radeon -4000 (které mají UVD ) ovladačem Catalyst od verze 8.10 a vyšší na experimentální úrovni (což znamená, že nefunguje „ z krabice “.) (Viz také X-Video Bitstream Acceleration ). Podpora kompenzace pohybu v dalším hardwaru ATI / AMD je plánována do budoucna. (Nyní veškerý hardware podporuje akceleraci MPEG-2 na úrovních iDCT a mo comp).

Matrox

Na hardwaru Matrox neexistují žádné ovladače zařízení, které podporují XvMC (i když hardware Matrox Parhelia podporuje akceleraci MPEG-2 na úrovni mo comp).

S3

Binární ovladač zařízení od S3 podporuje pouze vykládání MPEG-2 v počátečním ovladači 2.0.16 na grafických kartách Chrome 20.

Technický přehled XvMC API

Toto je z X-Vxvideoideo Motion Compensation - specifikace API v. 1.0

XvPort

XvMC rozšiřuje rozšíření videa X (Xv) a využívá známý koncept XvPort. Porty mají atributy, které lze nastavit a dotazovat pomocí Xv. V portech XvMC mohou být také vytvořeny kontexty hardwarové kompenzace pohybu pro použití s ​​nimi. Na porty, které podporují XvImages (tj. Mají kódování portů „XV_IMAGE“, jak je popsáno v dodatku API Xv verze 2.2), lze získat dotaz na seznam typů XvMCSurface, které podporují. Pokud podporují jakékoli typy XvMCSurface, lze pro tento port vytvořit XvMCContext.

XvMCContext

XvMCContext popisuje stav potrubí kompenzace pohybu . Lze vytvořit individuální XvMCContext pro použití s ​​jediným portem, typem povrchu, typem kompenzace pohybu, šířkou a výškou. Může být například vytvořen kontext pro konkrétní port, který provádí kompenzaci pohybu MPEG-2 na plochách 720 x 480 4: 2: 0. Jakmile je kontext vytvořen, jeho odkazování znamená port, typ povrchu, velikost a typ kompenzace pohybu. Kontexty mohou být „přímé“ nebo „nepřímé“. Pro nepřímé kontexty vykresluje X zobrazovací server všechna videa pomocí dat předaných klientem. Pro přímé kontexty vykreslují klientské knihovny video s malou nebo žádnou interakcí se serverem zobrazení X.

XvMCPovrchy

XvMCSurfaces jsou vyrovnávací paměti, do kterých se může vykreslit hardware pro kompenzaci pohybu . Data v samotných vyrovnávacích pamětech nejsou přístupná pro klienta a mohou být uložena ve formátu specifickém pro hardware. Lze vytvořit libovolný počet vyrovnávacích pamětí pro použití v konkrétním kontextu (prostředky dovolující).

Video potrubí

XvMC poskytuje akceleraci videa začínající na jednom ze dvou míst v kanálu videa . Zrychlení začínající v prvním bodě, kterému budeme říkat úroveň „Motion Compensation“, začíná po inverzní kvantizaci a IDCT v místě, kde má být použita kompenzace pohybu . Druhý bod, který budeme nazývat „IDCT“, začíná před IDCT těsně po inverzní kvantizaci.

Vykreslování

Vykreslování se provádí prezentací knihovny s cílovým XvMCSurface a až dvěma referenčními XvMCSurfaces pro kompenzaci pohybu, vyrovnávací pamětí 8x8 bloků a vyrovnávací pamětí příkazů, která popisuje, jak použít bloky 8x8 spolu s vektory kompenzace pohybu ke konstrukci dat v cíl XvMCSurface. Když potrubí začíná na úrovni iDCT, Xv provede IDCT na blocích před provedením kompenzace pohybu. K dispozici je funkce pro kopírování / překrytí části XvMCSurface do výkresu s libovolným měřítkem.

XvMCObrázky

XvMCSubpictures jsou samostatné povrchy, které mohou být smíchány s cílovým povrchem. Může být vytvořen libovolný počet XvMCSubpictures pro použití v kontextu (povolující prostředky). Podporováno je chování „backend“ i „frontend“.

Softwarová podpora

Zrychlení XvMC je podporováno v:

Procesy, které lze urychlit

Přestože XvMC v současné době podporuje pouze hardwarovou akceleraci kompenzace pohybu (mo comp) a inverzní diskrétní kosinusovou transformaci (iDCT) (a dekódování s proměnnou délkou pro VIA Unichrome GPU), další procesy dekódování videa lze předat moderním GPU, které by mohly být zrychleno pomocí fragmentových programů GPU. XvMC by mohl být v budoucnu rozšířen o podporu stejných procesů jako novější konkurenční rozhraní API pro hardwarovou akceleraci videa, jako jsou VDPAU , XvBA a VAAPI :

Aktuální omezení

Kromě toho, že neodpovídá všem funkcím a funkcím DxVA (což je ekvivalentní rozhraní API společnosti Microsoft pro Windows ) a chybí podpora pro jiné formáty videa než MPEG-2 v ovladačích zařízení Linux od společností Intel a NVIDIA , specifikace specifikace XvMC API verze 1.0 v současné době také má tato další omezení:

  • BOB a onefield jsou jediné metody odstraňování prokladu, které fungují s XvMC.
  • Obraz v obraze (PiP) nefunguje s XvMC.
  • Krokování video snímek po snímku může u XvMC způsobit artefakty.
  • Úpravy videa je s aktivovaným XvMC obtížné nemožné.
  • Chybí transparentnost sítě v XvMC API
  • Chybí schopnost klientské aplikace být zcela nezávislá na tom, kterou knihovnu na straně klienta je třeba použít (tj. Jednotnou souhrnnou knihovnu).

Probíhá projekt s názvem VA API , jehož cílem je vyvinout modernější API pro akceleraci videa, které bude podporovat funkce akcelerace videa moderních GPU.

Viz také

Reference

externí odkazy