Az SVT-AV1 2.0 kódoló és a dav1d 1.4 dekóder kiadása AV1 videó formátumhoz

Megjelent az SVT-AV1 2.0 (Scalable Video Technology AV1) könyvtár kiadása az AV1 videókódolási formátum kódolójának és dekódolójának implementációival, melyek felgyorsítására a modern Intel CPU-kban jelenlévő hardveres párhuzamos számítási eszközöket használják. A projektet az Intel a Netflix-szel együttműködve hozta létre azzal a céllal, hogy olyan teljesítményszintet érjen el, amely alkalmas az on-the-fly videó átkódolására és a video-on-demand (VOD) szolgáltatásokban való felhasználásra. Jelenleg az Open Media Alliance (AOMedia) égisze alatt folyik a fejlesztés, amely az AV1 videókódolási formátum fejlesztését felügyeli. Korábban a projektet az SVT-HEVC és SVT-VP9 kódolókat is fejlesztő OpenVisualCloud projekt keretében fejlesztették ki. A kódot a BSD licenc alatt terjesztik.

Az SVT-AV1 bármilyen architektúrára épülő rendszerhez összeszerelhető, amelyhez létezik a C99 szabványt támogató fordító, de a legjobb teljesítményt az x86_64 rendszereken érik el, amelyekhez SIMD utasításokon alapuló összeszerelés-optimalizálást alkalmaznak (kívánatos, hogy AVX2 támogatás a CPU-ban, de minimum elegendő és SS2). A memóriafelhasználás a kódolás során használt processzormagok számától függ, amit a „-lp” opció szabályoz. Az AV1-ben használt algoritmusok összetettsége miatt ennek a formátumnak a kódolása lényegesen több erőforrást igényel, mint más formátumok, ami nem teszi lehetővé a szabványos AV1 kódoló használatát valós idejű átkódoláshoz. Például az AV1 projekt törzskódolója 5721-szer, 5869-szer és 658-szor több számítást igényel, mint az x264 ("fő" profil), az x264 ("magas" profil) és a libvpx-vp9 kódolókhoz képest.

Az új SVT-AV1 kiadás változásai között szerepel:

  • Átállás történt egy új verziószámozásra, amely szerint a verzió első számjegye minden API/ABI változtatással megváltozik.
  • Változtatások történtek az API-n az utolsó képkockában a stream végének jelzésére (EOS – End Of Stream) való átállással kapcsolatban az üres keret használata helyett, ami kiküszöbölte az extra képkocka várakozásának késését. Az API változás már megjelenik az FFmpeg kódbázisban.
  • A hárommenetes, változó bitsebességű módot (3-pass VBR) eltávolítottuk, és most egy többmenetes VBR-mechanizmus váltotta fel. A VBR többlépéses módot két lépésre csökkentették az FFmpeggel való integráció biztosítása érdekében.
  • Az enkóderbe olyan optimalizálások kerültek, amelyek eredményeként az M9-M13 presetek tömörítési hatékonysága 1-4%-kal nőtt, az M5 preset memóriafogyasztása pedig 20-35%-kal csökkent LP 8 módban ill. más módokban 1-5%-kal. A többi előre beállított memóriafelhasználás 1-5%-kal csökkent.
  • A minőség/sebesség kompromisszumok optimalizálása megtörtént a magas minőséget beállító előre beállított értékeknél. A referenciaminőségű MR előre beállított értéke 100%-kal felgyorsult.
  • Az ARM-specifikus optimalizálás hozzáadásra került a csak C-funkciókhoz.

Emellett megjegyezzük a dav1d 1.4.1 projekt megjelenését, amelynek keretében a VideoLAN és az FFmpeg közösségek egy könyvtárat fejlesztenek egy alternatív ingyenes dekóder megvalósításával az AV1 videó kódolási formátumhoz. A dav1d könyvtár támogatja az AV1 összes funkcióját, beleértve a speciális almintavételi típusokat és a specifikációban megadott összes színmélység-szabályozási paramétert (8, 10 és 12 bit). A dav1d kulcsfontosságú jellemzője, hogy a lehető legmagasabb dekódolási teljesítmény elérésére összpontosít, és többszálas módban is kiváló minőségű munkát biztosít. A projektkód C (C99) nyelven íródott összeszerelési betétekkel (NASM/GAS), és a BSD licenc alatt kerül terjesztésre. Az x86, x86_64, ARMv7 és ARMv8 architektúrák, valamint a FreeBSD, Linux, Windows, macOS, Android és iOS operációs rendszerek támogatása megtörtént.

A dav1d 1.4 verzió az új Loongarch és RISC-V architektúrák támogatásáról, valamint az AVX-512 utasításokon alapuló további optimalizálás bevezetéséről, az ARM rendszerek 6tap szűrőinek működésének felgyorsításáról, a többszálú munka hatékonyságának növeléséről és a bináris adatok mérete az ARM64, ARM32 és RISC-rendszereken V. Javítva a CVE-2024-1580 biztonsági rést, amely határokon túli írást okozott egész számok túlcsordulása miatt nagyon nagy keretméretek feldolgozása során.

Forrás: opennet.ru

Hozzászólás