Innovación

Codificador experimental LHE

La técnica de codificación LHE (Logarithmical Hopping Encoding) aplicada a vídeo proporciona la posibilidad de llevar a cabo un procesamiento ultra rápido de los vectores de movimiento, así como mayores tasas de compresión de tramas que el estado del arte. Esto hace que para un mismo ancho de banda se pueda transmitir una mayor cantidad de imágenes codificadas, o bien aumentar el número de jugadores que pueden acceder a la plataforma para un mismo ancho de banda disponible.

La estimación de movimiento es un proceso con alta complejidad computacional y a menudo representa dos tercios del coste computacional en la codificación de vídeo. En la actualidad, gran parte de la investigación en el campo de la codificación de vídeo se centra en los algoritmos de estimación de movimiento de manera más eficiente.

LHE permite el cálculo instantáneo de los vectores de movimiento, mientras que la imagen se está codificando. Esto es posible gracias a que LHE utiliza una aproximación completamente diferentei. Por lo tanto, la tecnología LHE es adecuada para los servicios de codificación de vídeo en tiempo real como los juegos en línea/cloud, donde es importante cada milisegundo de latencia.

Además, en este proyecto se va a aprovechar la interacción de usuario como información extra de entrada al codificador, que le va a permitir evaluar los vectores de movimiento con mayor precisión. Esta aproximación es totalmente novedosa y puede suponer un gran avance en este campo. Se busca también diseñar la generación de vídeo 3D con este codificador, así como la mejora del códec para este caso de uso.

Un salto de calidad como el que representa LHE permite ahorrar anchos de banda, pues a menor bit-rate se igualan los niveles de calidad estándar esperados en una imagen. Además de la casi nula latencia de codificación, los experimentos publicados revelan una superioridad del algoritmo LHE frente a los sistemas convencionales.


Protocolo Q4S

El protocolo de medida de calidad en tiempo real Q4S (Quality for Service) permite conocer en todo momento el estado de la comunicación e2e entre los extremos involucrados y es de especial interés en el caso de uso de video interactivo, pues se debe reajustar el codificador en tiempo real para adaptarse a las variaciones de los 4 parámetros fundamentales de la red (jitter, latencia, ancho de banda y pérdida de paquetes). “Online Video Racing Drones ” (RacingDrones)

Este es un protocolo de uso experimental publicado en IETF por parte del equipo de trabajo que estará involucrado en el proyecto. En este ámbito, es importante tener en cuenta que los enlaces inalámbricos generan pérdidas y latencias que son muy distintas a las que aparecen por congestión de la red. Por ello es importante buscar mecanismos que permitan identificar la causa de dichos parámetros.

Tanto este protocolo como el codificador LHE mencionado en el anterior punto se emplearán de manera conjunta para facilitar la medición en tiempo real de la calidad de red y adaptación del juego.


Diseño y desarrollo del codificador LHE en FPGA

En el contexto de RacingDrones se ha diseñado e implementado en FPGA un codificador de imágenes que utiliza el algoritmo LHE básico con segmentación de las imágenes en bloques. El mismo dispone de la capacidad de configurar en caliente FPS, esquema de color (yuv422, yuv420 y escala de grises) y tamaño de bloques. Adicionalmente, la resolución máxima admitida es configurable antes de la síntesis del código HDL. Este codificador hardware se ha integrado en un sistema de transmisión de vídeo implementado en la plataforma Zynqberry. La cadena de captura de imágenes alimenta al codificador, el cual escribe las imágenes codificadas en la memoria del procesador integrado. Este último finalmente empaqueta y envía los datos del vídeo por la red. La figura a continuación muestra un diagrama de bloques con la implementación realizada.

 

 

 

 

 


Plataforma on-line

Uno de los subsistemas esenciales en la implementación del proyecto RACINGDRONES es la plataforma on-line. Esta plataforma on-line es el nexo de unión entre el jugador y el juego en sí, que en último término es el coche que va a pilotar.

La plataforma on-line es un diseño ad-hoc desarrollado por la UPM que cumple con las especificaciones de diseño que se han detallado en el entregable E.6.1. Especificaciones de la plataforma.

En la implementación de la plataforma se ha tenido en cuenta que, si bien el despliegue para llevar a cabo las pruebas de integración, funcionalidad y viabilidad, y manejabilidad del coche los recursos disponibles son limitados en cantidad, está desarrollado de forma que es totalmente escalable, con la posibilidad de incluir tantos circuitos (juegos) como se desee, y en cada circuito el número de coches que haya disponibles para la celebración de la carrera.

El diseño es totalmente flexible desde el punto de vista de tipo de juego que se quiera incluir dentro de la oferta de la plataforma, en especial para juegos virtualizados. Esta plataforma podría incluir una colección de juegos virtualizados y videojuegos, de modo que mientras se espera a que haya e número suficiente de participantes, el jugador pueda entretenerse con otros juegos.

La plataforma ha sido diseñada en un lenguaje de programación actual, cada vez más aceptado y utilizado por los desarrolladores software. PYTHON. El uso de este lenguaje de programación tiene la ventaja de tener muchos usuarios y desarrolladores que día a día contribuyen con la aportación de nuevos desarrollos y bibliotecas que permiten acelerar los tiempos de diseño. En el caso particular de la plataforma RACINGDRONES, se ha empleado la biblioteca PyGames.

El servidor hospeda una base de datos que contiene la información de los usuarios que están registrados y que, por tanto, pueden acceder a los juegos disponibles mediante las credenciales con las que se registró. El registro del usuario tendrá asociada la información de los juegos a los que pueda acceder (en una fase de comercialización). Una vez registrado, tendrá acceso a los juegos que haya “comprado”, pudiendo elegir circuitos que podrían estar físicamente ubicados en cualquier parte del mundo. Asimismo, para cada circuito el usuario/jugador podrá ver los coches disponibles, los coches que ya han sido elegidos por otros jugadores (los competidores), pudiendo elegir del conjunto de Racingdrones que aún estén libres. El usuario/jugador podrá visualizar, mediante la conexión al streaming de vídeo que se enruta al seleccionar juego-circuito-coche, y le aparecerán los controles para el avance/retroceso y giro izquierda/derecha. La conducción del Racingdrone se produce en “tiempo real”, produciéndose una latencia debida a los distintos factores que se describieron en los documentos E.6.1. Especificaciones de la plataforma y E6.2 Estudio del marco de comunicaciones para plataformas multi-usuario.

Las pruebas realizadas han sido bastante satisfactorias, como puede comprobarse en los vídeos que se han grabado, tanto en la implementación con la Raspberry Pi, como con la Zynqberry. En el caso de la Zynqberry, la experiencia del usuario ha sido más satisfactoria, principalmente porque los tiempos de latencia que se obtienen son menores, lo cual mejora la jugabilidad de forma notable.