H.264/MPEG-4 AVC

formato de vídeo comprimido
(Redirigido desde «H.264»)

H.264 o MPEG-4 parte 10 es una norma que define un códec de vídeo de alta compresión, desarrollada conjuntamente por el ITU-T Video Coding Experts Group (VCEG) y el ISO/IEC Moving Picture Experts Group (MPEG). La intención del proyecto H.264/AVC fue la de crear un estándar capaz de proporcionar una buena calidad de imagen con tasas binarias notablemente inferiores a los estándares previos (MPEG-2, H.263 o MPEG-4 parte 2), además de no incrementar la complejidad de su diseño.[1]

H.264/MPEG-4 AVC

Diagrama en bloques de la capa de codificación de video del codificador H.264
Nombre completoCodificación de vídeo avanzada para los servicios audiovisuales genéricos
Tipo de estándarrecomendación ITU-T
EstadoEn vigor
FundaciónMayo de 2003
Última versiónJunio de 2019
OrganizaciónUIT
AdministraciónUIT-T
LicenciaLibre
AbreviaciónH.264/MPEG-4 AVC
Sitio webhttps://www.itu.int/rec/T-REC-H.264/es

Para garantizar un ágil desarrollo de la misma, la ITU-T y la ISO/IEC acordaron unirse para desarrollar conjuntamente la siguiente generación de códecs de vídeo. El Joint Video Team (JVT) estaba formado por expertos del VCEG y MPEG y nació en diciembre de 2001 con el objetivo de completar el desarrollo técnico del estándar hacia 2003. La ITU-T planeó adoptar el estándar bajo el nombre de ITU-T H.264 e ISO/IEC bajo el nombre de MPEG-4 Parte 10 Códec de Vídeo Avanzado (AVC) y de aquí surgió el nombre híbrido de H.264/MPEG-4 AVC. Para empezar a programar el código del nuevo estándar adoptaron las siguientes premisas:

  • La estructura DCT + Compensación de Movimiento de las versiones anteriores era superior a otros estándares y por esto no había ninguna necesidad de hacer cambios fundamentales en la estructura.
  • Algunas formas de codificación de vídeo que habían sido excluidas en el pasado debido a su complejidad y su alto coste de implementación se volverían a examinar para su inclusión puesto que la tecnología VLSI había sufrido un adelanto considerable y una bajada de costes de implementación.
  • Para permitir una libertad máxima en la codificación y evitar restricciones que comprometan la eficiencia, no se contempla mantener la compatibilidad con normas anteriores.

Características

El uso inicial del MPEG-4 AVC estuvo enfocado hacia el vídeo de baja calidad para videoconferencia y aplicaciones por Internet, basado en 8 bits/muestra y con un muestreo ortogonal de 4:2:0. Esto no daba salida al uso de este códec en ambientes profesionales que exigen resoluciones más elevadas, necesitan más de 8 bits/muestra y un muestreo de 4:4:4 o 4:2:2, funciones para la mezcla de escenas, tasas binarias más elevadas, poder representar algunas partes de video sin pérdidas y utilizar el sistema de color por componentes RGB. Por este motivo surgió la necesidad de programar unas extensiones que soportasen esta demanda. Tras un año de trabajo intenso surgieron las “extensiones de gama de fidelidad” (FRExt) que incluían:

  • Sustento de un tamaño de transformada adaptativo.
  • Sustento de una cuantificación con matrices escaladas.
  • Sustento de una representación eficiente sin pérdidas de regiones específicas.

Este conjunto de extensiones denominadas de "perfil alto" son:

  • La extensión High que admite 4:2:0 hasta 8 bits/muestra.
  • La extensión High-10 que admite 4:2:0 hasta 10 bits/muestra.
  • La extensión High 4:2:2 que admite hasta 4:2:2 y 10 bits/muestra.
  • La extensión High 4:4:4 que admite hasta 4:4:4 y 12 bits/muestra y la codificación de regiones sin pérdidas.

A continuación podemos ver una tabla con más especificaciones sobre estos perfiles en contraste con el perfil original:

OriginalHighHigh 10High 4:2:2High 4:4:4
slices I y P
slices BNO
slices SI y SPNONONONONO
imágenes de referencia múltiples
filtro "deblocking"
codificación CAVLC
codificación CABACNO
ordenación flexible de macrobloques (FMO)NONONONO
ordenación arbitraria de slices (ASO)NONONONO
slices redundantes (RS)NONONONO
partición de datos (DP)NONONONONO
codificación entrelazadaNO
formato 4:2:0
formato monocromo (4:0:0)NO
formato 4:2:2NONONO
formato 4:4:4NONONONO
8 Bits/píxel
9 y 10 Bits/píxelNONO
11 y 12 Bits/píxelNONONONO
transformada 8x8NO
matrices de cuantificaciónNO
cuantificación Cb y Cr separadasNO
codificación sin pérdidasNONONONO
OriginalHighHigh 10High 4:2:2High 4:4:4

Niveles

Número de nivelMáx. macrobloques por segundoMáx. tamaño de trama (macrobloques)Máx. video bit rate (VCL) para Baseline, Extended and Main ProfilesMáx. video bit rate (VCL) para High ProfileMáx. video bit rate (VCL) para High 10 ProfileMáx. video bit rate (VCL) para High 4:2:2 and High 4:4:4 Predictive ProfilesEjemplos para resolución@
tasa de cuadros
(máx cuadros almac.
en el nivel)
114859964 kbit/s80 kbit/s192 kbit/s256 kbit/s128x96@30,9 (8)
176x144@15 (4)
1b148599128 kbit/s160 kbit/s384 kbit/s512 kbit/s128x96@30,9 (8)
176x144@15 (4)
1.13000396192 kbit/s240 kbit/s576 kbit/s768 kbit/s176x144@30,3 (9)
320x240@10 (3)
352x288@7,5 (2)
1.26000396384 kbit/s480 kbit/s1152 kbit/s1536 kbit/s320x240@20 (7)
352x288@15,2 (6)
1.311880396768 kbit/s960 kbit/s2304 kbit/s3072 kbit/s320x240@36 (7)
352x288@30 (6)
2118803962 Mbit/s2.5 Mbit/s6 Mbit/s8 Mbit/s320x240@36 (7)
352x288@30 (6)
2.1198007924 Mbit/s5 Mbit/s12 Mbit/s16 Mbit/s352x480@30 (7)
352x576@25 (6)
2.22025016204 Mbit/s5 Mbit/s12 Mbit/s16 Mbit/s352x480@30,7(10)
352x576@25,6 (7)
720x480@15 (6)
720x576@12,5 (5)
340500162010 Mbit/s12,5 Mbit/s30 Mbit/s40 Mbit/s352x480@61,4 (12)
352x576@51,1 (10)
720x480@30 (6)
720x576@25 (5)
3.1108000360014 Mbit/s17,5 Mbit/s42 Mbit/s56 Mbit/s720x480@80 (13)
720x576@66 (11)
1280x720@30 (5)
3.2216000512020 Mbit/s25 Mbit/s60 Mbit/s80 Mbit/s1280x720@60 (5)
1280x1024@42 (4)
4245760819220 Mbit/s25 Mbit/s60 Mbit/s80 Mbit/s1280x720@68,3 (9)
1920x1080@30,1 (4)
2048x1024@30 (4)
4.1245760819250 Mbit/s62,5 Mbit/s150 Mbit/s200 Mbit/s1280x720@68,3 (9)
1920x1080@30,1 (4)
2048x1024@30 (4)
4.2522240870450 Mbit/s62,5 Mbit/s150 Mbit/s200 Mbit/s1920x1080@64 (4)
2048x1080@60 (4)
558982422080135 Mbit/s168,75 Mbit/s405 Mbit/s540 Mbit/s1920x1080@72,3 (13)
2048x1024@72 (13)
2048x1080@67,8 (12)
2560x1920@30,7 (5)
3680x1536/26,7 (5)
5.198304036864240 Mbit/s300 Mbit/s720 Mbit/s960 Mbit/s1920x1080@120,5 (16)
4096x2048@30 (5)
4096x2304@26,7 (5)
5.2207360036864240 Mbit/s300 Mbit/s720 Mbit/s960 Mbit/s1920×1080@172 (16)
2560×1920@108 (9)
3840×2160@66,8 (5)
4096×2048@63,3 (5)
4096×2160@60 (5)
4096×2304@56,3 (5)
Número de nivelesMáx. macrobloques por segundoMáx. tamaño de trama (macrobloques)Máx. video bit rate (VCL) for Baseline, Extended and Main ProfilesMáx. video bit rate (VCL) for High ProfileMáx. video bit rate (VCL) for High 10 ProfileMáx. video bit rate (VCL) for High 4:2:2 and High 4:4:4 Predictive ProfilesEjemplos para resolución@
tasa de cuadros
(máx cuadros almac.
en el nivel)

Nuevas especificaciones

H.264/MPEG-4 AVC no supone una gran tecnología con respecto a las normas de codificación de vídeo anteriores. Las diferencias se pueden encontrar a pequeña escala sobre el principio general de codificación (predicción, transformada, cuantificación, etc.). La clave de todo ello es la menor cuantía de información que se necesita almacenar en los videos codificados mediante este códec.

Tipos de imágenes

Podemos encontrar las mismas imágenes que en las normas precedentes (Imágenes I, P y B) y dos nuevas, la SP (Switching P) y la SI (Switching I) que sirven para codificar la transición entre dos flujos de vídeo. Permiten, sin enviar imágenes intra muy costosas en tiempos de procesamiento, pasar de un vídeo a otro utilizando predicción temporal o espacial como antes, pero con la ventaja que permiten la reconstrucción de valores específicos exactos de la muestra aunque se utilicen imágenes de referencia diferentes o un número diferente de imágenes de referencia en el proceso de predicción.

Compensación de movimiento

El proceso de compensación de movimiento es diferente de las normas precedentes puesto que propone una gran variedad de formas y de particiones de bloques. De cara a la compensación de movimiento, cada macrobloque, aparte del tamaño original (16x16 píxeles), puede ser descompuesto en subbloques de 16 x 8, 8 x 16 u 8 x 8 píxeles. En este último caso, es posible descomponer a su vez cada subbloque de 8 x 8 píxeles en particiones de 8 x 4, 4 x 8 o 4 x 4 píxeles. Antes, el estándar más novedoso introducía particiones de 8x8. Esta variedad de particiones proporciona una mayor exactitud en la estimación, a lo que se suma una precisión que puede llegar hasta un cuarto de píxel.

Transformada

Es una aproximación a la DCT (transformada discreta del coseno) que viene utilizándose en vídeo pero con las siguientes particularidades:

  • Tamaño: 4x4 píxeles (8x8 en los perfiles FRExt).
  • Coeficientes enteros: lo que permite evitar los errores de redondeo habituales en la DCT clásica (coeficientes irracionales) y garantizar un ajuste perfecto entre la transformación directa y la inversa.
  • Precisión finita: Otra consecuencia favorable de la característica anterior es que se puede calcular sin exceder los 16 bits de precisión.
  • Eficiencia: Se puede implementar exclusivamente por medio de sumas y desplazamientos binarios.
Ejemplo de matrices de transformación

Cuantificación

Cada paso del parámetro de cuantificación (QP) incrementa un 12,5% el intervalo de cuantificación, lo que equivale a duplicarlo por cada 6 pasos. El rango dinámico del QP ha aumentado respecto a normas precedentes, puesto que los valores van de 0 a 51. Los macrobloques se cuantifican utilizando un parámetro de control que puede cambiar adaptándose al bloque por cada bit adicional (partiendo de 8 bits, 52 pasos). Además, para poder conseguir los mejores resultados visuales la cuantificación de la crominancia es más esmerada que la de luminancia.

Filtro de "deblocking"

H.264 también integra un filtro antibloques que mejora la eficacia de compresión y la calidad visual de las secuencias de vídeo eliminando efectos indeseables de la codificación como por ejemplo el efecto de bloques.

Exploración de los coeficientes

Existen dos modos de exploración de los coeficientes transformados: "zig-zag" y "zig-zag inverso". El segundo modo de exploración permite en particular la lectura del macrobloque en sentido contrario para poder funcionar con la codificación entrópica adaptativa.

Codificación entrópica

La codificación entrópica se puede realizar de tres formas diferentes. Un primer método utilizado es el conocido UVLC (Universal Variable Length Coding). Este tipo de codificación es utilizado para codificar la gran mayoría de los elementos de sincronización y cabeceras. Los otros dos métodos son utilizados para codificar buena parte del resto de elementos sintácticos (coeficientes, vectores de movimiento). Las codificaciones utilizadas para esta tarea están basadas en VLC (Variable Length Coding) de forma adaptativa, de este concepto nace el CAVLC (Context Adaptative Variable Length Coding) y el CABAC (Context Adaptative Binary Arithmetic Coding).

Universal Variable Length Code
SímboloCódigo
01
1010
2011
300100
400101
500110
600111
70001000
80001001
......

Adaptación a la red

Conceptualmente los algoritmos están divididos en dos capas: una primera capa de codificación de vídeo VCL (Video Coding Layer) que se ocupa de representar eficazmente el contenido de vídeo y una capa de adaptación a la red NAL (Network Abstraction Layer) que está dirigida más particularmente a adaptar el formato de datos de vídeo al soporte de transmisión.

Algoritmos para la prevención de pérdidas

FMO y ASO

La ordenación flexible de macrobloques (FMO) y la ordenación arbitraria de slices (ASO) son técnicas para reestructurar la representación de las regiones fundamentales (macrobloques) aunque también pueden ser utilizadas para otros objetivos.

DP

La partición de datos (DP) proporciona la capacidad de separar los elementos de sintaxis más importantes de los menos importantes en paquetes de datos diferentes, permitiendo el uso de protección de error desigual (UEP).

RS

El algoritmo de slices redundantes (RS) permite a un codificador enviar una representación suplementaria de una región de imagen que puede ser usada si la representación primaria es corrompida o perdida.

Véase también

Referencias

Enlaces externos