Byla vydána verze knihovny SVT-AV1 4.3.0 (Scalable Video Technology AV1) s implementacemi encoderu a decoderu formátu videokódování AV1, které k urychlení využívají rozšíření pro hardwarovou paralelizaci výpočtů přítomná v procesorech x86_64 a ARM. Projekt byl vytvořen společností Intel ve spolupráci s Netflixem s cílem dosáhnout výkonnostní úrovně vhodné pro real-time překódování videa a použití v službách nabízejících video na vyžádání (VOD). V současné době se vývoj uskutečňuje pod hlavičkou aliance Open Media (AOMedia), která dohlíží na vývoj formátu videokódování AV1. Předtím se projekt vyvíjel v rámci projektu OpenVisualCloud, který také vyvíjí encodery SVT-HEVC a SVT-VP9. Kód je distribuován pod licencí BSD.
SVT-AV1 může být sestaven pro systémy založené na jakýchkoli architekturách, pro které je dostupný kompilátor podporující standard C99, ale nejlepší výkon je dosažitelný na systémech x86_64, kde se používají assemblerové optimalizace na bázi SIMD instrukcí (optimální je podpora AVX2 v CPU, ale minimálně postačí i SSE2). Spotřeba paměti závisí na počtu procesorových jader použitých při kódování, které lze řídit pomocí volby „—lp“. V důsledku komplikací algoritmů používaných v AV1 vyžaduje kódování tohoto formátu výrazně více zdrojů než jiné formáty.
Mezi změnami v nové verzi SVT-AV1:
- Byla provedena optimalizace kompromisů mezi kvalitou a rychlostí pro všechny presety, což umožnilo snížit zátěž CPU o 5-8 % při zachování stejné úrovně kvality a také zkrátit čas kódování o 10-11 % v mnohonásobném režimu. Bylo zrychleno provádění operací vylučování neefektivních režimů kódování (MD – Mode Decision), výpočtu pohybových vektorů (MV – Motion Vector) a parametrů filtrů během kódování, výpočtu velikosti frekvenčních koeficientů, hledání subpixelových posunů, kopírování bloků a vyloučení nadbytečné detailnosti pomocí algoritmu RDOQ (Rate-Distortion Optimized Quantization). V mnohonásobném režimu je pro úsporu zdrojů algoritmus určování přenosu obsahu obrazovky nyní aplikován pouze na I-snímky.
- Byl přidán experimentální příznak „—fast-decode 3“ pro urychlení dekódování statických obrazů.
- Byl přidán příznak „—fgs-table“, který zahrnuje podporu pro filmové zrno (film grain) a API FILM_GRAIN_EVENT pro nastavení parametrů zrnění vázaných na snímky.
- Zvýšena rychlost bezztrátového kódování.
- V režimu kódování s nízkou latencí byla implementována paralelizace zpracování bloků (tile).
- Byla přidána možnost „max_allowed_consecutive_frames_skips“ pro nastavení přeskočení snímků v režimu konstantního bitového toku (CBR).
- Byl přidán parametr „max_hierarchical_levels“ pro řízení množství bufferů používaných při změně velikosti skupin mezisnímků (mini-GOP — Group of Pictures).
- Byla přidána konfigurační možnost „—mobile-build“ (v CMake — MOBILE_BUILD) pro vytvoření 8bitové knihovny pro RTC, VOD a AVIF. Byly přidány možnosti CONFIG_ENABLE_* pro zakázání kompilace nepoužívaných kódovacích nástrojů.
- Pro systémy x86 byly implementovány 8bitové zpracovatele CDEF na bázi instrukcí AVX2 a SSE4.1, stejně jako 16bitové přímé transformace na bázi instrukcí AVX2 a AVX-512. Byl přidán optimalizovaný kód pro mezisnímkové predikce, práci s paletami a transformace pomocí instrukcí SSE4.1. Byly optimalizovány zpracovatele pro kvantování, kopírování bloků, výpočet zkreslení a posuzování subpixelových rozdílů.
- Pro systémy ARM byly přidány varianty zpracovatelů urychlené procesorovými instrukcemi Neon.
Zdroj: opennet.ru
