TL;DR
- AV1 es un códec de video que está ganando terreno entre los servicios de transmisión en línea porque está libre de regalías y ofrece buena calidad de video sin necesidad de mucho ancho de banda.
- Sin embargo, muchos dispositivos carecen de aceleradores de hardware para reproducir vídeos codificados en AV1, lo que significa que necesitan utilizar un decodificador de software que se ejecute en la CPU.
- Android actualmente viene con el decodificador de software libgav1 AV1 de Google, pero una actualización futura lo cambiará al libdav1d de VideoLAN, que ofrece un rendimiento significativamente mejor.
Hace exactamente siete años, YouTube compartió una estadística alucinante con el mundo: la gente está viendo un mil millones horas de contenido en la plataforma Todos los días. El panorama de los medios digitales no ha hecho más que crecer desde entonces gracias al auge de TikTok y la actual guerra de streaming online entre Netflix y las grandes empresas de medios. Con la gran cantidad de contenido de vídeo que estos servicios en línea tienen que ofrecer a diario, es imperativo que las empresas utilicen la mejor tecnología de compresión disponible para ahorrar ancho de banda sin comprometer significativamente la calidad. Es por eso que el códec AV1 de Alliance for Open Media ha estado ganando terreno entre los servicios de transmisión en línea.
AV1 es un códec de vídeo que ofrece una eficiencia de compresión superior en comparación con códecs más antiguos como h.264, h265 o VP9, lo que significa que los videos codificados en AV1 pueden ofrecer una calidad de video similar a velocidades de bits mucho más bajas. Esto reduce los requisitos de ancho de banda tanto para el servicio de transmisión como para el usuario final sin comprometer la calidad. Sin embargo, un mejor rendimiento no es la única razón por la que a la industria del streaming le encanta AV1. AV1 también está libre de regalías, lo que lo convierte en una opción atractiva para los servicios de transmisión que desean reducir costos.
Sin embargo, los servicios de streaming han tardado en adoptar AV1 para su contenido. Si bien servicios como YouTube, Netflix, Instagram y Vimeo ya codifican gran parte de su contenido en AV1, todavía ofrecen este contenido en otros códecs a la gran mayoría de dispositivos de consumo. La razón es que muchos dispositivos de consumo todavía carecen de soporte de hardware para reproducir vídeos AV1, lo que significa que tendrían que utilizar un decodificador de software ejecutándose en la CPU para reproducir un vídeo AV1.
AV1 ofrece una eficiencia de compresión superior en comparación con códecs más antiguos como h.264, h265 o VP9.
Los decodificadores de vídeo son esencialmente algoritmos complejos que se pueden ejecutar en la CPU (acelerado por software) o en un bloque de hardware dedicado para el procesamiento multimedia (acelerado por hardware). Dependiendo de la calidad del vídeo y del códec que se utilice, decodificar un archivo de vídeo puede requerir un gran esfuerzo computacional. Idealmente, los dispositivos utilizarían un decodificador acelerado por hardware para reproducir contenido AV1, lo que garantizaría una reproducción más fluida y un menor consumo de energía.
Desafortunadamente, la mayoría de los dispositivos móviles carecen de un decodificador AV1 acelerado por hardware, lo que significa que tendrían que procesar contenido AV1 en la CPU utilizando un decodificador acelerado por software. Esto es especialmente problemático considerando que la duración de la batería es una alta prioridad para la mayoría de los usuarios. Finalmente estamos en un punto en el que todos los principales proveedores de silicio móvil, incluido Qualcomm a partir del Snapdragon 8 Gen 2 y Apple con el A17 Pro, están enviando productos con un decodificador AV1 acelerado por hardware. Dado que la mayoría de las personas no actualizan sus teléfonos cada año o no compran hardware de última generación, pasarán un par de años antes de que la mayoría de los dispositivos móviles admitan la decodificación AV1 acelerada por hardware.
Mishaal Rahman / Autoridad de Android
Izquierda: Lista de decodificadores AV1 disponibles en un Samsung Galaxy S24 Ultra.
Medio: Detalles del decodificador libgav1 AV1 acelerado por software proporcionado por el sistema.
Derecha: Detalles del decodificador AV1 acelerado por hardware proporcionado por Qualcomm.
Mientras tanto, Google se está preparando para actualizar android para que los dispositivos existentes puedan reproducir adecuadamente el contenido AV1 incluso si carecen de un decodificador acelerado por hardware. Desde el lanzamiento de Android 10, AOSP ha incluido el decodificador libgav1, un decodificador AV1 de código abierto desarrollado por Google. Sin embargo, libgav1 no es el único decodificador AV1 que existe, ya que también está el libaom de Alliance for Open Media (el decodificador de referencia), así como el libdav1d de VideoLAN.
Al igual que libgav1, libdav1d se ejecuta en la CPU, pero es significativamente mejor decodificando contenido AV1 que libgav1. Esto se puede atribuir al hecho de que grandes partes de libdav1d se escribieron en ensamblaje para chips ARMv8, lo que reduce una gran sobrecarga de rendimiento. De hecho, libdav1d es tan eficiente desde el punto de vista computacional que brinda incluso al hardware de gama baja la capacidad de reproducir sin problemas contenido AV1 de alta calidad sin consumir mucha energía de la CPU.
A modo de comparación, aquí hay un gráfico que compara el rendimiento entre los decodificadores libgav1 de Google y libdav1d AV1 de VideoLAN. El dispositivo que probé fue un Google Pixel 3 XL con tecnología Snapdragon 845 de Qualcomm, que carece de un decodificador AV1 acelerado por hardware. En esta prueba, reproduje dos videos codificados en AV1: un clip de 6:30 de Artemis que lanzo en 4K60 (8 bits, 1165 kb/s) y un clip de 9:11 de Netflix llamado “Sparks” a 1080p25 ( 10 bits, 915 kbps).
Mishaal Rahman / Autoridad de Android
Como puede ver en el gráfico, libdav1d superó dramáticamente a libgav1 en este experimento. Mi Pixel 3 XL promedió más de 50 fps al reproducir el clip de Artemis 1 usando libdav1d como decodificador. En comparación, el dispositivo promedió menos de 10 fps cuando usó libgav1. De manera similar, mi Pixel promedió 25 fps al reproducir el clip Sparks con libdav1d frente a menos de 10 fps con libgav1.
Si te preguntas cómo pude probar libdav1d en mi Pixel 3 XL, es porque usé VLC Media Player, que incluye libdav1d. La mayoría de las aplicaciones de reproductores multimedia en Android utilizan la biblioteca ExoPlayer de Google, que utiliza de forma predeterminada el decodificador libgav1 proporcionado por el sistema para contenido AV1 cuando no hay presente un decodificador AV1 acelerado por hardware. Si Google cambiara el decodificador AV1 proporcionado por el sistema de libgav1 a libdav1d, las aplicaciones de reproductor multimedia que utilizan ExoPlayer podrían beneficiarse significativamente de sus mejoras de rendimiento. Eso es exactamente lo que Google se ha estado preparando para hacer desde finales del año pasado.
Mi dispositivo de prueba promedió 25 fps al reproducir el clip Sparks con libdav1d frente a menos de 10 fps con libgav1.
Desde principios de noviembre, el código fuente de AOSP incluye el decodificador libdav1d. Esto se debe a que Google necesitaba experimentar con el uso de libdav1d en lugar de libgav1 como decodificador AV1 proporcionado por el sistema de Android. Según dos fuentes que prefieren permanecer en el anonimato, Google informó hace unos meses a sus socios de su intención de reemplace libgav1 con libdav1d en dispositivos existentes antes de marzo de 2024 a través de una próxima actualización del sistema Google Play. Esto es posible porque los códecs multimedia son parte de un módulo Project Mainline en Android.
Si bien una de mis fuentes confirmó que Google todavía está probando este cambio, lo que no está claro es si se implementará en todos los dispositivos que admitan el módulo principal de Media Codecs (Android 10 y superior) o si se implementará solo en dispositivos que ejecutan Androide 14. Es posible que Google limite este cambio solo a dispositivos que ejecutan Android 14, ya que Android 14 es la primera versión en la que Google realmente lo hizo. obligatorio para que los OEM incluyan un decodificador AV1. Esto puede sonar extraño ya que AOSP ha incluido libgav1 desde Android 10, pero parece que Google en realidad no ha exigido a los OEM que lo incluyan en sus compilaciones hasta Android 14.
En cualquier caso, estaremos atentos a la próxima actualización del sistema Google Play de marzo de 2024 para ver si realmente incluye el decodificador libdav1d AV1. Si es así, los usuarios de hardware de gama baja pueden ver una mejora sustancial en el rendimiento de reproducción de vídeo AV1. Sin embargo, queda por ver cuánto tiempo les tomará a los servicios de transmisión transmitir contenido de video AV1 a estos dispositivos.