jueves, junio 18, 2015

Magic Lantern: Hackers por la democratización del 7º arte

Como profesional del sector audiovisual e ingeniero de formación, no sé me ocurren calificativos para definir lo que han hecho desde Magic Lantern. Quizás sea uno de esos ejemplos que pueden tirar abajo la definición errónea de que un hacker es igual a un delincuente. Para todos aquellos que se dediquen de un modo u otro al mundo audiovisual, desde los especialistas en imagen hasta los de sonido, malo será que no conozcan este curioso firmware y su capacidades. Por resumirlo en pocas palabras, es un firmware alternativo al que puede ofrecerte Canon de serie en sus cámaras y que añade un montón de funciones, que de fábrica, eran impensables.

Figura 1: Magic Lantern, Hackers por la democratización del 7º arte

Todo esto nació en el año 2008, cuando Canon lanzó al mercado su modelo insignia EOS 5D Mark II, una cámara de fotos réflex, de ahora en adelante, DSLR, que permitía grabar en alta definición, entonces un grupo de hackers decidió no conformarse solo con aquello y decidieron ir más allá de lo que aparentemente daban de si aquellas cámaras. En un inició se añadieron solo funciones básicas, pero hoy en día han conseguido que hasta cámaras obsoletas puedan grabar vídeo en HD, las cuales de fábrica, ni podían soñar en tales hazañas.

El "No Hack" de Magic Lantern

Desde el sitio web de estos chicos, podemos leer lo siguiente:
​"​ Magic Lantern is not a "hack", or a modified firmware, it is an independent program that runs alongside Canon's own software. Each time you start your camera, Magic Lantern is loaded from your memory card. Our only modification was to enable the ability to run software from the memory card. ​"
Aunque ellos lo definen como un "no firmware", lo más probable es que lo definan así por cuestiones legales, realmente es una modificación del software interno de la cámara como un piano. Y para los que nunca se hayan aventurado a trabajar con un equipo ARM sin documentación, es una auténtica locura hacer ingeniería inversa en un sistema tan cerrado. Las instrucciones están codificadas y prácticamente es un ejercicio de fe el ir siguiendo una a una cada una de los pasos para ver cómo funciona el sistema, esta gente debe manejárselas de miedo con el lenguaje ensamblador desde luego.

Después de un duro proceso de ingeniería inversa, lograron de un modo u otro romper el cifrado de las cámaras Canon, y descubrir los registros más elementales del sistema para poder interactuar con ellos. Aquí es donde alguien toma la decisión, sabiendo y conociendo el funcionamiento del firmware de la cámara de no modificar el mismo, si no, añadirle una capa por encima que añadirá funciones o hará un upgrade al firmware de serie en todo caso.

Instalación de Magic Lantern

El proceso de instalación es de lo más sencillo, uno se debe descargar desde la web de Canon la última versión del firmware disponible para tu cámara en concreto y dejarlo en la carpeta raíz de tu tarjeta Compact Flash o SD a modo de repuesto, luego, desde Magic Lantern bajamos un binario que se sitúa justo al lado de otro firmware modificado, entonces aquí es cuando "engañamos" a la cámara con un proceso de lo más sencillo.

Figura 2: Instalación del software en el directorio raíz

Como podréis apreciar en el siguiente vídeo, el proceso de instalación es de lo más sencillo:
1 - Desde el menú de configuración vamos a instalar una update del firmware.
2 - La cámara se come el falso firmware sin rechistar.
3 - El sistema queda completamente hackeado desde este momento, al reiniciar la cámara se cargarán los módulos.
4 - Vemos un menú que nada tiene que ver con lo que vendría de fábrica.


Figura 3: Proceso de instalación de Magic Lantern

Mejoras con el uso de Magic Lantern

Para los menos entendidos en esto de la imagen y sonido quizás no vean nada de especial a esto, sin embargo, la existencia de Magic Lantern ha sido un reto de innovación para la multinacional Canon, que se ha visto obligada a ponerse las pilas y añadir funciones a sus modelos nuevos sí o sí. Entre las más destacadas, al tener un control absoluto de la cámara y trabajar directamente con las piezas sin limitaciones, con Magic Lantern podemos grabar sin compresión, regular la ganancia del sonido e incluso jugar al Arkanoid, entre muchas otras funciones.


Figura 4: Jugando al Arkanoid con Magic Lantern

Otra parte importante es que, en calidad de imagen, históricamente estas cámaras de usuario jamás valieron para un uso profesional, ya que entre sus limitaciones estaba la de grabar con una compresión elevada y reducir enormemente las muestras de color. El problema de esto es que a la hora de editar da muy poco margen ya que se pierde mucha información, por no hablar de que el codec H.264 trabaja en este caso con solo 8 bits de profundidad, por lo que se satura en las zonas altas y bajas de luminosidad con más facilidad, quedando en las fotos los típicos cielos blancos destellantes y sombras negras opacas, sin ningún tipo de textura.

Es por eso que una de sus funciones estrella con Magic Lantern es la de poder grabar directamente la información cruda que obtiene el sensor, en RAW, es decir, 14 bits sin empaquetar y sin reducir las muestras de color, lo que genera una matriz RGB a 16 bits (14 bits sin empaquetar en el caso de Canon o 12 bits + canal alfa). Estos chicos, usando una serie de artimañas, tales como obtener directamente la imagen "Live View" del sensor que se muestra en pantalla (esos valores RGB a 14 bits crudos), volcarlos en ficheros .mlv junto al sonido volcado en formato de pulso lineal .pcm. Obviamente se necesita mucho ancho de banda, de media unas 90 veces más que con los formatos comprimidos, pero no pasa nada ya que las cámaras emplean el estándar UDMA y son capaces de obtener grandes tasas de escritura y lectura. Esos ficheros, una vez en el ordenador, se procesan y se convierten a un formato de edición y, ¡Anda!, ¡tienes una cámara de cine por 1200€!

De entrada, aquí los hackers han conseguido aumentar la calidad del vídeo aproximadamente un 80% o 90% ya que hablando de posibilidades de edición, es como comparar un fichero .wav con un fichero .mp3 a 128 Kbits). No está mal el firmware este... me están haciendo ahorrar mucho dinero.

De serie Canon utiliza la compresión para ahorrar supuestamente en ancho de banda por lo que le ordena al procesador que comprima el vídeo con un valor de tasa constante CBR y calidad variable. Es decir, en función del movimiento de la escena, nivel de complejidad de la misma y detalles de la misma, necesitará un factor SNR (señal/ruido) menor o mayor para adecuarse a una tasa de bits determinada (en este caso establecida en unos 30-35 Mbits) y en cuanto al color, como cualquier sistema de vídeo, separa la crominancia (chroma o color) de la luminancia (lumia o luz) y se aprovecha de un supuesto problema del ojo humano para hacer lo siguiente:
- Las proporciones de la matriz 1920*1080 en blanco y negro o luma, son 1:1.
- Las proporciones de la matrices 1920*1080 en color (RGB) son 4:2:0. Es decir, cada 4 píxeles se deja 1 muestra de color, se ahorra en ancho de banda.
Figura 5: Formas de comprimir el color sin afectar a la definición

Es evidente que si reduces 4 veces las muestras de color, ganas en espacio y pierdes en calidad, así que este firmware hace olvidarnos de todos estos problemas y permitirnos grabar en 4:4:4 (RGB o YUV). Esto significa que nos acaban de regalar una cámara de cine por la cara estos señores, hackeando el firmware de Canon y consiguiendo que su cámara más barata se comporte igual que la más cara.

Figura 6: Mejorando los SNR de la cámara

Entre otras de sus mejoras están las de automatizar en enfoque con las crucetas de la cámara - función deshabilitada de serie, solo disponible en handycams mucho más caras -, han sido capaces de estudiar el funcionamiento del chip del sonido, mejorando su SNR de un modo bestial, de recalcular los ISOS nominales y forzados para mejorar la curva de regresión de rango dinámico llegando hasta a mejorar el funcionamiento del software de base de Canon, tal y como se ve en la Figura 6. Todo esto un grupo de hackers sin tener siquiera acceso a la documentación de la cámara.

Hasta han conseguido engañar a la salida HDMI de la cámara para que emita en formato RAW por ella, y de ahí, poder utilizar la cámara en estudios, ahorrándose cantidades ingentes de dinero, o pudiendo reutilizar tus lentes fotográficas.

Magic Lantern, o cómo sacar lo máximo de la tecnología

Viendo todo esto, la pregunta que uno se puede hacer es "¿Habrá perdido Canon ventas de cámaras caras o habrá vendido una barbaridad de cámaras baratas gracias a las habilidades de Magic Lantern?" El caso es que han cambiado la sociedad, si os fijáis, cada vez es más común ver periodistas, cineastas, rodajes de cortos de cine, etcétera, con este tipo de cámaras hackeadas. Por eso cada vez más y más gente que graba vídeos se compra una DSLR, gracias a estos chicos, que son capaces de llevar estas cámaras a límites más allá de los que originalmente se pensó. En muchos casos estas cámaras son mejores que competidoras de costes de 10.000€ en el mercado.

Para poder ver la diferencia entre usar o no Magic Lantern, nada mejor que ver un vídeo con el resultado que se puede obtener. Este es un trabajo hecho con una Canon 5D Mark III con Magic Lantern. Fijaos en la calidad del resultado.


Figura 7 : Un trabajo realizado con una Canon 5D Mark III con Magic Lantern

Como se puede ver, el equipo de hackers de Magic Lantern han conseguido poner al alcance de tu mano lo que sería tener un equipo de grabación apto para broadcasting por TV por 2000€... con un simple binario. ¡Unos magos por la democratización del 7º arte!

Un saludo,

Autor: Pedro Seoane Prado

4 comentarios:

Dragu dijo...

Me ha encantado el articulo.

Anónimo dijo...

Genial el articulo!, una nota: el segundo enlace esta malformado.

Anónimo dijo...

Conocía su existencia pero no me había dado por investigar ya que en mi caso lo más cercano es Nikon así que hoy he investigado un poco a ver si hay algo similar y resulta que desde hace por lo menos un par de años hay otro proyecto similar para la marca Nikon.
Si algun otro lector del blog llega aquí y le interese para el mundo Nikon como a mi que investigue la web https://nikonhacker.com al cual he llegado por una noticia en xataca:
http://www.xatakafoto.com/nikon/nikon-hacker-da-otro-paso-adelante-a-la-hora-de-hackear-el-sistema-de-video-de-nikon-logrando-un-bitrate-de-64-mbps-en-full-hd

Gracias por esta publicación ¡Seguiré investigando =)

Seoane Prado dijo...

Efectivamente, Nikon Hacker viene siendo lo mismo, pero para Nikon.

Aunque para evitar confusiones típicas vistas en el artículo de Xatakafoto, el elevar el bitrate no supone elevar la calidad del vídeo para nada si no disminuir los artefactos de compresión. De hecho el bitrate y la calidad tienen que ver 0 normalmente, son demasiado dependientes de la complejidad de la escena, si aplicas en una escala logarítmica con FFMPEG un factor RF 20 a un video y un preset slow en películas diferentes, podrás observar que hay películas que necesitan una media en formato bluray de 4000 Kbps con picos esporádicos de 250000 mientras que otras no hay quien las baje de 25.000 Kbps, sin embargo, como están comprimidas en un factor constante 20 respecto al SNR (dentro del intervalo 0-51 (Log en 8 bits en este caso)) se verán idénticas, por lo que, establecer bitrates mágicos es cuanto menos complicado, aunque no se puede negar que a más se ve mejor desde luego.

Actualmente, en España, la TDT mismamente, sigue utilizando MPEG-2 en sus multiplexados, y un muestreo 4:2:2, rara vez en 4:4:4, por lo que la ventaja del firmware reside en permitirte grabar en 4:2:2, repito el bitrate es muy secundario ya que MPEG-2 no lo va a aprovechar, a igualdad de condiciones necesita el 40-60% de ancho más para obtener la misma calidad que H.264, eso sin entrar en las polémicas investigaciones que dilucidaron que la TDT-HD no es más que un simple reescalado de los canales adyacentes al mismo en SD por lo que es un motivo más para no malgastar recursos y editar en 35 Mbits a 4:2:2 será lo mejor por ende.

Para que os hagáis a una idea, los circuitos internos de una cámara moderna y su procesador, trabajan con H.264 a 8 bits y 4:2:0, H.264 se comporta como un codec de distribución pero no de edición, por lo que ahí tampoco nos vale para una productora, salvo que lo convirtamos, pero de donde no hay bits, no te los vas a inventar e interpolar la información no suele dar buen resultado.

A la hora de editar un video necesitas un tipo de formato de "Short-GOP", además de una calidad de muestreo decente.

Los formatos como H.264 pecan de ser muy lentos a la hora de editarlos, se basan en la predicción de vectores y mil sistemas con fotogramas claves que hacen que a la hora de trabajar con ellos en tiempo real sea imposible.

Un formato, como puede ser el DNxHD, Apple Proress, CinemaDNG etc, incluyen la información "sin perdidas" en cada fotograma, pero a su vez, usando un sistema de empaquetado 12 bits + un canal de transparencia en 2 bits, usando este sistema casi prevalece el total de la calidad original y encima nos quitamos el ruido generado por el sensor a la hora de grabar.

Estos últimos formatos, son fácilmente obtenibles de un moto "casi nativo" con estos firmwares alternativos, lo único que hacen es "pillar" la información del Live View y volcarla a un fichero, luego en el ordenador con un visor como MLV to RAW podrás convertirla a CinemaDNG o a Proress 4:4:4 sin problemas.

Ahí reside la gracia, no es más que una matriz de bayer volcada, segundo a segundo, sin aplicar las típicas DCT (transformaciones del coseno) ni empaquetar nada, por lo que solo es necesario tener una tarjeta de memoria rápida y de dimensiones importantes, aunque si os parece muy caro, en Cine se usan hasta sistemas RAID de SSD para cámaras como BlackMagic.

Hasta ahora hacer esto requería de equipos carísimos, pero estos señores, se dieron cuenta, que los procesadores de casi todas las cámaras vienen siendo iguales, y que aún por encima, grabar sin compresión tira menos de procesador, eso si, el bus echando humo que en estos casos suele estar compartido con la memoria y la I/O del sistema, por que son frecuentes los parones en las grabaciones si tocas algún botón.

El hecho de que Canon y Nikon estén contra las cuerdas podría ser el mencionado, utilizan las mismas piezas en casi todos sus dispositivos, y se capan posteriormente por firmware, si no, como se explican algunas soluciones milagrosas que le dio Canon a alguna de sus cámaras.

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares