Lëshimi i koduesit SVT-AV1 2.0 dhe dekoderit dav1d 1.4 për formatin video AV1

Është publikuar publikimi i bibliotekës SVT-AV1 2.0 (Scalable Video Technology AV1) me implementime të koduesit dhe dekoderit të formatit të kodimit të videos AV1. Projekti u krijua nga Intel në partneritet me Netflix për të arritur një nivel të performancës të përshtatshme për transkodimin e videove në fluturim dhe përdorimin në shërbimet video-on-demand (VOD). Aktualisht, zhvillimi kryhet nën kujdesin e Open Media Alliance (AOMedia), e cila mbikëqyr zhvillimin e formatit të kodimit të videos AV1. Më parë, projekti u zhvillua në kuadër të projektit OpenVisualCloud, i cili gjithashtu zhvillon kodues SVT-HEVC dhe SVT-VP9. Kodi shpërndahet nën licencën BSD.

SVT-AV1 mund të montohet për sisteme të bazuara në çdo arkitekturë për të cilën ekziston një përpilues që mbështet standardin C99, por performanca më e mirë arrihet në sistemet x86_64, për të cilat përdoren optimizimet e montimit bazuar në udhëzimet SIMD (është e dëshirueshme që të ketë Mbështetja AVX2 në CPU, por si minimum është i mjaftueshëm dhe SS2). Konsumi i memories varet nga numri i bërthamave të procesorit të përdorur gjatë kodimit, i rregulluar nga opsioni "-lp". Për shkak të kompleksitetit të algoritmeve të përdorura në AV1, kodimi i këtij formati kërkon dukshëm më shumë burime se formatet e tjera, gjë që nuk lejon përdorimin e koduesit standard AV1 për transkodim në kohë reale. Për shembull, koduesi stoku nga projekti AV1 kërkon 5721, 5869 dhe 658 herë më shumë llogaritje në krahasim me koduesit x264 (profili "kryesor", x264 (profili "i lartë") dhe libvpx-vp9.

Ndër ndryshimet në versionin e ri SVT-AV1:

  • Është bërë një kalim në një numërim të ri të versionit, sipas të cilit shifra e parë në version do të ndryshojë me çdo ndryshim API/ABI.
  • Janë bërë ndryshime në API në lidhje me kalimin në treguesin e fundit të transmetimit (EOS - End Of Stream) në kuadrin e fundit në vend të përdorimit të një kornize bosh, gjë që eliminoi vonesën në pritjen për një kornizë shtesë. Ndryshimi i API është reflektuar tashmë në bazën e kodit FFmpeg.
  • Modaliteti i shpejtësisë së biteve të ndryshueshme me tre kalime (VBR me 3 kalime) është hequr dhe tani është zëvendësuar nga një mekanizëm VBR me shumë kalime. Modaliteti me shumë kalime VBR është reduktuar në dy kalime për të siguruar integrimin me FFmpeg.
  • Optimizimet janë shtuar në kodues, si rezultat i të cilave efikasiteti i kompresimit të paracaktimit M9-M13 është rritur me 1-4%, dhe konsumi i kujtesës i paravendosjes M5 është ulur me 20-35% në modalitetin LP 8 dhe me 1-5% në mënyrat e tjera. Konsumi i memories në paracaktimet e tjera u ul me 1-5%.
  • Optimizimi i kompromiseve të cilësisë/shpejtësisë është kryer për paracaktime që vendosin një nivel të lartë cilësie. Paravendosja e cilësisë së referencës MR është përshpejtuar me 100%.
  • Optimizimet specifike të ARM-së janë shtuar në funksionet vetëm në C.

Për më tepër, mund të vërejmë lëshimin e projektit dav1d 1.4.1, brenda të cilit komunitetet VideoLAN dhe FFmpeg po zhvillojnë një bibliotekë me zbatimin e një dekoderi alternativ falas për formatin e kodimit të videos AV1. Biblioteka dav1d mbështet të gjitha tiparet e AV1, duke përfshirë llojet e avancuara të marrjes së mostrave dhe të gjithë parametrat e kontrollit të thellësisë së ngjyrave të përcaktuara në specifikim (8, 10 dhe 12 bit). Tipari kryesor i dav1d është përqendrimi i tij në arritjen e performancës më të lartë të mundshme të dekodimit dhe sigurimin e punës me cilësi të lartë në modalitetin me shumë fije. Kodi i projektit është shkruar në C (C99) me futje montimi (NASM/GAS) dhe shpërndahet nën licencën BSD. Mbështetja për arkitekturat x86, x86_64, ARMv7 dhe ARMv8 dhe sistemet operative FreeBSD, Linux, Windows, macOS, Android dhe iOS është zbatuar.

Versioni dav1d 1.4 është i dukshëm për mbështetjen e arkitekturave të reja Loongarch dhe RISC-V, si dhe futjen e optimizimeve shtesë bazuar në udhëzimet AVX-512, përshpejtimin e funksionimit të filtrave 6 tap në sistemet ARM, rritjen e efikasitetit të punës me shumë fije dhe reduktimin e madhësia e të dhënave binare në sistemet ARM64, ARM32 dhe RISC V. Rregulloi dobësinë CVE-2024-1580, e cila shkaktoi një shkrim jashtë kufijve për shkak të një tejkalimi të numrit të plotë gjatë përpunimit të madhësive shumë të mëdha të kornizave.

Burimi: opennet.ru

Shto një koment