El proceso de transmisión de video y audio a través de redes de comunicación se ha convertido en una parte integral de nuestra experiencia diaria, desde la transmisión de películas en plataformas digitales hasta las videoconferencias en entornos profesionales. Para comprender cómo funciona este proceso de manera eficiente, es necesario explorar en detalle los protocolos, las técnicas de codificación y la infraestructura que permiten la entrega continua de contenidos multimedia.

En primer lugar, el protocolo H.225 se encarga de establecer y realizar las llamadas, mientras que el protocolo H.245 facilita la comunicación bidireccional entre dispositivos para controlar la apertura y cierre de los flujos de video y audio, así como para acordar los parámetros de la llamada. Es decir, estos protocolos no solo permiten la transmisión, sino que también gestionan la interacción entre los dispositivos que participan en la comunicación.

La transmisión de video, o streaming, es un proceso que consiste en enviar video y audio comprimidos a través de una red, permitiendo a los usuarios empezar a visualizar el contenido casi de inmediato, sin necesidad de esperar a que todo el archivo o programa se haya descargado completamente. Este concepto de “transmisión continua” es crucial para garantizar una experiencia de usuario fluida y sin interrupciones. Una preocupación central en este tipo de sistemas es la capacidad de ofrecer una transmisión sin interrupciones una vez que se ha iniciado la reproducción, lo que se ve directamente influenciado por varios factores, como el tamaño del archivo, la tasa de transmisión de la red y la gestión del búfer de decodificación.

La técnica de descarga progresiva, o progressive download, implica el envío de un archivo multimedia de manera que el cliente comienza la reproducción una vez que ha descargado una cantidad suficiente de datos. Este tipo de archivo está diseñado para que la información sobre la pista (como la sección ‘moov’ en un archivo mp4) se reciba primero, seguida de muestras de video y audio entrelazadas, que permitirán al cliente empezar a decodificar y reproducir el contenido a medida que lo recibe. Sin embargo, para evitar interrupciones, es necesario que el búfer del cliente continúe recibiendo los datos del archivo para que la decodificación y la reproducción puedan mantenerse de manera continua.

Uno de los problemas que pueden surgir es el “estancamiento” del búfer, lo que ocurre cuando los datos recibidos no son suficientes para mantener la decodificación. Esto sucede, por ejemplo, cuando la tasa de transmisión de la red es demasiado baja para llenar el búfer a la velocidad necesaria para mantener la reproducción en tiempo real. En estos casos, la experiencia del usuario se ve interrumpida por pausas o bloqueos, lo que puede ser frustrante si no se gestiona adecuadamente.

El objetivo para asegurar una reproducción continua es que la tasa de datos recibidos a través de la red sea superior a la tasa de bits del video comprimido, medida en promedio durante un período de tiempo. Sin embargo, las tasas de datos de internet no son constantes y pueden variar considerablemente, especialmente para usuarios que dependen de conexiones domésticas o móviles. Una forma de abordar este problema es elegir una tasa de bits más baja para el video, aunque esto inevitablemente reducirá la calidad de la imagen.

En cuanto a los servidores de streaming, existen soluciones que permiten la transmisión de video en tiempo real sin que el cliente tenga que almacenar todo el archivo de video. En lugar de almacenar el archivo completo, los servidores de streaming proporcionan datos al cliente en tiempo real, que se almacenan temporalmente en un búfer antes de ser decodificados y reproducidos. Uno de los ejemplos más emblemáticos es el Apple Quicktime Streaming Server (QTSS), que permite que los usuarios soliciten una transmisión desde el servidor y reciban los datos en tiempo real utilizando protocolos como RTP y RTSP.

A partir de la década de 1990, los servidores de streaming se han diversificado, permitiendo a los usuarios acceder a contenido en vivo, donde el servidor comienza a transmitir el contenido a medida que este se genera, y los clientes pueden unirse al flujo en cualquier momento. Algunos servidores de streaming, como el SureStream de RealNetworks, son capaces de adaptar dinámicamente la tasa de bits de los medios entregados a cada cliente según el ancho de banda estimado entre el servidor y el cliente. Esta capacidad de ajustar la calidad de la transmisión permite una experiencia más optimizada, especialmente en condiciones de red variables.

No obstante, los primeros servidores de streaming dependían de software especializado como el QTSS o RealServer, y utilizaban protocolos de streaming propietarios o RTSP/RTP. Desde principios de los 2000, las redes de servidores distribuidos conocidas como CDN (Content Delivery Networks) han facilitado la entrega eficiente de contenido en internet, mejorando la velocidad y estabilidad de la transmisión, incluso en condiciones de tráfico elevado.

Es importante señalar que la calidad de la transmisión no depende únicamente de la infraestructura de red o la técnica de compresión utilizada, sino también de la forma en que se gestionan los recursos del sistema y los protocolos de comunicación. La experiencia del usuario, por tanto, se ve afectada por la eficiencia en la entrega de los datos, el manejo de los búferes y la adaptación a las condiciones cambiantes de la red.

¿Cómo Se Organizan y Procesan las Estructuras en los Códecs de Video?

Un clip o secuencia de video completo es procesado por un codificador de video para crear un flujo de bits comprimido. Para manejar la gran cantidad de datos de imagen en una secuencia de fotogramas, el codificador divide la información en estructuras manejables. Este capítulo se centra en cómo un codificador de video realiza esta división y cómo conecta el video fuente, compuesto por miles o millones de píxeles en múltiples fotogramas, con las unidades de datos codificados.

El proceso de codificación de un video es, en última instancia, la conversión de un conjunto de fotogramas en una secuencia de imágenes codificadas, que, cuando se decodifican, reproducen el programa o clip completo. Las imágenes codificadas pueden organizarse en estructuras de múltiples imágenes durante la codificación, como el Grupo de Imágenes (GoP, por sus siglas en inglés). Cada imagen puede codificarse como una unidad única o dividirse en múltiples secciones conocidas como rebanadas o bloques. Estos bloques, o "Tiles", contienen una o más unidades básicas, como los Macro-bloques o las Unidades de Árbol de Codificación. La unidad básica es un conjunto de datos manejado tanto por el codificador como por el decodificador, y en los códecs actuales es de forma cuadrada. En los antiguos estándares MPEG-2 y H.264/AVC, la unidad básica tenía un tamaño de 16x16 píxeles, alcanzando hasta 64x64 píxeles en el estándar H.265/HEVC y hasta 128x128 píxeles en el estándar H.266/VVC.

Estas unidades básicas pueden dividirse en bloques más pequeños para realizar pasos de procesamiento como la predicción y la transformación. El reto aquí radica en encontrar un equilibrio entre el tamaño de estas unidades y el impacto en la eficiencia de la compresión. Cuanto más grande sea la unidad, mayores serán las oportunidades de optimización en términos de predicción y transformación, pero también aumentarán los requisitos computacionales. Por otro lado, unidades más pequeñas permiten una mayor precisión en la codificación de detalles finos, pero generan mayor sobrecarga de procesamiento y pueden llevar a un mayor uso de bits para la transmisión de la estructura.

Además de la organización y el tamaño de las unidades básicas, los códecs modernos utilizan estructuras flexibles que pueden adaptarse a las variaciones en los contenidos de video. A pesar de que una secuencia de video típica está compuesta por regiones irregulares con diferentes texturas, colores y comportamientos de movimiento, los códecs intentan modelar y predecir el comportamiento de la secuencia. Esto permite que las estructuras irregulares, aunque más eficientes en términos de compresión, generen una mayor complejidad al momento de la decodificación. Un ejemplo común es el uso de bloques de tamaño fijo, como los Macro-bloques de 16x16, que no requieren ser comunicados explícitamente entre el codificador y el decodificador. Esto facilita la simplicidad y la eficiencia en la codificación y decodificación.

Sin embargo, el uso de estructuras de tamaño fijo presenta una limitación importante. Aunque estas estructuras son fáciles de procesar y no requieren mucha información adicional para ser transmitidas, no siempre se adaptan de manera óptima a la naturaleza irregular del contenido de video. Las estructuras que pueden variar en tamaño y forma pueden reflejar mejor el contenido real del video, pero a costa de una mayor complejidad computacional y de un mayor consumo de bits para transmitir las variaciones al decodificador. Por tanto, los códecs prácticos buscan un equilibrio que permita una cantidad moderada de variación en las estructuras, mientras mantienen una base rectangular o cuadrada.

Este proceso de división y tratamiento de las estructuras en unidades más pequeñas también facilita aspectos clave del proceso de codificación, como el acceso aleatorio y la capacidad de procesamiento paralelo. La estructura de los fotogramas codificados está diseñada para permitir la transmisión eficiente en redes, lo que es esencial para su aplicación en servicios de streaming y videoconferencias. Además, la división en bloques facilita la paralelización de los procesos de codificación, lo que permite una mayor velocidad en el procesamiento de videos de alta resolución.

Es importante señalar que la evolución de los códecs de video ha estado marcada por un constante incremento en la capacidad de los procesadores y en las técnicas de compresión. Si bien los códecs más antiguos como MPEG-2 y H.264/AVC tenían limitaciones de capacidad de procesamiento y almacenamiento, los códecs modernos, como HEVC, AV1 y VVC, han superado estas restricciones, permitiendo una compresión mucho más eficiente sin sacrificar la calidad de la imagen. Este avance ha sido posible gracias a las mejoras en las técnicas de predicción, la capacidad de manejar estructuras más grandes y complejas, y la optimización de la transmisión de datos.

A lo largo de esta evolución, ha quedado claro que la elección de las estructuras de codificación influye profundamente en el rendimiento de los códecs. Mientras que las unidades de mayor tamaño tienden a ser más eficientes en términos de compresión, las unidades más pequeñas ofrecen una mayor flexibilidad y precisión en la codificación de detalles finos. Este equilibrio entre flexibilidad y eficiencia es fundamental para el desarrollo de códecs que puedan manejar de manera efectiva las crecientes demandas de contenido de alta calidad y transmisión a través de redes globales.

¿Por qué la codificación de video sigue siendo crucial en un mundo con más ancho de banda y almacenamiento?

En 1994, cuando comencé mi investigación en codificación de video en la Universidad Robert Gordon de Aberdeen, Escocia, un visitante me preguntó si realmente valía la pena investigar la compresión de video. "¿No será esto innecesario dentro de unos años? El ancho de banda de las redes está aumentando cada año, ya tenemos Ethernet de 10 Mbps y pronto tendremos 100 Mbps. La compresión de video será obsoleta para el año 2000", me dijo. Me ofreció una apuesta, sugiriendo que la investigación sobre codificación de video desaparecería a medida que el ancho de banda y la capacidad de almacenamiento continuaran mejorando.

Si hubiera aceptado la apuesta, hoy probablemente me estaría arrepintiendo. A pesar de los avances en las tecnologías de transmisión y almacenamiento, la necesidad de una codificación de video eficiente y efectiva es hoy más relevante que nunca. La generación y el consumo de contenido de video han crecido mucho más rápido que el ancho de banda disponible en los últimos años. La aparición de contenido generado por los usuarios, sobre todo a través de dispositivos móviles, ha sido un factor importante. Además, los patrones de consumo de video han cambiado, con muchas personas viendo múltiples transmisiones simultáneas dentro de un mismo hogar, y el aumento de la resolución de contenido, con la transición a contenidos en alta definición (HD) y más allá.

La codificación de video, también conocida como compresión de video, se refiere al proceso mediante el cual un codificador de video convierte el video digital en una forma comprimida, es decir, una forma que ocupa menos espacio de almacenamiento o capacidad de transmisión. El decodificador de video realiza el proceso inverso, convirtiendo el video comprimido en video digital no comprimido. La combinación de un codificador y un decodificador se denomina códec de video, y los procesos de compresión y descompresión son generalmente conocidos como codificación de video.

Es fascinante notar que, desde la década de 1990, la compresión de video ha tenido un impacto significativo en varias aplicaciones clave: la grabación, reproducción y compartición de video en dispositivos móviles; las videollamadas y videoconferencias, que recibieron un gran impulso tras los confinamientos por la pandemia de COVID-19 en 2020; el streaming de video, que actualmente está superando la transmisión de televisión digital como la forma dominante de consumo de video; el video en redes sociales, con plataformas como Facebook, Instagram y TikTok que ahora dependen cada vez más de los videos, además de las imágenes estáticas; la seguridad y la vigilancia, desde las cámaras de seguridad comerciales hasta las cámaras corporales de la policía y los timbres con video; y el video en el ámbito automotriz, desde las cámaras de salpicadero hasta el entretenimiento a bordo.

A lo largo de los últimos años, hemos sido testigos de un aumento significativo en el uso de la compresión de video, y una reconfiguración en la manera en que se utiliza el video comprimido, con la introducción de nuevos estándares y formatos de codificación, como H.265/HEVC, H.266/VVC, VP9, AV1 y otros. Estos nuevos estándares son documentos públicos, pero los estándares publicados no están diseñados para el lector casual y pueden resultar difíciles de entender. Esto se debe en parte a que están centrados en descripciones técnicas detalladas de cómo funcionan los códecs de video basados en estos estándares. Incluso un lector con una sólida formación en ciencias de la computación o ingeniería electrónica puede necesitar una forma más accesible para comprender estos estándares de codificación de video.

Mi propósito al escribir este libro es reunir el material que he estado compartiendo durante años con estudiantes, investigadores, ingenieros y profesionales, y ofrecer una guía más accesible que permita a los lectores comprender cómo funcionan los estándares de codificación de video y cómo aprovechar al máximo la compresión de video. En el libro se ofrecen explicaciones intuitivas sobre los principales conceptos de la codificación de video, comenzando con una introducción general al video digital y la compresión de video. Se tratan los conceptos clave como la calidad visual y el rendimiento, y se analiza cada uno de los conceptos centrales de la codificación de video. Aunque se centra principalmente en la serie de estándares H.26x, especialmente en H.265/HEVC, el libro también proporciona ejemplos ilustrativos y diagramas explicativos para facilitar la comprensión.

Es fundamental entender que, a pesar del crecimiento del ancho de banda y las capacidades de almacenamiento, la compresión de video sigue siendo esencial para asegurar una transmisión eficiente y accesible del contenido de video. Los avances en la resolución de video y los nuevos formatos como el 4K o 8K, aunque impresionantes, solo hacen que la necesidad de compresión sea aún más crucial. La codificación de video eficiente no solo facilita la transmisión y almacenamiento de video, sino que también permite que los dispositivos con recursos limitados, como teléfonos móviles o sistemas de videoconferencia, puedan manejar contenido de alta calidad sin sobrecargar las redes. En el futuro, la codificación de video probablemente se enfrentará a nuevos desafíos, como la adaptación a redes 5G y la creciente demanda de contenido interactivo y en tiempo real.