WebAssembly facilitará la colaboración en los códecs de vídeo de nueva generación

15 agosto, 2017 20:08 por

Esta es una traducción del artículo original publicado en el blog de Mozilla Hacks.

Michael Bebenita, ingeniero en investigación en Mozilla, publicó recientemente un artículo fascinante sobre el desarrollo de AV1, un códec de video de nueva generación. Si estás interesado en cómo se crean nuevos formatos de medios, te recomiendo mucho que leas el artículo completo.

Lo que llamó mi atención fue la discusión sobre portar el analizador de bitstream AV1 a la Web:

La entrada del analizador es normalmente pequeña (un bitstream codificado), pero la salida es muy grande. […] La solución ideal es ejecutar el analizador directamente en el navegador y por lo tanto eliminar la necesidad de descargar la salida del analizador.

¿Pero cómo hacer esto cuando el códec está escrito en C? Una opción es re-implementarlo manualmente en JavaScript y esperar que puedas continuar con los cambios de la implementación de referencia. La otra y mejor opción es reutilizar el de C directamente y compilarlo para la Web. Eso es exactamente lo que el equipo de AV1 está haciendo, con la ayuda de Emscripten.

Emscripten compila C/C++ arbitrario a JavaScript, lo que hace posible para el equipo de AV1 compilar automáticamente cada revisión de su códec a JavaScript y publicarlo para la Web. En este punto, comparar dos revisiones del códec es tan simple como compartir un enlace.

El flujo de trabajo es suficientemente rápido, pero no es tan rápido como podría serlo. Como JavaScript no soporta números enteros de 64 bits, muchas de las computaciones de AV1 tienen que padecer conversiones numéricas costosas. Especialmente, emular matemáticas de 64 bit se estima que añade hasta un 20% de penalización en el rendimiento de AV1, y ya hemos visto penalizaciones de rendimiento de hasta el 600% en otros proyectos que son directamente atribuibles a esta emulación.

Ahí es donde WebAssembly entra en juego. WebAssembly es un nuevo formato de bajo nivel para programas en la Web. Es un estándar abierto desarrollado por Mozilla, Microsoft, Google, y Apple, por lo que funcionará eventualmente en todos los navegadores. Babenita explica, “WebAssembly tiene soporte para matemáticas de 64 bit, y una vez que esté listo [el analizador bitstream AV1] cambiará a WebAssembly.”

Afortunadamente, Emscripten ya tiene soporte experimental para la compilación a WebAssemby, por lo que el flujo de trabajo de AV1 continuará siendo igual: desarrollar una única base de código en C y utilizar Emscripten para compilarlo a la Web para hacer pruebas. De esta manera, WebAssembly jugará un rol integral en el desarrollo de códecs de vídeo de nueva generación.

Aún más importante, ese flujo de trabajo representa un cambio fundamental en el desarrollo Web: el muro entre lo nativo y la Web está siendo derrumbado, y los desarrolladores serán capaces de utilizar de igual manera las mismas librerías en ambos contextos. Esto marca el final de los tediosos cambios manuales de proyectos a JavaScript y abre la puerta a una mejora de rendimiento en la Web.

The following two tabs change content below.

Compartir artículo:

cc-by-sa