Izdaja kodirnika SVT-AV1 2.0 in dekoderja dav1d 1.4 za video format AV1

Izdaja knjižnice SVT-AV1 2.0 (Scalable Video Technology AV1) je bila objavljena z implementacijami kodirnika in dekoderja formata kodiranja videa AV1, za pospeševanje katerega se uporabljajo sredstva strojnega vzporednega računalništva, ki so prisotna v sodobnih procesorjih Intel. Projekt je ustvaril Intel v sodelovanju z Netflixom s ciljem doseči raven zmogljivosti, ki je primerna za sprotno video transkodiranje in uporabo v storitvah videa na zahtevo (VOD). Trenutno poteka razvoj pod okriljem Open Media Alliance (AOMedia), ki skrbi za razvoj formata za kodiranje videa AV1. Pred tem je bil projekt razvit v okviru projekta OpenVisualCloud, ki razvija tudi kodirnika SVT-HEVC in SVT-VP9. Koda se distribuira pod licenco BSD.

SVT-AV1 je mogoče sestaviti za sisteme, ki temeljijo na kateri koli arhitekturi, za katero obstaja prevajalnik, ki podpira standard C99, vendar je najboljša zmogljivost dosežena na sistemih x86_64, za katere se uporabljajo optimizacije sestavljanja na podlagi navodil SIMD (zaželeno je imeti Podpora AVX2 v procesorju, vendar kot minimum zadostuje in SS2). Poraba pomnilnika je odvisna od števila procesorskih jeder, uporabljenih med kodiranjem, ki jih regulira možnost “-lp”. Zaradi zapletenosti algoritmov, ki se uporabljajo v AV1, kodiranje tega formata zahteva bistveno več sredstev kot drugi formati, kar ne omogoča uporabe standardnega kodirnika AV1 za transkodiranje v realnem času. Standardni kodirnik iz projekta AV1 na primer zahteva 5721, 5869 in 658-krat več izračunov v primerjavi s kodirniki x264 (»glavni« profil), x264 (»visok« profil) in kodirniki libvpx-vp9.

Med spremembami v novi izdaji SVT-AV1:

  • Izveden je bil prehod na novo številčenje različic, po katerem se bo prva številka v različici spremenila z vsako spremembo API/ABI.
  • V API-ju so bile narejene spremembe v zvezi s prehodom na indikacijo konca toka (EOS - End Of Stream) v zadnjem okvirju namesto uporabe praznega okvirja, kar je odpravilo zamudo pri čakanju na dodatni okvir. Sprememba API-ja se že odraža v kodni bazi FFmpeg.
  • Triprehodni način s spremenljivo bitno hitrostjo (3-pasovni VBR) je bil odstranjen in ga zdaj nadomešča večprehodni mehanizem VBR. Večprehodni način VBR je bil zmanjšan na dva prehoda, da se zagotovi integracija s FFmpeg.
  • Kodirniku so bile dodane optimizacije, zaradi česar se je učinkovitost stiskanja prednastavitev M9-M13 povečala za 1-4 %, poraba pomnilnika prednastavitve M5 pa se je zmanjšala za 20-35 % v načinu LP 8 in za 1-5% v drugih načinih. Poraba pomnilnika v drugih prednastavitvah se je zmanjšala za 1-5 %.
  • Optimizacija kompromisov kakovost/hitrost je bila izvedena za prednastavitve, ki določajo visoko raven kakovosti. Prednastavitev referenčne kakovosti MR je bila pospešena za 100 %.
  • Funkcijam samo za C so bile dodane optimizacije, specifične za ARM.

Poleg tega lahko omenimo izdajo projekta dav1d 1.4.1, v okviru katerega skupnosti VideoLAN in FFmpeg razvijata knjižnico z implementacijo alternativnega brezplačnega dekoderja za format video kodiranja AV1. Knjižnica dav1d podpira vse funkcije AV1, vključno z naprednimi vrstami podvzorčenja in vsemi parametri za nadzor barvne globine, navedenimi v specifikaciji (8, 10 in 12 bitov). Ključna značilnost dav1d je njegova osredotočenost na doseganje najvišje možne zmogljivosti dekodiranja in zagotavljanje visokokakovostnega dela v večnitnem načinu. Projektna koda je napisana v C (C99) z vložki za montažo (NASM/GAS) in se distribuira pod licenco BSD. Implementirana je podpora za arhitekture x86, x86_64, ARMv7 in ARMv8 ter operacijske sisteme FreeBSD, Linux, Windows, macOS, Android in iOS.

Različica dav1d 1.4 je znana po tem, da podpira novi arhitekturi Loongarch in RISC-V, kot tudi uvaja dodatne optimizacije na podlagi navodil AVX-512, pospešuje delovanje filtrov s 6 pipami na sistemih ARM, povečuje učinkovitost večnitnega dela in zmanjšuje velikost binarnih podatkov v sistemih ARM64, ARM32 in RISC V. Odpravljena ranljivost CVE-2024-1580, ki je povzročila pisanje izven meja zaradi prelivanja celega števila pri obdelavi zelo velikih velikosti okvirja.

Vir: opennet.ru

Dodaj komentar