Rav1e 0.3 llega con mayor velocidad de codificación y más
Hace pocos días fue liberada la nueva versión de Rav1e 0.3, el cual es un codificador de AV1 escrito en Rust y que se posiciona como uno de alto rendimiento. Rav1e está diseñado para cubrir todos los casos de uso, aunque en su forma actual es más adecuado para los casos en que libaom.
Es compatible con todas las características principales AV1, incluyendo vnutrenne y cuadros codificados externamente (intra y inter-frames) superbloques 64×64, color submuestreo 4:2:0, 4:2:2 y 4:4:4, 8, codificación de profundidad de color de 10 y 12 bits, optimización de distorsión RDO (optimización de distorsión de velocidad), varios modos para predecir cambios entre cuadros y detectar transformaciones, controlar la velocidad de flujo y detectar el truncamiento de la escena.
El formato AV1 está notablemente por delante de H.264 y VP9 en capacidades de compresión, pero debido a la complejidad de los algoritmos que los implementan, requiere significativamente más tiempo para la codificación (en términos de velocidad de codificación, libaom está cientos de veces detrás de libvpx-vp9 y miles de veces detrás de x264).
El codificador rav1e proporciona 11 niveles de rendimiento, el más alto de los cuales permite velocidades cercanas a la codificación en tiempo real. El codificador está disponible tanto en forma de una utilidad de línea de comandos como en forma de biblioteca.
¿Que hay de nuevo Rav1e 0.3?
Con la liberación de esta nueva versión, una de las características que más se destacan es que el modo de codificación fue mejorado, con lo cual es mucho más rápido que sus versiones anteriores.
Ademas de que el tamaño de los binarios se ha reducido (en la plataforma x86_64 para Linux, la biblioteca ocupa aproximadamente 3 MB), con lo cual el trabajo realizado fue optimizado de una mejor manera.
Para la arquitectura x86_64, se implementan optimizaciones adicionales utilizando instrucciones SIMD y se amplía el uso de la autovectorización.
Otro cambio importante, es que se agregó el soporte de compilación para la plataforma wasm32-wasi (Interfaz del sistema WebAssembly), así como también la opción “-S” (–switch-frame-intervalo) para determinar el intervalo entre cuadros de conmutación.
De los demás cambios que se destacan de esta nueva versión de Rav1e 0.3:
- Se agregó un filtro multiproceso para eliminar los artefactos de bloqueo del video.
- Se trabajo para reducir en un aproximado de un 14% el tiempo de montaje.
- Se trabajo para reducir en 1/6 el número de operaciones de asignación de memoria.
- En RDO (optimización de la distorsión de velocidad), se mejora la lógica para suprimir las distorsiones intratrama.
- Algunas operaciones se han convertido de aritmética de coma flotante a cálculos enteros.
- 1-2% de calidad de codificación fue mejorada en el segundo nivel de velocidad.
- Se agregó un nuevo filtro para predecir la dirección del movimiento (Intra edge).
¿Cómo instalar rav1e en Ubuntu y derivados?
Para quienes estén interesados en poder instalar este codificador de AV1 en su sistema, deben saber que actualmente rav1e se encuentra disponible para ser compilado en Linux aun que para Windows se encuentra un exe disponible.
En este caso nos interesa poder instalarlo en Ubuntu y en sus derivados por lo que para poder hacer esto, deben contar con Rust instalado en su sistema.
Si no cuentas con ello, lo que debes hacer es abrir una terminal en tu sistema (lo puedes hacer con el atajo de teclas Ctrl + Alt + T) y en ella vas a teclear los siguientes comandos:
sudo apt install curl curl https://sh.rustup.rs -sSf | sh
Posteriormente solo tenemos que teclear la opción 1 y se instalara. Hecho esto vamos a configurar el entorno para el compilador de Rust con:
source $HOME/.cargo/env
Ahora para instalar rav1e, vamos a teclear:
sudo apt -y install cargo git perl nasm cmake clang pkg-config
Clonamos el código de rav1e:
git clone https://github.com/xiph/rav1e.git mv rav1e rav1e-git cd rav1e-git
Y comenzamos con la compilación:
git submodule update –init cmake aom_build/aom -DAOM_TARGET_CPU=x86_64 -DCONFIG_AV1_ENCODER=0 -DENABLE_TESTS=0 -DENABLE_DOCS=0 -DCONFIG_LOWBITDEPTH=1 make -j$(nproc) cargo build --release cp target/
Y listo con ello ya podrás trabajar con este codificador.
Si quieres conocer sobre el uso de rav1e puedes consultar el siguiente enlace.