A fost publicată versiunea 4.3.0 a bibliotecii SVT-AV1 (Scalable Video Technology AV1) cu implementări ale encoder-ului și decoder-ului pentru formatul de codificare video AV1, care utilizează extensiile hardware de paralelizare a calculelor disponibile în procesoarele x86_64 și ARM pentru a accelera procesul. Proiectul a fost creat de compania Intel în parteneriat cu Netflix, cu scopul de a atinge un nivel de performanță adecvat pentru reîncodarea video în timp real și utilizarea în servicii de livrare video la cerere (VOD). În prezent, dezvoltarea se desfășoară sub egida alianței Open Media (AOMedia), care coordonează evoluția formatului de codificare video AV1. Anterior, proiectul a fost dezvoltat î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 pe baza oricărei arhitecturi pentru care există un compilator care suportă standardul C99, dar cea mai bună performanță se obține pe sistemele x86_64, unde sunt aplicate optimizări de asamblare bazate pe instrucțiuni SIMD (preferabil cu suport pentru AVX2 în CPU, dar ca minim, SSE2 este suficient). Consumul de memorie depinde de numărul de nuclee de procesor implicate în codare, reglate de opțiunea „—lp”. Din cauza complexității algoritmilor utilizați în AV1, codarea acestui format necesită resurse considerabil mai mari decât alte formate.
Printre modificările din noua versiune SVT-AV1:
- A fost efectuată optimizarea compromisurilor calitate/viteză pentru toate presetările, permițând reducerea încărcăturii pe CPU cu 5-8% fără a afecta nivelul de calitate, precum și scurtarea timpului de codare cu 10-11% în modul multi-thread. S-au accelerat operațiile de excludere a modurilor de codare ineficiente (MD - Decizia Modului), calculul vectorilor de mișcare (MV - Vector de Mișcare) și parametrii filtrelor în timpul codării, calcularea dimensiunii coeficientului de frecvență, căutarea deplasamentelor sub-pixel, copierea blocurilor și eliminarea detaliilor inutile prin algoritmul RDOQ (Quantizarea Optimized Rate-Distortion). În modul multi-thread, pentru economisirea resurselor, algoritmul de determinare a redării conținutului ecranului este acum aplicat doar pe cadrele I.
- A fost adăugat un flag experimental „—fast-decode 3” pentru accelerarea decodării imaginilor statice.
- A fost adăugat flagul „—fgs-table”, care activează suportul pentru tabelele de granulație (film grain), și API-ul FILM_GRAIN_EVENT pentru a specifica parametrii granulației în legătură cu cadrele.
- Îmbunătățită viteza de codare fără pierderi.
- În modul de codare cu latență scăzută, s-a implementat procesarea paralelă a blocurilor (tile).
- A fost adăugată opțiunea „max_allowed_consecutive_frames_skips” pentru configurarea săriturilor de cadre în modul de menținere a ratei bitilor constante (CBR).
- A fost adăugat parametrul „max_hierarchical_levels” pentru a gestiona pool-ul de buffer utilizat la modificarea dimensiunii grupurilor de cadre intermediare (mini-GOP - Group of Pictures).
- A fost adăugată opțiunea de compilare „—mobile-build” (în CMake - MOBILE_BUILD) pentru generarea unei biblioteci de 8 biți pentru RTC, VOD și AVIF. Au fost adăugate opțiuni CONFIG_ENABLE_* pentru dezactivarea compilării instrumentelor neutilizate.
- Pentru sistemele x86, au fost implementate procesele CDEF pe 8 biți bazate pe instrucțiuni AVX2 și SSE4.1, precum și transformările directe pe 16 biți bazate pe instrucțiuni AVX2 și AVX-512. A fost adăugat un cod optimizat cu instrucțiuni SSE4.1 pentru prezicerea intercadrelor, gestionarea paletelor și transformări. Au fost optimizate procesele pentru cuantificare, copierea blocurilor, calculul distorsiunilor și estimarea diferențelor sub-pixel.
- Pentru sistemele ARM, s-au adăugat variante de procese accelerate prin instrucțiunile de procesor Neon.
Sursa: opennet.ro
