A fost lansat versiunea 2.0 a bibliotecii SVT-AV1 (Scalable Video Technology AV1), cu implementări ale encoderului și decoderului pentru formatul de codare video AV1, pentru accelerarea proceselor fiind folosite resursele de paralelizare hardware disponibile în CPU-urile Intel moderne. Proiectul a fost creat de compania Intel în parteneriat cu Netflix, având ca scop atingerea unui nivel de performanță adecvat pentru re-codarea video în timp real și utilizarea în serviciile de video la cerere (VOD). În prezent, dezvoltarea este coordonată de alianța Open Media (AOMedia), care supervizează evoluția formatului de codare video AV1. Anterior, proiectul a evoluat în cadrul proiectului OpenVisualCloud, care dezvoltă, de asemenea, encoderele SVT-HEVC și SVT-VP9. Codul este distribuit sub licența BSD.
SVT-AV1 poate fi compilat pentru sisteme bazate pe orice arhitectură pentru care există un compilator care suportă standardul C99, însă cea mai bună performanță este atinsă pe sistemele x86_64, pentru care sunt folosite optimizări de asamblare bazate pe instrucțiuni SIMD (ideal cu suport CPU pentru AVX2, însă, ca minim, este suficient și SS2). Consumul de memorie depinde de numărul de nuclee de procesor utilizate în timpul codării, reglate prin opțiunea "--lp". Datorită complexității algoritmilor folosiți în AV1, pentru codarea acestui format sunt necesare considerabil mai multe resurse decât pentru alte formate, ceea ce împiedică utilizarea encoderului standard AV1 pentru re-codarea în timp real. De exemplu, encoderul standard din proiectul AV1 necesită de 5721, 5869 și 658 de ori mai multe calcule comparativ cu encoderii x264 (profil "main"), x264 (profil "high") și libvpx-vp9.
Printre modificările din noua versiune SVT-AV1:
- S-a realizat trecerea la o nouă numerotare a versiunilor, conform căreia prima cifră din versiune se va schimba la fiecare modificare API/ABI.
- Au fost aduse modificări API legate de trecerea la indicația de sfârșit al fluxului (EOS — End Of Stream) în ultima cadru, în loc de utilizarea unui cadru gol, ceea ce a permis eliminarea întârzierii de așteptare pentru un cadru suplimentar. Modificarea API este deja reflectată în baza de cod FFmpeg.
- Modul VBR pe trei treceri a fost eliminat, iar în locul său este acum utilizat mecanismul VBR cu mai multe treceri. Modul VBR cu mai multe treceri a fost redus la executarea a două treceri pentru a asigura integrarea cu FFmpeg.
- Encoder-ul a fost optimizat, rezultând o creștere a eficienței compresiei presetărilor M9-M13 cu 1-4%, iar consumul de memorie în presetarea M5 a scăzut cu 20-35% în modul LP 8 și cu 1-5% în alte moduri. Consumarea memoriei în celelalte presetări a scăzut cu 1-5%.
- S-au realizat optimizări ale compromisurilor calitate/viteză pentru presetările care oferă un nivel ridicat de calitate. Funcționarea presetării MR, care oferă calitate de referință, a fost accelerată cu 100%.
- În funcțiile scrise exclusiv în C, au fost adăugate optimizări specifice pentru arhitectura ARM.
De asemenea, se remarcă lansarea proiectului dav1d 1.4.1, în cadrul căruia comunitățile VideoLAN și FFmpeg dezvoltă biblioteca cu implementarea unui decodor alternativ gratuit pentru formatul de codificare video AV1. Biblioteca dav1d suportă toate caracteristicile AV1, inclusiv tipuri extinse de subsampling și toate parametrii de control al adâncimii culorii specificați în specificație (8, 10 și 12 biți). O caracteristică cheie a dav1d este orientarea spre obținerea celei mai mari performanțe posibile de decodare și asigurarea unei funcționări de calitate în modul multi-thread. Codul proiectului este scris în C (C99) cu inserții în limbaj de asamblare (NASM/GAS) și este distribuit sub licența BSD. A fost implementat suportul pentru arhitecturile x86, x86_64, ARMv7 și ARMv8, precum și pentru sistemele de operare FreeBSD, Linux, Windows, macOS, Android și iOS.
Versiunea dav1d 1.4 se remarcă prin suportul pentru noile arhitecturi Loongarch și RISC-V, precum și prin utilizarea unor optimizări suplimentare bazate pe instrucțiuni AVX-512, accelerarea funcțiilor de filtrare 6tap pe sistemele ARM, îmbunătățirea eficienței în modul multi-thread și reducerea dimensiunii binare pe sistemele ARM64, ARM32 și RISC-V. A fost eliminată vulnerabilitatea CVE-2024-1580, care provoca scrierea în zona dincolo de limitele buffer-ului din cauza unei depășiri a întregului la procesarea cadrelor de dimensiuni foarte mari.
Sursa: opennet.ro
