한국   대만   중국   일본 
H.264/MPEG-4 AVC - Wikipedia, la enciclopedia libre Ir al contenido

H.264/MPEG-4 AVC

De Wikipedia, la enciclopedia libre
(Redirigido desde ≪ H.264 ≫)
H.264/MPEG-4 AVC

Diagrama en bloques de la capa de codificacion de video del codificador H.264
Nombre completo Codificacion de video avanzada para los servicios audiovisuales genericos
Tipo de estandar recomendacion ITU-T
Estado En vigor
Fundacion Mayo de 2003
Ultima version Junio de 2019
Organizacion UIT
Administracion UIT-T
Licencia Libre
Abreviacion H.264/MPEG-4 AVC
Sitio web https://www.itu.int/rec/T-REC-H.264/es

H.264 o MPEG-4 parte 10 es una norma que define un codec de video de alta compresion, desarrollada conjuntamente por el ITU-T Video Coding Experts Group (VCEG) y el ISO / IEC Moving Picture Experts Group ( MPEG ). La intencion del proyecto H.264/AVC fue la de crear un estandar capaz de proporcionar una buena calidad de imagen con tasas binarias notablemente inferiores a los estandares previos (MPEG-2, H.263 o MPEG-4 parte 2), ademas de no incrementar la complejidad de su diseno. [ 1 ]

Para garantizar un agil desarrollo de la misma, la ITU-T y la ISO/IEC acordaron unirse para desarrollar conjuntamente la siguiente generacion de codecs de video. El Joint Video Team (JVT) estaba formado por expertos del VCEG y MPEG y nacio en diciembre de 2001 con el objetivo de completar el desarrollo tecnico del estandar hacia 2003. La ITU-T planeo adoptar el estandar bajo el nombre de ITU-T H.264 e ISO/IEC bajo el nombre de MPEG-4 Parte 10 Codec de Video Avanzado (AVC) y de aqui surgio el nombre hibrido de H.264/MPEG-4 AVC. Para empezar a programar el codigo del nuevo estandar adoptaron las siguientes premisas:

  • La estructura DCT + Compensacion de Movimiento de las versiones anteriores era superior a otros estandares y por esto no habia ninguna necesidad de hacer cambios fundamentales en la estructura.
  • Algunas formas de codificacion de video que habian sido excluidas en el pasado debido a su complejidad y su alto coste de implementacion se volverian a examinar para su inclusion puesto que la tecnologia VLSI habia sufrido un adelanto considerable y una bajada de costes de implementacion.
  • Para permitir una libertad maxima en la codificacion y evitar restricciones que comprometan la eficiencia, no se contempla mantener la compatibilidad con normas anteriores.

Caracteristicas [ editar ]

El uso inicial del MPEG-4 AVC estuvo enfocado hacia el video 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 codec en ambientes profesionales que exigen resoluciones mas elevadas, necesitan mas de 8 bits/muestra y un muestreo de 4:4:4 o 4:2:2, funciones para la mezcla de escenas, tasas binarias mas elevadas, poder representar algunas partes de video sin perdidas y utilizar el sistema de color por componentes RGB. Por este motivo surgio la necesidad de programar unas extensiones que soportasen esta demanda. Tras un ano de trabajo intenso surgieron las “extensiones de gama de fidelidad” ( FRExt ) que incluian:

  • Sustento de un tamano de transformada adaptativo.
  • Sustento de una cuantificacion con matrices escaladas.
  • Sustento de una representacion eficiente sin perdidas de regiones especificas.

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

  • La extension High que admite 4:2:0 hasta 8 bits/muestra.
  • La extension High-10 que admite 4:2:0 hasta 10 bits/muestra.
  • La extension High 4:2:2 que admite hasta 4:2:2 y 10 bits/muestra.
  • La extension High 4:4:4 que admite hasta 4:4:4 y 12 bits/muestra y la codificacion de regiones sin perdidas.

A continuacion podemos ver una tabla con mas especificaciones sobre estos perfiles en contraste con el perfil original:

Original High High 10 High 4:2:2 High 4:4:4
slices I y P SI SI SI SI SI
slices B NO SI SI SI SI
slices SI y SP NO NO NO NO NO
imagenes de referencia multiples SI SI SI SI SI
filtro "deblocking" SI SI SI SI SI
codificacion CAVLC SI SI SI SI SI
codificacion CABAC NO SI SI SI SI
ordenacion flexible de macrobloques (FMO) SI NO NO NO NO
ordenacion arbitraria de slices (ASO) SI NO NO NO NO
slices redundantes (RS) SI NO NO NO NO
particion de datos (DP) NO NO NO NO NO
codificacion entrelazada NO SI SI SI SI
formato 4:2:0 SI SI SI SI SI
formato monocromo (4:0:0) NO SI SI SI SI
formato 4:2:2 NO NO NO SI SI
formato 4:4:4 NO NO NO NO SI
8 Bits/pixel SI SI SI SI SI
9 y 10 Bits/pixel NO NO SI SI SI
11 y 12 Bits/pixel NO NO NO NO SI
transformada 8x8 NO SI SI SI SI
matrices de cuantificacion NO SI SI SI SI
cuantificacion Cb y Cr separadas NO SI SI SI SI
codificacion sin perdidas NO NO NO NO SI
Original High High 10 High 4:2:2 High 4:4:4

Niveles [ editar ]

Numero de nivel Max. macrobloques por segundo Max. tamano de trama (macrobloques) Max. video bit rate (VCL) para Baseline, Extended and Main Profiles Max. video bit rate (VCL) para High Profile Max. video bit rate (VCL) para High 10 Profile Max. video bit rate (VCL) para High 4:2:2 and High 4:4:4 Predictive Profiles Ejemplos para resolucion@
tasa de cuadros
(max cuadros almac.
en el nivel)
1 1485 99 64 kbit/s 80 kbit/s 192 kbit/s 256 kbit/s 128x96@30,9 (8)
176x144@15 (4)
1b 1485 99 128 kbit/s 160 kbit/s 384 kbit/s 512 kbit/s 128x96@30,9 (8)
176x144@15 (4)
1.1 3000 396 192 kbit/s 240 kbit/s 576 kbit/s 768 kbit/s 176x144@30,3 (9)
320x240@10 (3)
352x288@7,5 (2)
1.2 6000 396 384 kbit/s 480 kbit/s 1152 kbit/s 1536 kbit/s 320x240@20 (7)
352x288@15,2 (6)
1.3 11880 396 768 kbit/s 960 kbit/s 2304 kbit/s 3072 kbit/s 320x240@36 (7)
352x288@30 (6)
2 11880 396 2 Mbit/s 2.5 Mbit/s 6 Mbit/s 8 Mbit/s 320x240@36 (7)
352x288@30 (6)
2.1 19800 792 4 Mbit/s 5 Mbit/s 12 Mbit/s 16 Mbit/s 352x480@30 (7)
352x576@25 (6)
2.2 20250 1620 4 Mbit/s 5 Mbit/s 12 Mbit/s 16 Mbit/s 352x480@30,7(10)
352x576@25,6 (7)
720x480@15 (6)
720x576@12,5 (5)
3 40500 1620 10 Mbit/s 12,5 Mbit/s 30 Mbit/s 40 Mbit/s 352x480@61,4 (12)
352x576@51,1 (10)
720x480@30 (6)
720x576@25 (5)
3.1 108000 3600 14 Mbit/s 17,5 Mbit/s 42 Mbit/s 56 Mbit/s 720x480@80 (13)
720x576@66 (11)
1280x720@30 (5)
3.2 216000 5120 20 Mbit/s 25 Mbit/s 60 Mbit/s 80 Mbit/s 1280x720@60 (5)
1280x1024@42 (4)
4 245760 8192 20 Mbit/s 25 Mbit/s 60 Mbit/s 80 Mbit/s 1280x720@68,3 (9)
1920x1080@30,1 (4)
2048x1024@30 (4)
4.1 245760 8192 50 Mbit/s 62,5 Mbit/s 150 Mbit/s 200 Mbit/s 1280x720@68,3 (9)
1920x1080@30,1 (4)
2048x1024@30 (4)
4.2 522240 8704 50 Mbit/s 62,5 Mbit/s 150 Mbit/s 200 Mbit/s 1920x1080@64 (4)
2048x1080@60 (4)
5 589824 22080 135 Mbit/s 168,75 Mbit/s 405 Mbit/s 540 Mbit/s 1920x1080@72,3 (13)
2048x1024@72 (13)
2048x1080@67,8 (12)
2560x1920@30,7 (5)
3680x1536/26,7 (5)
5.1 983040 36864 240 Mbit/s 300 Mbit/s 720 Mbit/s 960 Mbit/s 1920x1080@120,5 (16)
4096x2048@30 (5)
4096x2304@26,7 (5)
5.2 2073600 36864 240 Mbit/s 300 Mbit/s 720 Mbit/s 960 Mbit/s 1920×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)
Numero de niveles Max. macrobloques por segundo Max. tamano de trama (macrobloques) Max. video bit rate (VCL) for Baseline, Extended and Main Profiles Max. video bit rate (VCL) for High Profile Max. video bit rate (VCL) for High 10 Profile Max. video bit rate (VCL) for High 4:2:2 and High 4:4:4 Predictive Profiles Ejemplos para resolucion@
tasa de cuadros
(max cuadros almac.
en el nivel)

Nuevas especificaciones [ editar ]

H.264/MPEG-4 AVC no supone una gran tecnologia con respecto a las normas de codificacion de video anteriores. Las diferencias se pueden encontrar a pequena escala sobre el principio general de codificacion (prediccion, transformada, cuantificacion, etc.). La clave de todo ello es la menor cuantia de informacion que se necesita almacenar en los videos codificados mediante este codec.

Tipos de imagenes [ editar ]

Podemos encontrar las mismas imagenes que en las normas precedentes ( Imagenes I, P y B ) y dos nuevas, la SP ( Switching P ) y la SI ( Switching I ) que sirven para codificar la transicion entre dos flujos de video. Permiten, sin enviar imagenes intra muy costosas en tiempos de procesamiento, pasar de un video a otro utilizando prediccion temporal o espacial como antes, pero con la ventaja que permiten la reconstruccion de valores especificos exactos de la muestra aunque se utilicen imagenes de referencia diferentes o un numero diferente de imagenes de referencia en el proceso de prediccion.

Compensacion de movimiento [ editar ]

El proceso de compensacion 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 compensacion de movimiento, cada macrobloque, aparte del tamano original (16x16 pixeles), puede ser descompuesto en subbloques de 16 x 8, 8 x 16 u 8 x 8 pixeles. En este ultimo caso, es posible descomponer a su vez cada subbloque de 8 x 8 pixeles en particiones de 8 x 4, 4 x 8 o 4 x 4 pixeles. Antes, el estandar mas novedoso introducia particiones de 8x8. Esta variedad de particiones proporciona una mayor exactitud en la estimacion, a lo que se suma una precision que puede llegar hasta un cuarto de pixel.

Transformada [ editar ]

Es una aproximacion a la DCT (transformada discreta del coseno) que viene utilizandose en video pero con las siguientes particularidades:

  • Tamano: 4x4 pixeles (8x8 en los perfiles FRExt).
  • Coeficientes enteros: lo que permite evitar los errores de redondeo habituales en la DCT clasica (coeficientes irracionales) y garantizar un ajuste perfecto entre la transformacion directa y la inversa.
  • Precision finita: Otra consecuencia favorable de la caracteristica anterior es que se puede calcular sin exceder los 16 bits de precision.
  • Eficiencia: Se puede implementar exclusivamente por medio de sumas y desplazamientos binarios.
Ejemplo de matrices de transformacion

Cuantificacion [ editar ]

Cada paso del parametro de cuantificacion (QP) incrementa un 12,5% el intervalo de cuantificacion, lo que equivale a duplicarlo por cada 6 pasos. El rango dinamico del QP ha aumentado respecto a normas precedentes, puesto que los valores van de 0 a 51. Los macrobloques se cuantifican utilizando un parametro de control que puede cambiar adaptandose al bloque por cada bit adicional (partiendo de 8 bits, 52 pasos). Ademas, para poder conseguir los mejores resultados visuales la cuantificacion de la crominancia es mas esmerada que la de luminancia.

Filtro de "deblocking" [ editar ]

H.264 tambien integra un filtro antibloques que mejora la eficacia de compresion y la calidad visual de las secuencias de video eliminando efectos indeseables de la codificacion como por ejemplo el efecto de bloques.

Exploracion de los coeficientes [ editar ]

Existen dos modos de exploracion de los coeficientes transformados: "zig-zag" y "zig-zag inverso". El segundo modo de exploracion permite en particular la lectura del macrobloque en sentido contrario para poder funcionar con la codificacion entropica adaptativa.

Codificacion entropica [ editar ]

La codificacion entropica se puede realizar de tres formas diferentes. Un primer metodo utilizado es el conocido UVLC (Universal Variable Length Coding). Este tipo de codificacion es utilizado para codificar la gran mayoria de los elementos de sincronizacion y cabeceras. Los otros dos metodos son utilizados para codificar buena parte del resto de elementos sintacticos (coeficientes, vectores de movimiento). Las codificaciones utilizadas para esta tarea estan 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
Simbolo Codigo
0 1
1 010
2 011
3 00100
4 00101
5 00110
6 00111
7 0001000
8 0001001
... ...

Adaptacion a la red [ editar ]

Conceptualmente los algoritmos estan divididos en dos capas: una primera capa de codificacion de video VCL (Video Coding Layer) que se ocupa de representar eficazmente el contenido de video y una capa de adaptacion a la red NAL (Network Abstraction Layer) que esta dirigida mas particularmente a adaptar el formato de datos de video al soporte de transmision.

Algoritmos para la prevencion de perdidas [ editar ]

FMO y ASO [ editar ]

La ordenacion flexible de macrobloques ( FMO ) y la ordenacion arbitraria de slices ( ASO ) son tecnicas para reestructurar la representacion de las regiones fundamentales (macrobloques) aunque tambien pueden ser utilizadas para otros objetivos.

DP [ editar ]

La particion de datos (DP) proporciona la capacidad de separar los elementos de sintaxis mas importantes de los menos importantes en paquetes de datos diferentes, permitiendo el uso de proteccion de error desigual ( UEP ).

RS [ editar ]

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

Vease tambien [ editar ]

Referencias [ editar ]

  1. ≪H.264 : Codificacion de video avanzada para los servicios audiovisuales genericos≫ . www.itu.int . Archivado desde el original el 27 de julio de 2021 . Consultado el 10 de agosto de 2021 .  

Enlaces externos [ editar ]