Utgitt versjon 4.3.0 av SVT-AV1-biblioteket (Scalable Video Technology AV1) med implementeringer av encoder og decoder for AV1 video koding, som bruker tilgjengelige x86_64 og ARM prosessorer for hardwaresynkronisering av beregninger. Prosjektet er utviklet av Intel i samarbeid med Netflix med mål om å oppnå en ytelse som er egnet for sanntids videotranskoding og bruk i video-on-demand (VOD) tjenester. Utviklingen skjer nå under AOMedia, som overvåker utviklingen av AV1 video kodingsformatet. Prosjektet ble tidligere utviklet under OpenVisualCloud, som også utvikler SVT-HEVC og SVT-VP9 kodere. Koden distribueres under BSD-lisensen.
SVT-AV1 kan kompilere for systemer basert på alle arkitekturer som har en kompilator med støtte for C99-standarden, men best ytelse oppnås på x86_64-systemer, der assembleroptimaliseringer basert på SIMD-instruksjoner brukes (det anbefales at CPU har AVX2-støtte, men SSE2 er minimum). Minneforbruket avhenger av antall kjerner som brukes under koding, regulert av alternativet '—lp'. På grunn av kompleksiteten i AV1-algoritmene krever koding av dette formatet betydelig mer ressurser enn for andre formater.
Blant endringene i den nye utgaven av SVT-AV1:
- Det er utført optimalisering av kvalitet/ytelse kompromisser for alle forhåndsinnstillinger, som reduserte CPU-lasten med 5-8% mens kvalitetsnivået opprettholdes, samt forkortet kodingstiden med 10-11% i flertrådet modus. Utførelsen av operasjoner for å ekskludere ineffektive kodemodus (MD - Mode Decision), beregning av bevegelsesvektorer (MV - Motion Vector) og filterparametere under koding, beregning av frekvenskoeffisientstørrelser, søk etter subpixelforskyvninger, blokkoppretting og bortfall av unødvendig detaljering ved hjelp av RDOQ-algoritmen (Rate-Distortion Optimized Quantization) er akselerert. I flertrådet modus brukes algoritmen for å bestemme innholdstranslasjon nå kun på I-rammer for å spare ressurser.
- En eksperimentell flagg '—fast-decode 3' er lagt til for å akselerere dekoding av statiske bilder.
- Flaggen «—fgs-table» er lagt til, som inkluderer støtte for filmkorn, og API FILM_GRAIN_EVENT for å angi kornparametre knyttet til rammer.
- Raskere tapfri koding er implementert.
- I lav-latens kodingsmodus er parallellbehandling av blokkene (tile) implementert.
- Alternativet «max_allowed_consecutive_frames_skips» er lagt til for justering av rammesbortfall i konstant bitrate-modus (CBR).
- Parameteren «max_hierarchical_levels» er lagt til for å kontrollere bufferen som brukes ved endring av størrelse på grupper av mellomliggende bilder (mini-GOP — Group of Pictures).
- Byggealternativet «—mobile-build» (i CMake — MOBILE_BUILD) er lagt til for å lage et 8-bits bibliotek for RTC, VOD og AVIF. Alternativer CONFIG_ENABLE_* for å deaktivere byggingen av ubrukte kodingsverktøy er lagt til.
- For x86-systemer er det implementert 8-bits CDEF-håndterere basert på AVX2- og SSE4.1-instruksjoner, samt 16-bits direkte transformasjoner basert på AVX2- og AVX-512-instruksjoner. Optimalisert kode for mellomrammeforutsigelse, palettbehandling og transformasjoner er lagt til, basert på SSE4.1-instruksjoner. Håndterere for kvantisering, blokkekopiering, beregning av forvrengninger og evaluering av sub-pikselforskjeller har blitt optimalisert.
- For ARM-systemer er det lagt til varianter av håndterere som er akselerert ved hjelp av prosessorinstruksjoner fra Neon.
Kilde: opennet.ru
