En la codificación de video moderna, la predicción inter es un proceso fundamental que permite reducir la redundancia temporal entre los cuadros de un video. Como se mencionó en la Sección 6.2, un bloque de la imagen actual se predice de manera interdependiente a partir de una región similar, generalmente del mismo tamaño, de un cuadro previamente codificado, conocido como cuadro de referencia o imagen de referencia. Este proceso es crucial tanto para el codificador como para el decodificador, ya que ambos deben ser capaces de construir la misma predicción para cada bloque, lo que implica que ambos deben tener disponibles el mismo conjunto de cuadros de referencia.
A medida que el codificador procesa cada bloque del cuadro actual, lo codifica en el flujo de bits de video y, al mismo tiempo, lo decodifica para crear un bloque reconstruido que utiliza para formar un cuadro de referencia. Este comportamiento imita al del decodificador, que también decodifica cada bloque para construir un cuadro decodificado actual, que luego puede ser utilizado, opcionalmente, como una imagen de referencia. De esta manera, tanto el codificador como el decodificador construyen conjuntos idénticos de imágenes de referencia.
En un primer ejemplo, se muestra un escenario con un solo cuadro de referencia y solo predicción hacia adelante. En esta configuración, el primer cuadro (cuadro 0) es un cuadro intra-codificado, donde todos los bloques se predicen usando solo predicción intra. Una vez codificado, el cuadro 0 se envía al decodificador, que lo almacena como un cuadro de referencia para predicción inter. El codificador luego codifica el cuadro 1, utilizando el cuadro 0 como referencia para la predicción inter. De esta forma, todos los bloques en el cuadro 1 son predichos a partir del cuadro 0. Este proceso continúa, y el cuadro 1 reemplaza al cuadro 0 como referencia para el cuadro 2, y así sucesivamente.
En un segundo ejemplo, con hasta cuatro cuadros de referencia, se describe una configuración de baja latencia. En este caso, tanto el codificador como el decodificador pueden almacenar y utilizar hasta cuatro cuadros de referencia. A diferencia del primer ejemplo, aquí las predicciones inter se realizan solo a partir de cuadros pasados. Los cuadros 0 y 1 se codifican como antes, y cuando el codificador llega al cuadro 2, puede utilizar tanto el cuadro 0 como el cuadro 1 como referencias. Cada bloque en el cuadro 2 puede ser predicho desde el cuadro 0, desde el cuadro 1, o una combinación de ambos utilizando la bipredicción. Este proceso sigue para los cuadros siguientes, hasta llegar al cuadro 4. Sin embargo, para que el cuadro 4 utilice el cuadro 0 como referencia, el codificador debe eliminar uno de los cuadros más antiguos del buffer de referencias, en este caso, el cuadro 1. Esta decisión debe ser comunicada al decodificador, de manera que ambos mantengan el mismo conjunto de cuadros de referencia.
Finalmente, en un tercer ejemplo, se presenta un caso de mayor latencia, en el que el orden de codificación y el orden de visualización no coinciden. Aquí, los cuadros se envían de manera deliberada fuera de orden para garantizar que todas las referencias necesarias estén disponibles antes de la decodificación. Esta configuración puede ofrecer una mejor compresión, pero a expensas de un mayor retraso en la decodificación. El cuadro 0 se codifica primero, seguido del cuadro 4, que se predice utilizando el cuadro 0 como referencia. Sin embargo, este cuadro no puede ser visualizado inmediatamente, ya que el decodificador aún no ha recibido los cuadros intermedios. Este proceso continúa con los cuadros 2 y 1, y finalmente el cuadro 3, los cuales son codificados usando referencias pasadas y futuras. En este caso, el decodificador debe esperar a que todos los cuadros de referencia estén disponibles antes de mostrar los cuadros en el orden correcto.
Además de los ejemplos específicos de predicción inter con diferentes configuraciones de cuadros de referencia, hay varios puntos clave que el lector debe tener en cuenta. Es esencial entender que el número de cuadros de referencia utilizados afecta directamente tanto a la latencia como a la eficiencia de la compresión. Mientras más cuadros de referencia estén disponibles, mayor será la flexibilidad en la predicción y, por lo tanto, mejor será la eficiencia en términos de compresión, ya que se puede elegir entre más opciones para predecir los bloques. Sin embargo, un mayor número de cuadros de referencia también aumenta la complejidad de la codificación y puede introducir más latencia en el proceso de decodificación, lo que es un factor importante en aplicaciones de baja latencia, como las videollamadas en tiempo real.
En este contexto, es importante entender cómo la selección de cuadros de referencia impacta en el equilibrio entre calidad de video, tasa de bits y latencia. El uso de varios cuadros de referencia mejora la precisión de la predicción, lo que permite una mayor compresión y una mejor calidad visual a tasas de bits más bajas. No obstante, este beneficio debe ser sopesado con el impacto en la latencia, que puede ser un factor limitante dependiendo de la aplicación. La toma de decisiones sobre cuántos cuadros de referencia utilizar debe basarse en el tipo de contenido del video y los requisitos específicos del sistema o dispositivo en uso.
¿Cómo se Codifica y Comprime un Video para Transmitirlo Eficazmente?
El proceso de codificación de video implica varios pasos que permiten transformar una gran cantidad de datos visuales en una forma compacta, más fácil de almacenar y transmitir. A pesar de la creciente capacidad de almacenamiento y ancho de banda en la tecnología actual, la demanda de procesar video de alta calidad sigue superando la capacidad disponible. Desde grabar un video con un teléfono inteligente hasta su transmisión a través de internet, cada paso del proceso involucra una serie de complejas operaciones que permiten optimizar la experiencia tanto para el usuario como para los dispositivos involucrados.
La compresión de video comienza con la conversión de bloques de datos de video o datos residuales a una representación diferente, como una representación en el dominio de frecuencia, la cual es luego cuantificada para reducir la precisión de los datos. Este proceso tiene el efecto de eliminar o descartar gran parte de la información en un bloque, lo que inevitablemente conlleva a una pérdida de calidad visual. Sin embargo, este sacrificio en calidad es necesario para hacer que el archivo sea lo suficientemente pequeño como para ser procesado y transmitido eficientemente.
A medida que un video es codificado, los bloques cuantificados y la información necesaria para su decodificación se convierten en una secuencia de bits comprimidos, mediante técnicas de codificación de entropía, como la codificación de longitud variable o la codificación aritmética. Estos datos comprimidos se organizan para ser almacenados y/o transmitidos, por ejemplo, en paquetes de tamaño adecuado para la transmisión en redes o su almacenamiento en contenedores junto con otros datos, como las pistas de audio.
Una vez que estos datos comprimidos llegan a su destino, un decodificador de video revierte el proceso de codificación para crear una secuencia de video que pueda ser mostrada en la pantalla. Sin embargo, el video decodificado no siempre será idéntico al original debido a la pérdida de datos durante la compresión, lo que resulta en una calidad visual ligeramente inferior, dependiendo del nivel de compresión utilizado.
La medición del rendimiento de un códec de video se puede realizar en tres dimensiones principales: la cantidad de compresión, que se refiere a cuán pequeño es el bitrate comprimido; la calidad del video decodificado, que se refiere a cuánta distorsión visual se introduce en relación con el video original; y la cantidad de procesamiento computacional requerido tanto por el codificador como por el decodificador. Estos tres factores sirven como indicadores clave para comparar la efectividad de diferentes códecs de video.
La resolución del video juega un papel crucial en la cantidad de datos necesarios para representar un clip. Por ejemplo, un segundo de video no comprimido en definición estándar (SD) a 25 fotogramas por segundo requiere alrededor de 15.5 MB de espacio de almacenamiento. Para un video en resolución 4K (Ultra Alta Definición o UHD), la cantidad de datos por segundo se incrementa considerablemente, alcanzando los 620 MB para un video de 50 fotogramas por segundo. La transmisión de un archivo de video sin comprimir en estas resoluciones requeriría anchos de banda extremadamente altos, lo que hace inviable su transmisión en tiempo real sin compresión.
A pesar de que la capacidad de almacenamiento y el ancho de banda siguen aumentando, la cantidad de video producido y consumido a resoluciones más altas sigue creciendo a un ritmo más acelerado. Para 2023, por ejemplo, aproximadamente dos tercios de los televisores de consumo eran de resolución 4K o superior. Este aumento en la resolución ha elevado las expectativas de los usuarios, que ahora esperan una calidad de video superior, mientras que las tecnologías de compresión, como HEVC (High Efficiency Video Coding), se han vuelto imprescindibles para mantener la eficiencia en el almacenamiento y la transmisión.
El proceso de codificación en dispositivos como teléfonos inteligentes es un claro ejemplo de cómo las tecnologías modernas están optimizando la forma en que interactuamos con el video. Al grabar un video, el teléfono comprime el archivo en tiempo real utilizando un codificador de video integrado, lo que permite ahorrar espacio en el almacenamiento del dispositivo y acelerar la transmisión del archivo. Cuando el video es enviado a otro dispositivo, como otro teléfono, el archivo codificado es recibido, decodificado y mostrado en pantalla en tiempo real, de nuevo a través de un decodificador de video integrado en el dispositivo receptor.
Un códec de video puede ser un programa de software, un módulo de hardware integrado en un chip, o una combinación de ambos. Estos códecs realizan una tarea computacionalmente intensiva, ya que convierten millones de píxeles por segundo en una forma comprimida y luego decodifican estos datos comprimidos para su visualización. Para llevar a cabo estos pasos de manera eficiente en tiempo real, es común realizar parte del procesamiento en hardware dedicado, lo que permite la codificación y decodificación de video de alta resolución sin afectar significativamente el rendimiento de la batería o del dispositivo.
En la mayoría de los códecs prácticos desde los años 90, el proceso básico de codificación y decodificación sigue el mismo principio fundamental: se comienza dividiendo el video en bloques de píxeles, luego se predice el contenido de esos bloques utilizando información de píxeles vecinos o de fotogramas previamente codificados. A partir de esta predicción, se genera un bloque residual que contiene la diferencia entre la predicción y el bloque original. Este bloque residual es luego comprimido y almacenado, mientras que el decodificador reconstruye el video original a partir de esta información.
El impacto de las tecnologías de compresión y codificación de video en la experiencia del usuario es profundo. No solo permiten la transmisión y almacenamiento eficientes de contenido de alta calidad, sino que también facilitan nuevas formas de interacción, como la transmisión en vivo y la creación de contenido en plataformas digitales. Por lo tanto, comprender cómo funcionan estos procesos, los códecs involucrados y sus implicaciones tecnológicas es esencial para entender el futuro del video digital y sus aplicaciones.
¿Cómo puede la computación en el borde mejorar los sistemas de salud?
¿Cómo se resuelven las ecuaciones diferenciales en coordenadas cilíndricas?
¿Cómo ha cambiado la presidencia de Estados Unidos bajo la administración de Trump?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский