È stata pubblicata la versione 2.0 della libreria SVT-AV1 (Scalable Video Technology AV1) con implementazioni del codificatore e del decodificatore per il formato di codifica video AV1, per il quale vengono utilizzati i mezzi di parallelizzazione hardware presenti nei moderni CPU Intel. Il progetto è stato creato da Intel in collaborazione con Netflix per raggiungere un livello di prestazioni adatto per il ricodifica video in tempo reale e l'applicazione nei servizi di video on demand (VOD). Attualmente, lo sviluppo è guidato dall'alleanza Open Media (AOMedia), che supervisiona lo 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 compilato per sistemi basati su qualsiasi architettura per cui è disponibile un compilatore che supporta lo standard C99, ma le migliori prestazioni si ottengono sui sistemi x86_64, per i quali si utilizzano ottimizzazioni in assembly basate su istruzioni SIMD (è preferibile avere il supporto AVX2 nella CPU, ma come minimo è sufficiente anche SS2). Il consumo di memoria dipende dal numero di core della CPU utilizzati per la codifica, regolati dall'opzione '—lp'. A causa della complessità degli algoritmi utilizzati in AV1, per codificare questo formato sono necessarie risorse significativamente maggiori rispetto ad altri formati, rendendo impossibile l'uso del codificatore AV1 standard per la ricodifica in tempo reale. Ad esempio, il codificatore standard del progetto AV1 richiede rispettivamente 5721, 5869 e 658 volte più calcoli rispetto ai codificatori x264 (profilo 'main'), x264 (profilo 'high') e libvpx-vp9.
Tra le novità della nuova versione di SVT-AV1:
- È stata effettuata una transizione a una nuova numerazione delle versioni, secondo la quale il primo numero nella versione cambierà ogni volta che l'API/ABI verrà modificata.
- Sono state apportate modifiche all'API relative alla transizione all'indicazione della fine del flusso (EOS - End Of Stream) nell'ultimo fotogramma invece di utilizzare un fotogramma vuoto, il che ha consentito di eliminare il ritardo nell'attesa di un fotogramma extra. La modifica dell'API è già riflessa nel codice sorgente di FFmpeg.
- È stata rimossa la modalità a tre passaggi per il bitrate variabile (3-pass VBR), e al suo posto viene ora utilizzato un meccanismo di VBR multi-pass. La modalità multi-pass VBR è ridotta a due passaggi per garantire l'integrazione con FFmpeg.
- Nel codificatore sono state aggiunte ottimizzazioni che hanno aumentato l'efficienza della compressione dei preset M9-M13 dal 1 al 4%, mentre il consumo di memoria nel preset M5 è stato ridotto del 20-35% in modalità LP 8 e dell'1-5% in altre modalità. Il consumo di memoria negli altri preset è diminuito dell'1-5%.
- È stata ottimizzata la compensazione tra qualità e velocità per i preset che offrono un alto livello di qualità. Il preset MR, che fornisce una qualità di riferimento, è stato accelerato del 100%.
- Sono state aggiunte ottimizzazioni specifiche per l'architettura ARM alle funzioni scritte esclusivamente in linguaggio C.
Inoltre, si segnala il rilascio del progetto dav1d 1.4.1, nell'ambito del quale le comunità VideoLAN e FFmpeg sviluppano una libreria con un'implementazione alternativa e open source del decodificatore per il formato video di codifica AV1. La libreria dav1d supporta tutte le funzionalità di AV1, inclusi vari tipi sofisticati di sottocampionamento e tutti i parametri di gestione della profondità di colore (8, 10 e 12 bit) dichiarati nella specifica. La caratteristica chiave di dav1d è l'orientamento al raggiungimento della massima prestazione di decodifica possibile e alla garanzia di un funzionamento di qualità in modalità multithreading. Il codice del progetto è scritto in C (C99) con inserzioni in assembly (NASM/GAS) ed è distribuito con licenza BSD. È supportato il funzionamento su architetture x86, x86_64, ARMv7 e ARMv8 e su sistemi operativi FreeBSD, Linux, Windows, macOS, Android e iOS.
La versione dav1d 1.4 è notevole per il supporto di nuove architetture Loongarch e RISC-V, oltre all'implementazione di ulteriori ottimizzazioni basate su istruzioni AVX-512, all'accelerazione del funzionamento dei filtri 6tap sui sistemi ARM e all'aumento dell'efficienza del funzionamento multithread e alla riduzione della dimensione dei dati binari sui sistemi ARM64, ARM32 e RISC-V. È stata rimossa la vulnerabilità CVE-2024-1580, che portava a una scrittura in un'area al di fuori dei limiti del buffer a causa di un overflow intero durante l'elaborazione di fotogrammi di dimensioni molto elevate.
Fonte: opennet.ru
