- El streaming de juegos exige una latencia extremadamente baja
- PyroWave logra una velocidad extrema al eliminar la predicción de movimiento y la codificación por entropía
- Se diferencia de los códecs tradicionales basados en DCT al usar un enfoque basado en transformada wavelet discreta (DWT)
- Con procesamiento paralelo por bloques de 32×32 y un control de tasa rápido, la codificación y decodificación en GPU son muy veloces
- En evaluación de calidad, muestra resultados suficientemente buenos en ciertos escenarios incluso frente a H.264/HEVC/AV1
Requisitos de latencia ultrabaja del streaming de juegos y límites de los enfoques existentes
- A medida que aumenta la demanda de streaming de gameplay, se vuelve crucial la transmisión en tiempo real de un dispositivo a otro a través de la red
- La latencia acumulada en cada etapa, desde DMA, renderizado, codificación, transmisión, decodificación y salida en pantalla, afecta fuertemente la experiencia general
- La solución tradicional es usar códecs de video con aceleración por GPU como H.264, HEVC y AV1
- Pero en streaming no se pueden usar técnicas de alta compresión como los B-frames, lo que impone fuertes limitaciones de latencia y bitrate
Filosofía de diseño: eliminar la predicción de movimiento y la codificación por entropía
Eliminar la predicción de movimiento – enfoque Intra-Only
- Se elimina la predicción de movimiento de los códecs de video convencionales para tratar cada cuadro de forma independiente
- Como resultado, el bitrate aumenta, pero hay ventajas en resistencia a errores, simplicidad y consistencia de calidad
- El enfoque Intra-only ya se ha usado también en cine digital
- Por eso no es adecuado para streaming por internet, pero puede dar buenos resultados en entornos de alto ancho de banda como una LAN
Eliminar la codificación por entropía
- La codificación por entropía se excluye por completo porque perjudica el procesamiento paralelo en GPU
- Se implementa por software un terreno que antes existía solo para ASICs o equipos especializados
- Abre camino en el área de los códecs ultrabajos en latencia que no existen en FFmpeg
Un nuevo enfoque con transformada wavelet (DWT)
- En lugar de la DCT de los códecs tradicionales, adopta la transformada wavelet discreta (DWT)
- La transformada wavelet es similar a la estructura de mip-map, familiar para programadores gráficos
- Divide la imagen en varias bandas y aplica cuantización a cada una
- Las bandas de alta frecuencia se cuantizan con mayor agresividad para aprovechar al máximo las características visuales
- Este proceso también está vinculado al control de tasa (rate control)
Artefactos típicos y límites de los códecs basados en wavelets
- En lugar de los artefactos de bloqueo de JPEG, los wavelets suelen producir principalmente desenfoque o ringing
- Como esto se superpone con el desenfoque causado por TAA en juegos recientes, en la práctica puede no ser un gran problema
Empaquetado de bitstream de alta velocidad y paralelización
- Los bloques de coeficientes de 32×32 se procesan de forma independiente para limitar el impacto de la pérdida de paquetes a solo un desenfoque local
- Con subbloques de 8×8 y 4×2, se optimiza el procesamiento paralelo a nivel de workgroups de GPU
- Se usa codificación por bitplane, pero se almacenan datos de bits crudos sin codificación por entropía compleja
- Métodos amigables con GPU como almacenamiento SSBO de 8 bits maximizan la eficiencia de memoria y la velocidad de procesamiento
Control de tasa preciso y rápido
- A diferencia de los métodos tradicionales con codificación por entropía, se ajusta la tasa midiendo y almacenando repetidamente cuántos bits se omiten en cada bloque
- Se calcula globalmente el tramo óptimo de rate-distortion para cumplir estrictamente con CBR
- La fortaleza de los códecs tipo wavelet, el corte temprano por bitplane, también se logra por software
Rendimiento y eficiencia reales
- En 1080p 4:2:0, la codificación y decodificación se completan en 0.13 ms en una GPU RX 9070 XT
- Se aprovechan optimizaciones FP16 en cada etapa, como DWT y cuantización, con un claro trade-off entre calidad y velocidad
- En 4K, experimentos muestran que comprimir en la GPU antes de transferir es más rápido que la velocidad de transferencia por PCI-e
- Se logra una velocidad hasta más de 10 veces superior incluso a códecs con hardware dedicado
Evaluación de calidad y comparación con otros códecs
- Grupo de comparación: codificadores GPU de FFmpeg (H.264/HEVC/AV1) en modo Intra-only, CBR y mínima latencia
- Con 200 Mbps y 60 fps, en PyroWave los artefactos de compresión son casi indistinguibles a simple vista
- En distintas escenas de juegos, también obtiene resultados suficientemente buenos en métricas objetivas de calidad como VMAF, SSIM y PSNR
- Algunas métricas específicas (como VMAF) tienden a favorecer un poco a PyroWave, mientras que PSNR revela el impacto de la precisión interna
- Aunque hay desenfoque o artefactos de menor calidad en la imagen, no representan un gran problema práctico dado el aspecto visual de los juegos modernos y el uso previsto
Conclusión
- PyroWave presenta una alternativa innovadora para el streaming local de juegos que requiere latencia ultrabaja y procesamiento de alta velocidad
- Está especialmente orientado al procesamiento paralelo y al control CBR en conjunto con arquitecturas GPU modernas
- Aunque es un proyecto personal, ofrece un alto nivel de satisfacción como solución DIY de streaming ultrarrápido
1 comentarios
Opiniones de Hacker News
Habla sobre VC-2, un códec intra basado en wavelets y de latencia ultrabaja desarrollado por la BBC. Este códec puede usarse sin regalías y, por ahora, solo existen implementaciones basadas en CPU en ffmpeg y en el repositorio oficial de la BBC. Planea crear una versión acelerada con CUDA como tesis de maestría. Las implementaciones en Vulkan realizadas el año pasado en GSoC todavía no resultan satisfactorias. Recomienda mucho que la gente le eche un vistazo a este códec
Este artículo es un excelente ejemplo de cómo explicar bien la tolerancia a la distorsión y los trade-offs ajustándolos a las características de la señal. Incluso si uno está en la posición de elegir un códec en lugar de diseñarlo, seguir este proceso puede dar buenos resultados. Si te interesa el área donde la latencia ultrabaja es importante, puede ser útil consultar un reporte de VSF que resume las características de varios códecs alternativos (enlace)
No sé casi nada de codificación de video, pero creo que si el encoder cooperara aunque sea un poco con el motor del juego, habría muchos enfoques prácticos que se están desaprovechando en el streaming de videojuegos. Por ejemplo, la mayoría de los motores de renderizado ya tienen buffers de predicción de movimiento para sus propios fines, y eso podría reutilizarse gratis para la codificación. Lamenta que probablemente existan patentes que bloqueen este tipo de invenciones, así que quizá en la práctica no sea tan fácil
Propone un enfoque en el que un LLM (modelo de lenguaje grande) resuma en unas pocas frases la situación del juego en cada cuadro y la envíe por la red, para que el LLM del lado receptor reconstruya el cuadro a partir de ese texto. Menciona que sería difícil en tiempo real y con mucha pérdida, pero la tasa de compresión sería enorme y además encaja con la tendencia actual
Este enfoque de códec casi coincide exactamente con lo que quería usar en un proyecto de investigación. Como referencia, advierte que para proyectos comerciales JPEG-XS, un estándar de pago, podría ser una opción más segura porque también afirma tener latencia ultrabaja y evita problemas de patent pools (enlace1, enlace2)
Comparte una entrevista (enlace) y un video demo (enlace) diciendo que el fundador de VLC está desarrollando un protocolo de streaming de latencia ultrabaja
Reconoce que este CODEC se basa en un algoritmo similar a HTJ2K (High-Throughput JPEG 2000), y comenta que si el autor llega a ver el mensaje, sería interesante que explicara en qué se diferencia de HTJ2K
Explica que, si uno se enfoca solo en streaming dentro de una red local, muchas funciones de los códecs modernos no hacen falta. Si se asegura un ancho de banda de unos 100 Mbps, se puede priorizar velocidad de procesamiento y baja latencia. Como ejemplo, el códec Microsoft DXT casi no tiene funciones de códecs modernos (sin codificación entrópica, compensación de movimiento ni deblocking), pero logra una compresión de 4 a 8 veces y permite decodificación por hardware, lo que ayuda a reducir la latencia total. Aun así, señala que incluso optimizando todo seguirá habiendo entre 30 y 100 ms de latencia adicional en la propia pantalla
Comenta que el resultado del desarrollo es realmente impresionante y que espera que algún día se aplique a Moonlight o a algún proyecto similar
Citando la opinión de que este códec sigue siendo un campo poco conocido y especializado, por lo que cuesta encontrar comparaciones con códecs rivales, comenta que le interesan benchmarks frente a H.264/AVC (con opciones de zero-latency en ffmpeg) y JPEG XS. Incluso comparte ejemplos de comandos de ffmpeg y parámetros detallados de codificación