Mejorar VP9 sin cambiarlo - Parte 2

10 de noviembre de 2017
  por Equipo del blog
Escalabilidad combinada: dos capas espaciales y tres temporales

En esta serie de tres partes del blog, estamos cubriendo VP9, escalabilidad y el nuevo códec VP9 de Vidyo, de mayor rendimiento. En la parte 1, hablamos de la escalabilidad temporal; hoy nos sumergiremos en la escalabilidad espacial.

Leer más - Mejorar VP9 sin cambiarlo - Parte 1

La segunda dimensión de la escalabilidad es la escalabilidad espacial, y es un poco más compleja. Supongamos, por ejemplo, que estamos codificando un flujo de vídeo a 720p (es decir, cada fotograma tiene 1280×720 píxeles). Codificarlo de forma escalable significa que, además de poder representar el vídeo a la resolución más alta de 1280×720, también podemos representarlo a resoluciones más bajas, por ejemplo, 640×360 o 320×180. Observe que las resoluciones de este ejemplo disminuyen en potencias de 2 en cada dimensión. Aunque no es un requisito, las relaciones de 2:1 o 1,5:1 son típicas en la escalabilidad espacial. La resolución más baja se denomina capa base, y los datos necesarios para construir cada resolución superior se denominan capas de mejora.

La terminología en este caso refleja cómo se construyen los datos codificados. Al codificar una imagen, el codificador reducirá la imagen original a la resolución de la capa base. A continuación, la codifica y utiliza la imagen reconstruida (la misma que estará disponible en el descodificador) como referencia para codificar la imagen de mayor resolución.

Un vídeo codificado con dos capas espaciales y una temporal

Figura 3: Vídeo codificado con dos capas espaciales y una temporal

 

Figura 3 muestra cómo funciona la estructura de imágenes utilizando un ejemplo con dos capas espaciales y sin escalabilidad temporal (sólo hay una capa temporal). Observe que hay dos conjuntos de imágenes o capas espaciales. El conjunto inferior son las imágenes de baja resolución (la capa base) que se codifican utilizando la estructura IPPP de Figura 1. Además, tenemos la capa de mejora espacial (S), en la que las imágenes no sólo se predicen a partir de las imágenes de la capa de mejora anterior, sino también a partir de la imagen de la capa base correspondiente. Esta dependencia entre capas es muy importante tanto para mejorar la eficacia de la compresión (la versión de baja resolución de una imagen es un excelente predictor de la mayoría de las partes de la imagen de alta resolución) como para mejorar la robustez frente a errores (siempre se puede utilizar la versión de baja resolución si la de alta resolución se daña o se pierde).

Ahora podemos combinar los conceptos de escalabilidad espacial y temporal en un único diseño, permitiendo así cualquier combinación de resoluciones espaciales y frecuencias de cuadro. Siguiendo con nuestro ejemplo de dos capas espaciales y tres capas temporales, Figura 4 muestra el aspecto de la estructura de la imagen.

Escalabilidad combinada: dos capas espaciales y tres temporales

Figura 4: Escalabilidad combinada: dos capas espaciales y tres temporales

Suponiendo una fuente original de 720p 30fps, esta estructura permite obtener conjuntos de capas que pueden proporcionar cualquier combinación de 720p o 360p y 30, 15 y 7,5 fps. Y lo que es más importante, se puede cambiar la descodificación entre cualquier punto de calidad y otro sin tener que informar al codificador ni realizar ningún procesamiento de la señal.

La adaptabilidad que proporciona la codificación escalable es una pieza clave en la implementación de vídeo multipunto mediante la arquitectura Selective Forwarding Unit (SFU) patentada por Vidyo. La SFU puede manipular el vídeo reenviando selectivamente los datos de la capa en función de las necesidades del usuario, la red o la aplicación. La escalabilidad (tanto espacial como temporal) también es importante para proporcionar una mayor robustez frente a errores. Puede leer más detalles sobre los principios de diseño técnico en mi post en BlogGeek.me.

Aunque manipular un flujo que utiliza la escalabilidad espacial y temporal es muy sencillo, crear uno no lo es. Si nos fijamos en Figura 4Cada flecha que une dos imágenes o capas esconde miles de decisiones individuales que debe tomar el codificador. La tarea del descodificador es mucho más sencilla, ya que sólo tiene que actuar a partir de las instrucciones del codificador.

El codificador es el compositor y el descodificador el sintetizador que reproduce la música según la partitura creada por el compositor. Sin embargo, a diferencia de las 88 teclas de un teclado, los parámetros de un codificador se parecen más a la cabina de un avión comercial (véase la figura 5): para que las cosas funcionen bien, hay que coordinar miles de parámetros individuales.

Cabina del A380-800

Figura 5: Cabina del A380-800 (del sitio web de Lufthansa)

Vuelve pronto para la tercera parte, en la que nos sumergiremos en comparaciones de rendimiento y mucho más.

Suscribirse al blog

Reciba una notificación cuando se publiquen nuevos blogs en esta categoría: .

Síguenos

Ir al contenido