El rendimiento de un códec de video se evalúa a través de una curva de tasa-distorsión, que ilustra la relación entre el tamaño de archivo o el bitrate promedio y la calidad decodificada del video. Esta curva es fundamental para entender cómo las decisiones de codificación impactan el archivo comprimido y la calidad visual. En términos simples, la curva refleja el equilibrio entre la cantidad de compresión lograda y la calidad percibida.

Cuando se manipulan parámetros de codificación, como el QP (valor cuantificador), se obtiene una curva de tasa-distorsión caracterizada por un punto en el eje horizontal que representa el tamaño del archivo comprimido o el bitrate, y un punto en el eje vertical que refleja la calidad decodificada, generalmente medida a través de métricas como VMAF. Al disminuir el QP, el tamaño del archivo aumenta mientras que la calidad mejora, lo que produce la típica forma de la curva. Por el contrario, cuando se aumenta el QP, la calidad disminuye y el tamaño del archivo se reduce, lo que genera una forma característica en la gráfica.

En este contexto, si consideramos una secuencia como "FoodMarket", que ha sido codificada utilizando CABAC, la curva de tasa-distorsión resultante será similar a la de un método de codificación diferente, como CAVLC, pero desplazada hacia la parte superior izquierda. Esto significa que, para cualquier valor de bitrate o tamaño de archivo, la versión codificada con CABAC ofrecerá una calidad superior. De igual manera, para un valor de calidad específico, como 95, la versión CABAC requerirá un bitrate menor y, por lo tanto, un tamaño de archivo más pequeño. Al comparar ambas curvas, es evidente que CABAC proporciona un rendimiento superior en este caso específico en comparación con CAVLC.

Un análisis adicional se puede realizar con secuencias de video en alta definición, como la "HD Pedestrian Area". Aunque ambas curvas siguen la misma forma general, su desplazamiento hacia la izquierda indica una reducción en el tamaño de los archivos, lo cual es esperable debido al tamaño de fotograma más pequeño en comparación con un clip 4K. Esto también confirma que el uso de CABAC en la codificación de H.264 proporciona una compresión más eficiente que CAVLC en estos clips, aunque la diferencia de rendimiento general no es tan clara.

Para medir de manera más precisa las diferencias de rendimiento entre dos conjuntos de curvas de tasa-distorsión, se utilizan las métricas Delta de Bjøntegaard (BD-Rate y BD-Quality). Estas métricas permiten calcular el promedio de la diferencia en bitrate y calidad entre dos métodos de codificación. El proceso se realiza ajustando una curva a cada conjunto de puntos, calculando el área entre las curvas, y luego obteniendo las diferencias promedio en cuanto a bitrate (BD-Rate) y calidad (BD-Quality). Estas métricas son ampliamente usadas para evaluar las ganancias de rendimiento de nuevos métodos de codificación de video.

El rendimiento de un códec de video, en última instancia, se encuentra en una continua negociación entre la compresión (tamaño del archivo o bitrate), la calidad decodificada y la complejidad computacional. Optimizar este equilibrio es un desafío intrincado. Las operaciones que se repiten frecuentemente, como el codificado de entropía CABAC, el procesamiento de coeficientes de bloque y la predicción, tienen un impacto considerable en la eficiencia computacional. En cambio, las operaciones que ocurren con menor frecuencia, como el procesamiento de conjuntos de parámetros, afectan en menor medida la complejidad computacional.

Al codificar unidades básicas como macrobloques o CTU, el codificador tiene muchas decisiones que tomar, como los tamaños de bloque para predicción, transformación y codificación, la elección de modos de predicción y parámetros, el valor de QP, y los parámetros de filtrado. Un codificador debe hacer estas elecciones dentro de las limitaciones computacionales disponibles. Esto significa que la complejidad computacional del proceso de codificación de video puede variar significativamente, desde la codificación en tiempo real en dispositivos móviles con capacidades limitadas hasta codificación fuera de línea en plataformas más potentes.

La decodificación de video, por otro lado, es menos flexible en cuanto a las decisiones tomadas durante la codificación. Una vez que el bitstream ha sido codificado, el decodificador tiene que procesarlo de acuerdo con las elecciones que ya han sido realizadas. Los códecs de video vienen con perfiles y niveles que establecen límites superiores para la complejidad computacional y los requisitos de memoria de los decodificadores. Por ejemplo, un bitstream codificado con el perfil principal H.265 en el nivel 2 tiene límites bien definidos sobre la cantidad de cómputo que será necesario para decodificarlo en tiempo real.

El proceso de optimización de la tasa-distorsión, o la mejora del rendimiento del códec, se realiza ajustando decisiones como el tamaño de los bloques de predicción, los modos de predicción, el valor de QP, y otros parámetros del codificador. Ajustar estos parámetros afecta cómo se ubica un punto específico en la curva de tasa-distorsión. Por ejemplo, al cambiar de un ajuste de codificación "Medium" a uno "Very Slow", sin alterar el valor de QP, la calidad del video tiende a mejorar y el tamaño del archivo tiende a reducirse. Esto moverá el punto de la curva hacia arriba y hacia la izquierda, logrando una mejor relación calidad-bitrate. Si, por el contrario, se cambia a un ajuste "Very Fast", la calidad tiende a disminuir y el tamaño del archivo aumenta, desplazando el punto hacia abajo y hacia la derecha.

El rendimiento de codificación óptimo o cercano a óptimo se representa mediante una curva de tasa-distorsión que esté lo más arriba y a la izquierda posible dentro de las limitaciones de un códec determinado. Este "caso ideal" se describe como el envolvente cóncavo de la curva de tasa-distorsión, que es la mejor representación de la relación calidad-bitrate que se puede lograr con ese códec. En la práctica, alcanzar este rendimiento ideal es muy difícil, y las decisiones prácticas de codificación generalmente resultan en puntos subóptimos. Sin embargo, un buen rendimiento se logra cuando la curva de tasa-distorsión se acerca lo más posible a esta envolvente cóncava, logrando así la mejor calidad con el menor tamaño de archivo posible.

¿Cómo mejora VVC la predicción inter en comparación con HEVC?

El estándar VVC introduce varias mejoras significativas en los procesos de predicción inter en comparación con el anterior HEVC. Estas mejoras, enfocadas en la optimización de la predicción de movimiento, permiten una mayor precisión en la representación del movimiento y una reducción en el tamaño de los archivos codificados, al mismo tiempo que mantienen o incluso mejoran la calidad visual de los videos.

En el VVC, los bloques de codificación (CU) pueden ser cuadrados o rectangulares, con proporciones que incluyen 1:1, 1:2 y 1:4. Esta flexibilidad permite una representación más precisa de las variaciones de movimiento dentro de una escena. Una característica importante del VVC es que un CU cuadrado N×N puede dividirse en dos particiones triangulares, cada una de las cuales se codifica con un índice de fusión de predicción inter separado. Este enfoque permite capturar variaciones de movimiento más complejas dentro de una misma unidad de codificación.

Una de las mejoras más destacadas es el modo de fusión extendido. En el HEVC, los candidatos para la predicción de movimiento se seleccionaban de una lista limitada de vectores de movimiento vecinos. En el VVC, la lista de candidatos puede incluir hasta seis elementos por CU, que pueden ser vectores de movimiento de vecinos espaciales, vectores de movimiento de vecinos temporales co-localizados, vectores de movimiento de un búfer de historial y, en algunos casos, vectores de movimiento nulos. Además, es posible aplicar un pequeño desplazamiento a un candidato de fusión, lo que aumenta la flexibilidad y la precisión de la predicción.

Otro avance importante es la predicción de movimiento compensada afín, que permite modelar el movimiento de un CU utilizando dos o tres vectores de control. Estos vectores describen el movimiento en las esquinas de un bloque y permiten extrapolar los vectores de movimiento de sub-bloques de 4×4. Al agregar un tercer vector de control, se obtiene un control más preciso sobre los vectores de movimiento, lo que mejora aún más la calidad de la predicción en escenas con movimiento complejo. En este caso, la compensación de movimiento no es simplemente translacional, sino que se ajusta utilizando una ecuación de flujo óptico, lo que suaviza las discontinuidades entre los vectores de movimiento de los bloques 4×4 y mejora la coherencia del movimiento entre las distintas áreas de la imagen.

En cuanto a la predicción bidireccional, VVC introduce varias mejoras en relación con HEVC. Por ejemplo, se puede derivar un par de imágenes de referencia a distancias temporales iguales hacia adelante y hacia atrás, lo que permite una predicción más precisa. También se pueden aplicar factores de peso en la predicción, otorgando mayor o menor peso a las referencias de las listas de predicción, lo que permite una mayor flexibilidad en la representación de escenas con movimientos complejos.

Además, VVC mejora la resolución de los vectores de movimiento mediante la interpolación subpíxel. Para los CUs inter-codificados que no utilizan el modo afín, los vectores de movimiento pueden tener resoluciones de ¼ de muestra, ½ de muestra o muestras enteras. La resolución de ¼ de muestra, por ejemplo, se logra mediante un filtro de ocho taps, lo que permite una mayor precisión en la representación del movimiento.

En resumen, las mejoras de VVC en la predicción inter permiten una mayor precisión en la estimación del movimiento, lo que se traduce en una mejor calidad visual y una mayor eficiencia de compresión. Estas innovaciones hacen que el VVC sea más adecuado para la codificación de videos de alta calidad, especialmente en aplicaciones como la transmisión de video en 4K y 8K, donde el detalle y la precisión en la predicción del movimiento son fundamentales para obtener una calidad visual óptima con un tamaño de archivo manejable.

El VVC también ofrece una flexibilidad significativa en términos de las resoluciones de los vectores de movimiento, lo que permite ajustar el nivel de detalle en la predicción de movimiento según las necesidades específicas de la escena. Este tipo de adaptabilidad es crucial para la codificación de video de alta eficiencia, ya que permite a los codificadores optimizar tanto la calidad visual como el tamaño de los archivos en función del contenido específico que se está procesando.