O lanzamento da biblioteca SVT-AV1 2.0 (Scalable Video Technology AV1) publicouse con implementacións do codificador e decodificador do formato de codificación de vídeo AV1, para a aceleración do cal se utilizan os medios de computación paralela de hardware presentes nas CPU Intel modernas. O proxecto foi creado por Intel en colaboración con Netflix co obxectivo de acadar un nivel de rendemento axeitado para a transcodificación de vídeo sobre a marcha e o seu uso en servizos de vídeo baixo demanda (VOD). Actualmente, o desenvolvemento está a levarse a cabo baixo os auspicios da Open Media Alliance (AOMedia), que supervisa o desenvolvemento do formato de codificación de vídeo AV1. Anteriormente, o proxecto desenvolveuse no marco do proxecto OpenVisualCloud, que tamén desenvolve os codificadores SVT-HEVC e SVT-VP9. O código distribúese baixo a licenza BSD.
SVT-AV1 pódese montar para sistemas baseados en calquera arquitectura para os que exista un compilador que admita o estándar C99, pero o mellor rendemento conséguese en sistemas x86_64, para os que se utilizan optimizacións de montaxe baseadas en instrucións SIMD (é desexable ter soporte AVX2 na CPU, pero como mínimo é suficiente e SS2). O consumo de memoria depende do número de núcleos de procesador utilizados durante a codificación, regulado pola opción "-lp". Debido á complexidade dos algoritmos utilizados en AV1, a codificación deste formato require moito máis recursos que outros formatos, o que non permite o uso do codificador AV1 estándar para a transcodificación en tempo real. Por exemplo, o codificador de stock do proxecto AV1 require 5721, 5869 e 658 veces máis cálculos en comparación cos codificadores x264 ("perfil principal"), x264 ("perfil alto") e libvpx-vp9.
Entre os cambios na nova versión de SVT-AV1:
- Fíxose unha transición a unha nova numeración de versión, segundo a cal o primeiro díxito da versión cambiará con cada cambio de API/ABI.
- Realizáronse cambios na API relacionados coa transición á indicación de fin de emisión (EOS - End Of Stream) no último fotograma en lugar de utilizar un fotograma baleiro, o que eliminou o atraso na espera dun fotograma adicional. O cambio da API xa se reflicte na base de código FFmpeg.
- Eliminouse o modo de taxa de bits variable de tres pasos (VBR de tres pasos) e agora substitúese por un mecanismo de VBR de varias pasadas. O modo multipaso VBR reduciuse a dous pases para garantir a integración con FFmpeg.
- Engadíronse optimizacións ao codificador, como resultado do cal a eficiencia de compresión dos presets M9-M13 aumentou nun 1-4% e o consumo de memoria do preset M5 diminuíu nun 20-35% no modo LP 8 e nun 1-5% noutros modos. O consumo de memoria noutros presets diminuíu nun 1-5%.
- Realizouse a optimización dos compromisos calidade/velocidade para os presets que establecen un alto nivel de calidade. A calidade de referencia preestablecida MR acelerouse nun 100 %.
- Engadíronse optimizacións específicas de ARM ás funcións só C.
Ademais, podemos destacar o lanzamento do proxecto dav1d 1.4.1, dentro do cal as comunidades VideoLAN e FFmpeg están a desenvolver unha biblioteca coa implementación dun decodificador libre alternativo para o formato de codificación de vídeo AV1. A biblioteca dav1d admite todas as funcións de AV1, incluíndo tipos avanzados de submostraxe e todos os parámetros de control de profundidade de cor indicados na especificación (8, 10 e 12 bits). A característica fundamental de dav1d é o seu foco en lograr o maior rendemento de decodificación posible e garantir un traballo de alta calidade en modo multiproceso. O código do proxecto está escrito en C (C99) con insercións de montaxe (NASM/GAS) e distribúese baixo a licenza BSD. Implementouse soporte para arquitecturas x86, x86_64, ARMv7 e ARMv8 e sistemas operativos FreeBSD, Linux, Windows, macOS, Android e iOS.
A versión dav1d 1.4 destaca por admitir as novas arquitecturas Loongarch e RISC-V, ademais de introducir optimizacións adicionais baseadas en instrucións AVX-512, acelerar o funcionamento dos filtros 6tap nos sistemas ARM, aumentar a eficiencia do traballo multiproceso e reducir o tamaño dos datos binarios nos sistemas ARM64, ARM32 e RISC V. Corrixiuse a vulnerabilidade CVE-2024-1580, que provocaba unha escritura fóra dos límites debido a un desbordamento de números enteiros ao procesar tamaños de fotograma moi grandes.
Fonte: opennet.ru
