Pubblicato il rilascio della libreria SVT-AV1 2.0 (Scalable Video Technology AV1) con implementazioni del codificatore e decodificatore del formato di codifica video AV1. Il progetto è stato creato da Intel in collaborazione con Netflix per raggiungere un livello di prestazioni adatto alla transcodifica video al volo e all'utilizzo nei servizi video-on-demand (VOD). Attualmente, lo sviluppo viene effettuato sotto gli auspici della Open Media Alliance (AOMedia), che sovrintende allo sviluppo del formato di codifica video AV1. In precedenza, il progetto era stato sviluppato nell'ambito del progetto OpenVisualCloud, che sviluppa anche i codificatori SVT-HEVC e SVT-VP9. Il codice è distribuito con licenza BSD.
SVT-AV1 può essere assemblato per sistemi basati su qualsiasi architettura per la quale esiste un compilatore che supporti lo standard C99, ma le migliori prestazioni si ottengono su sistemi x86_64, per i quali vengono utilizzate ottimizzazioni di assemblaggio basate su istruzioni SIMD (è auspicabile avere Supporto AVX2 nella CPU, ma come minimo è sufficiente e SS2). Il consumo di memoria dipende dal numero di core del processore utilizzati durante la codifica, regolato dall'opzione “-lp”. A causa della complessità degli algoritmi utilizzati in AV1, la codifica di questo formato richiede molte più risorse rispetto ad altri formati, il che non consente l'uso del codificatore AV1 standard per la transcodifica in tempo reale. Ad esempio, l'encoder standard del progetto AV1 richiede 5721, 5869 e 658 volte più calcoli rispetto agli encoder x264 (profilo "principale"), x264 (profilo "alto") e libvpx-vp9.
Tra le novità della nuova release SVT-AV1:
- È stata effettuata una transizione verso una nuova numerazione della versione, in base alla quale la prima cifra nella versione cambierà ad ogni modifica API/ABI.
- Sono state apportate modifiche all'API relative alla transizione all'indicazione della fine dello streaming (EOS - End Of Stream) nell'ultimo frame invece dell'utilizzo di un frame vuoto, eliminando così il ritardo nell'attesa di un frame aggiuntivo. La modifica dell'API si riflette già nel codice base di FFmpeg.
- La modalità bitrate variabile a tre passaggi (VBR a 3 passaggi) è stata rimossa ed è ora sostituita da un meccanismo VBR a passaggi multipli. La modalità multi-pass VBR è stata ridotta a due passaggi per garantire l'integrazione con FFmpeg.
- Sono state aggiunte ottimizzazioni all'encoder, in conseguenza delle quali l'efficienza di compressione dei preset M9-M13 è aumentata dell'1-4% e il consumo di memoria del preset M5 è diminuito del 20-35% in modalità LP 8 e dell'1-5% in altre modalità. Il consumo di memoria in altri preset è diminuito dell'1-5%.
- L'ottimizzazione dei compromessi qualità/velocità è stata effettuata per le preimpostazioni che impostano un livello di qualità elevato. La preimpostazione MR della qualità di riferimento è stata accelerata del 100%.
- Sono state aggiunte ottimizzazioni specifiche per ARM alle funzioni solo C.
Da segnalare inoltre il rilascio del progetto dav1d 1.4.1, all'interno del quale le comunità VideoLAN e FFmpeg stanno sviluppando una libreria con l'implementazione di un decoder alternativo gratuito per il formato di codifica video AV1. La libreria dav1d supporta tutte le funzionalità di AV1, inclusi tipi avanzati di sottocampionamento e tutti i parametri di controllo della profondità del colore indicati nelle specifiche (8, 10 e 12 bit). La caratteristica chiave di dav1d è la sua attenzione al raggiungimento delle massime prestazioni di decodifica possibili e alla garanzia di un lavoro di alta qualità in modalità multi-thread. Il codice del progetto è scritto in C (C99) con inserti in assembly (NASM/GAS) ed è distribuito sotto licenza BSD. È stato implementato il supporto per le architetture x86, x86_64, ARMv7 e ARMv8 e per i sistemi operativi FreeBSD, Linux, Windows, macOS, Android e iOS.
La versione dav1d 1.4 si distingue per il supporto delle nuove architetture Loongarch e RISC-V, oltre all'introduzione di ulteriori ottimizzazioni basate sulle istruzioni AVX-512, accelerando il funzionamento dei filtri 6tap sui sistemi ARM, aumentando l'efficienza del lavoro multi-thread e riducendo il dimensione dei dati binari sui sistemi ARM64, ARM32 e RISC V. Risolta la vulnerabilità CVE-2024-1580, che causava una scrittura fuori limite a causa di un overflow di numeri interi durante l'elaborazione di frame di dimensioni molto grandi.
Fonte: opennet.ru
