Técnicas para la difusión de vídeo 1. Introducción. 2. Control de flujo. 2.1 Cuantización variable 2.2 Resolución reducida 2.3 Codificación multinivel Transmisión de Datos Multimedia/ATC/2004-2005 Bibliografía [SAD02] “Compressed video communications” [FLU95] "Understanding networked multimedia“ Introducción. Desde el punto de vista de la red: Un stream de vídeo ha de ser “paquetizado” para su transporte. La pérdida de paquetes implica una degradación de la calidad de vídeo que observa el destinatario. Es por ello que resulte de interés el estudio de técnicas que protejan el vídeo en su viaje al destino y que los errores detectados puedan ser “ocultados” al usuario final Video resilience. Transmisión de Datos Multimedia/ATC/2004-2005 Desde el punto de vista del transporte de vídeo en sistemas y redes heterogéneos: Interoperabilidad de distintos codecs con bitstreams incompatibles en la red heterogeneous transcoding. Posibilidad de cambiar los parámetros de codificación (i.e. bitrate) de un mismo codec homogeneous transcoding. Desde el punto de vista de la aplicación: Las redes (i.e. Internet) tienen un comportamiento muy variable e impredecible en relación al ancho de banda disponible. Por ello, con el fin de optimizar el uso de recursos disponibles en la red y maximizar la calidad de vídeo entregada al destinatario, se requieren mecanismos de control de flujo extremo-a-extremo. 2 2. Control de flujo. Transmisión de Datos Multimedia/ATC/2004-2005 Las técnicas de control de flujo deberán regular el bitrate de salida para conseguir la mejor relación calidad/productividad. El control de flujo es una herramienta que al mismo tiempo nos permite prevenir situaciones de congestión en la red. Para que un sistema de control de flujo funcione es necesario obtener de la red información acerca del ancho de banda disponible en cada momento (i.e. RTCP receiver reports). Existen diferentes formas de realizar un control de flujo: Cuantización variable (Variable-quantization) Resolución reducida (Reduced resolution) Codificación multinivel (Multi-layer coding) Etc.. 3 Variabilidad del bitrate. los estándares de compresión de vídeo producen de forma natural un bitstream con tasa de bits variable. Transmisión de Datos Multimedia/ATC/2004-2005 Todos Se fija el valor de “Qp” para obtener una calidad constante. Por contra, se puede variar el Qp (MB, GOB o Frame) para conseguir una tasa de bits constante a costa de una variabilidad en la calidad. La variabilidad viene fijada por la actividad espacial y temporal de la secuencia de vídeo: Un MB de un cuadro P, no se codifica si es muy similar al MB del cuadro de referencia (dicho MB se codifica con el flag COD=1). Dependiendo de la cantidad de movimiento en la escena, el número de MB que NO se codifican varía Variando también el bitrate. La correlación entre los pixels de un bloque de 8x8, dicta el número de bits necesario para codificar los 64 coeficientes resultantes de la transformada. Junto con el valor de Qp determinará el número de coeficiente nulos que aparecen y que posteriormente serán codificados con VLC en flujos bits de tamaño variable. 4 Variabilidad del bitrate (II). Transmisión de Datos Multimedia/ATC/2004-2005 Codes Layers Variable length Picture Bit stuffing ESTUF, PSTUF Synchronization Addresing Quant. step size Administrative Spare Group of Blocks Bit Stuffing GSTUF Synchronization Addresing Administrative Quant. step size Macroblock Block Administrative Motion DCT Coefficients (except Intra DC terms) Fixed length MCBPC,MODB, CBPY MVD, MVD2-4, MVDB TCOEFF PSC(22), ECS(22) TR(8), TRB(3) PQUANT(5),DBQUANT(2) PTYPE(13),CPM(1),PSBI( 2) PEI(1), PSPARE(8) GBSC(17) GN(5) GSBI(2), GFID(2) GQUANT(5) Administrative Quant. step size COD(1), CBPB(6) DQUANT(2) DC terms of Intra DCT Coeff. INTRADC(8) Parámetros de longitud fija y variable en un stream de vídeo H.263 La contribución de los parámetros de longitud variable en el bitrate final es mucho mayor que los de longitud fija, a pesar de ser menos. 5 Tasa de bits constante. Transmisión de Datos Multimedia/ATC/2004-2005 Cuando al red ofrece un servicio de transporte de tipo CBR (i.e ATM), entonces podremos utilizar un control de flujo que proporcione una tasa de bits constante. Es necesario incluir un buffer entre el encoder y la red para suavizar las fluctuaciones del bitrate. Almacenar el video antes de enviarlo aumenta el retardo total ,siendo no aconsejable para servicios de entrega de vídeo interactivo. La técnica más común para controlar el flujo de salida del encoder es ajustar sus parámetros de configuración en función de la ocupación del buffer (feedback control). Por otro lado, también podemos regular el flujo con información acerca de la actividad del frame actual (feedforward). Picture activity Input Modify Encoder Params. Source Encoder Buffer status Buffer Output 6 Ajuste de parámetros de codificación. Transmisión de Datos Multimedia/ATC/2004-2005 Al controlar de flujo de salida de un encoder se debe llegar a un compromiso entre la calidad y la tasa de compresión. Cuando se trata de encoders basados en transformada por bloques, podemos jugar con varios parámetros: Tasa de cuadros (frame rate) Sólo usado cuando la calidad de cada cuadro no puede degradarse. Codificar sólo una parte del bloque de coeficientes (i.e. solo coeff. de baja frecuencia). El coeff. DC siempre debe estar presente. Cuando la información del movimiento es más importante que el detalle espacial Mantener la tasa de cuadros y modificar el parámetro de cuantización Qp. Incrementando Qp se obtendrán mas coeff. nulos, reduciendo los bits necesarios para codificar el bloque usando VLC El ajuste de Qp se puede hacer a nivel de un cuadro, GOB o MB. Umbral de detección de movimiento. Decide si un MB en un cuadro P es codificado o saltado (COD=1) Si aumentamos el umbral el encoder se hace menos sensible al movimiento Pocos MB se codifican Reducimos la tasa de bits. Umbral de codificación INTRA de un MB. Decide si un MB es codificado como INTRA (Mayor tasa de bits) o INTER. 7 2.1 Cuantización variable. El Transmisión de Datos Multimedia/ATC/2004-2005 mecanismo de control de flujo más utilizado es: Ajuste del valor de Qp del siguiente cuadro, GOB o MB, basándose en la ocupación actual del buffer (estado de la red). Sin embargo, estos mecanismos ofrecen resultados no predecibles y/o fluctuaciones severas del bitrate: Los distintos umbrales de cuantización (valores Qp) no afectan de forma lineal al bitrate de salida (figura 3.5 !!) El contenido de vídeo puede afectar a la cantidad de bits necesarios para codificar un frame. Para producir un bitrate estable es necesario emplear algoritmos más complejos, incorporando en muchos casos tanto feedback (buffer-based) como feed-forward control. Un ejemplo: TM5 Rate control algorithm (MPEG-2, H.263, …) Buffer-based http://www.mpeg.org/MPEG/MSSG/tm5/Overview.html 8 TM5 rate control algorithm (I). Transmisión de Datos Multimedia/ATC/2004-2005 Mecanismo que controla el bitrate calculando de forma adaptativa el valor de Qp para cada MB. Tres pasos: Paso 1: Estimación de la tasa de bits objetivo para el siguiente cuadro. Se realiza antes de codificar el cuadro Estima de la complejidad global, X, del siguiente cuadro (I, P o B) donde S indica el número de bits requeridos codificar el cuadro anterior, y Q es el i , p ,b i , p,b i , p ,b para valor de cuantización medio de todos los MBs El número de bits para el siguiente cuadro, T, se calcula en base al número de bits disponible para el resto del GOP actual, R, y a la complejidad. R se actualiza tras codificar cada frame (inicialmente R = 0) X =S ×Q – Si es el primer cuadro de un GOP (INTRA o I-frame): R= bitrate ×N p , b FrameRate R donde Np,b es el número de cuadros P y B que faltan por codificar en el GOP – Sino (cuadros P y B) R=R−S i , p ,b 9 TM5 rate control algorithm (II). Transmisión de Datos Multimedia/ATC/2004-2005 Paso 2: Cálculo del valor Qp de referencia para todos los MBs del cuadro (rate control) Esta basado en la idea de un buffer virtual. Antes de codificar el MBj (j>= 1), se calcula el nivel de llenado del buffer virtual (del cuadro actual I, P o B). T i , p ,b× i , p ,b i , p ,b d j =d 0 B j−1− MB_cnt j−1 d0 es el valor inicial de llenado del buffer Bj es el número de bits generados al codificar los MBs del cuadro hasta el MBj (incluido este) dj es el valor de llenado del buffer al codificar el MBj El valor final del buffer virtual (dji,p,b cuando j=MB_Cnt) se utiliza como valor de llenado inicial para el siguiente cuadro del mismo tipo. A continuación se calcula d j ×31el valor de referencia del cuantizador Qj para MBj: Qj= bitrate 2× framerate Paso 3: Determinación del valor del cuantizador (mquantj) de MBj. Cálculo de la actividad espacial de MBj: – Usando el valor de los pixels originales de los cuatro bloques de 8x8 de luminancia (n=1..4) y los cuatro bloques de 8x8 de luminancia de los pixels organizados por campos (n=5..8) 10 TM5 rate control algorithm (III). act j =1min vblk 1 , vblk 2 , .. . , vblk 8 Transmisión de Datos Multimedia/ATC/2004-2005 64 2 1 n vblk n = × ∑ P k −P_mean n 64 k =1 64 1 P_mean n= × ∑ P nk =DC n 64 k =1 Pkn son los valores de los pixels en el enésimo bloque de 8x8 Vblkn corresponde a la varianza de los pixels del enésimo bloque de 8x8 Actj es la actividad espacial del MBj A continuación se normaliza la actividad espacial: N_act j 2×act j avg_act = act j 2×avg_act avg_act es el valor medio de actj en el último cuadro codificado (para el primer cuadro se asigna el valor de 400). Por último, calcula el valor del cuantizador (mquantj) para MBj: mquant j =Q j ×N_act j El valor de mquantj se recorta para que entre en el intervalo [1,31] y se utilice como valor de cuantización de MBj. 11 2.2 Control de flujo Transmisión de Datos Multimedia/ATC/2004-2005 Resolución Reducida Codificación Multinivel Protección y ocultación de errores Transcodificación 12