Lanzamiento del codificador SVT-AV1 2.0 y del decodificador dav1d 1.4 para formato de vídeo AV1

Se publicó el lanzamiento de la biblioteca SVT-AV1 2.0 (Scalable Video Technology AV1) con implementaciones del codificador y decodificador del formato de codificación de video AV1, para cuya aceleración se utilizan los medios de computación paralela de hardware presentes en las CPU Intel modernas. El proyecto fue creado por Intel en asociación con Netflix con el objetivo de lograr un nivel de rendimiento adecuado para la transcodificación de vídeo sobre la marcha y su uso en servicios de vídeo bajo demanda (VOD). Actualmente, el desarrollo se lleva a cabo bajo los auspicios de Open Media Alliance (AOMedia), que supervisa el desarrollo del formato de codificación de vídeo AV1. Anteriormente, el proyecto se desarrolló en el marco del proyecto OpenVisualCloud, que también desarrolla los codificadores SVT-HEVC y SVT-VP9. El código se distribuye bajo la licencia BSD.

SVT-AV1 se puede ensamblar para sistemas basados ​​​​en cualquier arquitectura para la cual exista un compilador que admita el estándar C99, pero el mejor rendimiento se logra en sistemas x86_64, para los cuales se utilizan optimizaciones de ensamblaje basadas en instrucciones SIMD (es deseable tener Soporte AVX2 en la CPU, pero como mínimo es suficiente y SS2). El consumo de memoria depende de la cantidad de núcleos de procesador utilizados durante la codificación, regulado por la opción "-lp". Debido a la complejidad de los algoritmos utilizados en AV1, codificar este formato requiere muchos más recursos que otros formatos, lo que no permite el uso del codificador AV1 estándar para la transcodificación en tiempo real. Por ejemplo, el codificador estándar del proyecto AV1 requiere 5721, 5869 y 658 veces más cálculos en comparación con los codificadores x264 (perfil "principal"), x264 (perfil "alto") y libvpx-vp9.

Entre los cambios en la nueva versión de SVT-AV1:

  • Se ha realizado una transición a una nueva numeración de versión, según la cual el primer dígito de la versión cambiará con cada cambio de API/ABI.
  • Se realizaron cambios en la API relacionados con la transición a la indicación de fin de transmisión (EOS - End Of Stream) en el último cuadro en lugar de usar un cuadro vacío, lo que eliminó la demora en la espera de un cuadro adicional. El cambio de API ya se refleja en el código base de FFmpeg.
  • El modo de velocidad de bits variable de tres pasos (VBR de 3 pasos) se eliminó y ahora se reemplazó por un mecanismo VBR de múltiples pasos. El modo de múltiples pasadas de VBR se ha reducido a dos pasadas para garantizar la integración con FFmpeg.
  • Se agregaron optimizaciones al codificador, como resultado de lo cual la eficiencia de compresión de los ajustes preestablecidos M9-M13 aumentó entre un 1 y un 4%, y el consumo de memoria del ajuste preestablecido M5 disminuyó entre un 20 y un 35% en el modo LP 8 y entre un 1% y un 5% en otros modos. El consumo de memoria en otros ajustes preestablecidos disminuyó entre un 1 y un 5%.
  • Se ha realizado una optimización de los compromisos calidad/velocidad para ajustes preestablecidos que establecen un alto nivel de calidad. El ajuste preestablecido de RM de calidad de referencia se ha acelerado en un 100 %.
  • Se han agregado optimizaciones específicas de ARM a las funciones exclusivas de C.

Además, podemos destacar el lanzamiento del proyecto dav1d 1.4.1, dentro del cual las comunidades VideoLAN y FFmpeg están desarrollando una biblioteca con la implementación de un decodificador gratuito alternativo para el formato de codificación de video AV1. La biblioteca dav1d admite todas las funciones de AV1, incluidos los tipos avanzados de submuestreo y todos los parámetros de control de profundidad de color indicados en la especificación (8, 10 y 12 bits). La característica clave de dav1d es su enfoque en lograr el mayor rendimiento de decodificación posible y garantizar un trabajo de alta calidad en modo multiproceso. El código del proyecto está escrito en C (C99) con inserciones de ensamblaje (NASM/GAS) y se distribuye bajo la licencia BSD. Se ha implementado soporte para arquitecturas x86, x86_64, ARMv7 y ARMv8, y sistemas operativos FreeBSD, Linux, Windows, macOS, Android e iOS.

La versión dav1d 1.4 se destaca por admitir las nuevas arquitecturas Loongarch y RISC-V, además de introducir optimizaciones adicionales basadas en instrucciones AVX-512, acelerar el funcionamiento de los filtros de 6 tap en sistemas ARM, aumentar la eficiencia del trabajo multiproceso y reducir el tamaño de datos binarios en ARM64, ARM32 y RISC-systems V. Se corrigió la vulnerabilidad CVE-2024-1580, que causaba una escritura fuera de límites debido a un desbordamiento de enteros al procesar tamaños de fotogramas muy grandes.

Fuente: opennet.ru

Añadir un comentario