Frigivelse af SVT-AV1 2.0-koder og dav1d 1.4-dekoder til AV1-videoformat

Frigivelsen af ​​SVT-AV1 2.0 (Scalable Video Technology AV1) biblioteket med implementeringer af koderen og dekoderen af ​​AV1 videokodningsformatet er blevet offentliggjort. Projektet blev skabt af Intel i samarbejde med Netflix for at opnå et ydelsesniveau, der er egnet til on-the-fly videotranskodning og brug i video-on-demand (VOD)-tjenester. I øjeblikket udføres udviklingen i regi af Open Media Alliance (AOMedia), som fører tilsyn med udviklingen af ​​AV1-videokodningsformatet. Tidligere er projektet udviklet inden for rammerne af OpenVisualCloud-projektet, som også udvikler SVT-HEVC og SVT-VP9 indkodere. Koden distribueres under BSD-licensen.

SVT-AV1 kan kompileres til systemer baseret på enhver arkitektur, hvor der findes en compiler, der understøtter C99-standarden, men den bedste ydeevne opnås på x86_64-systemer, der bruger assembleroptimeringer baseret på SIMD-instruktioner (AVX2-understøttelse i CPU'en er ønskelig, men SS2 er som minimum tilstrækkeligt). Hukommelsesforbruget afhænger af antallet af processorkerner involveret i kodningen, hvilket styres af indstillingen "--lp". På grund af kompleksiteten af ​​de algoritmer, der anvendes i AV1, kræver kodning af dette format betydeligt flere ressourcer end andre formater, hvilket ikke tillader brug af standard AV1-encoderen til realtidstranskodning. For eksempel kræver standardencoderen fra AV1-projektet 5721, 5869 og 658 gange flere beregninger sammenlignet med x264- (profil "main"), x264 (profil "high") og libvpx-vp9-encoderne.

Blandt ændringerne i den nye SVT-AV1-udgivelse:

  • Der er overgået til en ny versionsnummerering, hvorefter det første ciffer i versionen ændres ved hver API/ABI-ændring.
  • Der er foretaget ændringer i API'et relateret til overgangen til end of stream indikation (EOS - End Of Stream) i den sidste frame i stedet for at bruge en tom frame, hvilket eliminerede forsinkelsen i at vente på en ekstra frame. API-ændringen er allerede afspejlet i FFmpeg-kodebasen.
  • 3-pass variabel bitrate-tilstanden (XNUMX-pass VBR) er blevet fjernet og erstattet med en multi-pass VBR-mekanisme. Multi-pass VBR-tilstand er blevet reduceret til to passager for at muliggøre integration med FFmpeg.
  • Encoderen er blevet forbedret med optimeringer, der øgede komprimeringseffektiviteten for forudindstillingerne M9-M13 med 1-4% og reducerede hukommelsesforbruget i forudindstillingen M5 med 20-35% i LP 8-tilstand og med 1-5% i andre tilstande. Hukommelsesforbruget i andre forudindstillinger er blevet reduceret med 1-5 %.
  • Optimerede kompromiser mellem kvalitet og hastighed for forudindstillinger, der sætter høje kvalitetsniveauer. MR-forudindstillingen, som giver referencekvalitet, er blevet accelereret med 100 %.
  • ARM-specifikke optimeringer er blevet tilføjet til funktioner, der kun er skrevet i C.

Derudover er det værd at bemærke udgivelsen af ​​dav1d 1.4.1-projektet, inden for rammerne af hvilket VideoLAN- og FFmpeg-fællesskaberne udvikler et bibliotek med implementeringen af ​​en alternativ gratis dekoder til AV1-videokodningsformatet. dav1d-biblioteket understøtter alle AV1-funktioner, herunder avanceret subsampling og alle specificerede farvedybdekontrolmuligheder (8, 10 og 12 bit). Hovedfunktionen ved dav1d er dens fokus på at opnå den højest mulige afkodningsydelse og sikre drift af høj kvalitet i multi-threaded-tilstand. Projektkoden er skrevet i C (C99) med assembler-indsættelser (NASM/GAS) og distribueres under BSD-licensen. Understøttelse af x86-, x86_64-, ARMv7- og ARMv8-arkitekturer samt FreeBSD-, Linux-, Windows-, macOS-, Android- og iOS-operativsystemer er blevet implementeret.

dav1d 1.4 er kendt for sin understøttelse af de nye Loongarch- og RISC-V-arkitekturer, samt yderligere optimeringer baseret på AVX-512-instruktioner, acceleration af 6tap-filtre på ARM-systemer, øget effektivitet af multithreading og reduceret binær datastørrelse på ARM64-, ARM32- og RISC-V-systemer. Rettede sårbarhed CVE-2024-1580, som resulterede i en skrivning uden for grænserne på grund af et heltalsoverløb ved håndtering af meget store frames.

Kilde: opennet.ru

Tilføj en kommentar