Lansarea bibliotecii SVT-AV1 2.0 (Scalable Video Technology AV1) a fost publicată cu implementări ale codificatorului și decodorului formatului de codificare video AV1, pentru accelerarea cărora sunt utilizate mijloacele de calcul paralel hardware prezente în procesoarele Intel moderne. . Proiectul a fost creat de Intel în parteneriat cu Netflix, cu scopul de a atinge un nivel de performanță adecvat pentru transcodarea video din mers și utilizarea în servicii video la cerere (VOD). În prezent, dezvoltarea se desfășoară sub auspiciile Open Media Alliance (AOMedia), care supraveghează dezvoltarea formatului de codificare video AV1. Anterior, proiectul a fost dezvoltat în cadrul proiectului OpenVisualCloud, care dezvoltă și codificatoarele SVT-HEVC și SVT-VP9. Codul este distribuit sub licența BSD.
SVT-AV1 poate fi asamblat pentru sisteme bazate pe orice arhitectură pentru care există un compilator care acceptă standardul C99, dar cele mai bune performanțe se obțin pe sistemele x86_64, pentru care se folosesc optimizări de asamblare bazate pe instrucțiuni SIMD (este de dorit să existe Suport AVX2 în procesor, dar ca minim este suficient și SS2). Consumul de memorie depinde de numărul de nuclee de procesor utilizate în timpul codificării, reglementat de opțiunea „-lp”. Datorită complexității algoritmilor utilizați în AV1, codificarea acestui format necesită mult mai multe resurse decât alte formate, ceea ce nu permite utilizarea codificatorului AV1 standard pentru transcodarea în timp real. De exemplu, codificatorul stoc din proiectul AV1 necesită de 5721, 5869 și 658 de ori mai multe calcule în comparație cu codificatoarele x264 (profilul principal), x264 (profilul înalt) și libvpx-vp9.
Printre modificările din noua versiune SVT-AV1:
- S-a făcut o tranziție la o nouă numerotare a versiunii, conform căreia prima cifră din versiune se va schimba cu fiecare modificare API/ABI.
- Au fost aduse modificări API-ului legate de trecerea la indicația de sfârșit a fluxului (EOS - End Of Stream) în ultimul cadru în loc de a folosi un cadru gol, ceea ce a eliminat întârzierea așteptării unui cadru suplimentar. Modificarea API-ului este deja reflectată în baza de cod FFmpeg.
- Modul de rată de biți variabilă cu trei treceri (VBR cu trei treceri) a fost eliminat și este acum înlocuit cu un mecanism VBR cu mai multe treceri. Modul VBR multi-pass a fost redus la două treceri pentru a asigura integrarea cu FFmpeg.
- Au fost adăugate optimizări la encoder, în urma cărora eficiența de compresie a presetărilor M9-M13 a crescut cu 1-4%, iar consumul de memorie al presetării M5 a scăzut cu 20-35% în modul LP 8 și cu 1-5% în alte moduri. Consumul de memorie în alte presetări a scăzut cu 1-5%.
- Optimizarea compromisurilor calitate/viteză a fost realizată pentru presetări care stabilesc un nivel ridicat de calitate. Presetarea calității de referință MR a fost accelerată cu 100%.
- Optimizări specifice ARM au fost adăugate la funcțiile numai C.
În plus, putem observa lansarea proiectului dav1d 1.4.1, în cadrul căruia comunitățile VideoLAN și FFmpeg dezvoltă o bibliotecă cu implementarea unui decodor alternativ gratuit pentru formatul de codificare video AV1. Biblioteca dav1d acceptă toate caracteristicile AV1, inclusiv tipurile avansate de subeșantionare și toți parametrii de control al adâncimii culorii menționați în specificație (8, 10 și 12 biți). Caracteristica cheie a lui dav1d este concentrarea pe atingerea celei mai înalte performanțe de decodare posibile și pe asigurarea unei lucrări de înaltă calitate în modul multi-threaded. Codul proiectului este scris în C (C99) cu inserții de asamblare (NASM/GAS) și este distribuit sub licență BSD. A fost implementat suport pentru arhitecturile x86, x86_64, ARMv7 și ARMv8 și pentru sistemele de operare FreeBSD, Linux, Windows, macOS, Android și iOS.
Versiunea dav1d 1.4 se remarcă prin sprijinirea noilor arhitecturi Loongarch și RISC-V, precum și prin introducerea de optimizări suplimentare bazate pe instrucțiunile AVX-512, accelerarea funcționării filtrelor 6tap pe sistemele ARM, creșterea eficienței muncii multi-threaded și reducerea dimensiunea datelor binare pe sistemele ARM64, ARM32 și RISC V. S-a remediat vulnerabilitatea CVE-2024-1580, care a cauzat o scriere în afara limitelor din cauza unui depășire de numere întregi la procesarea unor dimensiuni foarte mari ale cadrelor.
Sursa: opennet.ru
