AV1 támogatás kerül a Vulkan-ba

kami911 képe

Az AV1 (AOMedia Video 1) egy újabb, úgynevezett „nagyteljesítményű” videókódoló, amelyet az internetes tartalmak számára fejlesztettek ki. A kódoló lényege, hogy a videó minőségét jelentősen ne rontsa, miközben a fájlméretet lényegesen csökkenti. A Khronos, a Vulkan mögött álló szabványozó szervezet, nemrégiben jelentette be, hogy két új kódolót vezet be – az H264 és az H265 –, de az AV1 kódoló még nem volt része a szabványoknak. A kódoló az AOMedia alapítvány által fejlesztett és támogatott, és a nyílt forráskódú licenc alatt áll. Az AV1 a következő generációs videókódolóként tekinthető, amely jelentősen javítja az interneten terjedő videók minőségét és kompressziós arányát az előd kódolók (például: H.264, VP9)hoz képest.

A RedHat alkalmazásában álló nyílt forráskódú illesztőprogram fejlesztő Dave Airlie és egy FFmpeg fejlesztő, Lynne együtt létrehozták saját kiterjesztésüket az AV1 videók dekódolásához, amelyet VK_MESA_video_decode_av1-nek neveztek el. A Khronos részéről kaptak egy hivatalos, stabil kiterjesztésszámot (510), hogy elkerüljék a kompatibilitási problémákat.

A kiterjesztés a többi két dekóder kiterjesztéshez hasonlóan készült, de voltak különbségek. Az AV1-ben nincs a MPEG kódolókhoz hasonló, túl bonyolult NALU struktúra. A dekódolás kezdetéhez csak egy egyedi szekvenciafejléc szükséges. Minden képkocka előtt egy (nagyon nagy) képkockafejléc található. Így a videó paramétereit csak az egyetlen fejlécre bízták, amely lehet, hogy (vagy nem) közös több képkockánál – a szekvenciafejlécben. A képkockafejlécet külön biztosítja, minden képkocka VkVideoDecodeInfoKHR információján keresztül.

Másik különbség az AV1 és az MPEG kódolók között, hogy egyetlen képkocka több hivatkozás tároló (slot) is felülírhat. Helyette nem egyszerűen másolja őket, hanem hagyja a magasabb szintű dekódert (nem a hardver gyorsítót, ami a kiterjesztés) kezelje ezt, hivatkozásszámlálással a képkockán. Ez azt jelenti, hogy a hardvernek támogatnia kell ugyanazt a képkockát több slot-ban való újrahasználatát, amit úgy tudni, hogy minden AV1 hardvergyorsító támogat.

Végül, a legnagyobb probléma a hardverrel volt. Az AMD hardverdekódere egy egyedi 8-bit ID-t vár el minden képkockához. Ez nem volt probléma index alapú API-k számára, mint például a VAAPI, VDPAU, DXVA2, NVDEC és gyakorlatilag minden más dekódoló API. A Vulkan viszont nem index alapú. Minden képkockának nincs indexe – inkább alacsonyabb szinten dolgozik, a eszközcímekkel. A felhasználók szabadon átnevezhetik a címet és használhatja másik képkockaként, ami azonnal megszakítja az indexek egyediségét. Ennek a hardverkorlátnak a kiküszöbölésére a fejlesztők létrehoztak egy kitalált képkocka ID-t. A kód írása nehéz volt, mivel ez egy hatalmas hack volt, ami egyébként egy egyszerű implementáció volt. Az AV1 képkockafejléce tartalmaz képkocka ID-ket, de ezek teljesen opcionálisak és a legtöbb kódoló kihagyja őket (jó okkal, a képkockafejléc már úgyis feleslegesen nagy).

Bár lehetséges, hogy a kiterjesztés elérhetővé válik a jövőben, jelenleg még mindig a fejlesztési fázisban van. Az AV1 kódoló rendkívül ígéretes, és azt várják a fejlesztők, hogy hamarosan elterjedt lesz a multimédiás tartalmak feldolgozásában. A VK_MESA_video_decode_av1 kiterjesztés lehetővé teszi a Vulkan alapú rendszerek számára az AV1 dekódolását, ami növeli a teljesítményt és a minőséget. A kiterjesztés biztosítja a filmpor támogatását, valamint az in-place és out-of-place hivatkozások kezelését, ami lehetővé teszi a felhasználók számára a legjobb teljesítményt és minőséget. Remélhetően, hogy hamarosan elérhető lesz a felhasználók számára, és segít elterjeszteni az AV1 kódolót a multimédiás tartalmakban.

További információk: