H.264/MPEG-4 AVC

De Viquipèdia
Dreceres ràpides: navegació, cerca

H.264, o MPEG-4 part 10, és un còdec digital d'alta compressió estàndard desenvolupat durant quatre anys per l’ITU-T Video Coding Experts Group (VCEG) juntament amb l’ISO/IEC Moving Picture Experts Group (MPEG). La intenció del projecte H.264/AVC va ser la de crear un estàndard que fos capaç de desenvolupar una bona qualitat d'imatge amb bit rates substancialment menors que els estàndards anteriors (MPEG-2, H.263 o MPEG-4 part 2). A més a més de no incrementar la complexitat en el seu disseny.

Història[modifica | modifica el codi]

Per tenir un progrés ràpid, la ITU-T i l'ISO/IEC van acordar unir-se per tal de desenvolupar conjuntament la següent generació de còdecs de vídeo. L'Equip Conjunt de Vídeo(JVT) estava format per experts en VCEG i MPEG,i va néixer el desembre de 2001 amb l'objectiu de completar el desenvolupament tècnic del estàndard cap el 2003. La ITU-T va planejar adoptar l'estàndard sota el nom de H 264 de ITU-T i ISO/IEC sota el nom de MPEG-4 part 10 Còdec de Vídeo Avançat (AVC) i d'aquí va sorgir el nom híbrid de H.264/MPEG-4 AVC. Per tal de començar a programar el codi del nou estàndard van adoptar les següents premisses:

  • L'estructura DCT per a la compensació de moviment de les versions anteriors era superior a altres estàndards i per això no hi havia cap necessitat de fer canvis fonamentals en l'estructura.
  • Algunes formes de codificació de vídeo que havien sigut excloses en el passat degut a la seva complexitat i el seu alt cost d'implementació es tornarien a examinar per a la seva inclusió, ja que la tecnologia VLSI havia sofert un avenç considerable i una baixada de costos d'implementació.
  • Per permetre una llibertat màxima de millora en la codificació la sintaxi s'hauria de canviar de manera que no fos compatible amb normes anteriors.

prno*

Característiques[modifica | modifica el codi]

L'ús inicial del MPEG-4 AVC va estar enfocat cap al vídeo de qualitat baixa per videoconferència i aplicacions per Internet basades en 8 bits/mostra i amb un mostreig ortogonal de 4:2:0. Llavors això no donava sortida a l'ús d'aquest còdec en ambients professionals que exigeixen resolucions més elevades que necessitaven més de 8 bits/mostra i un mostratge de 4:4:4 o 4:2:2, funcions per a la mescla d'escenes, bit rates més elevats, poder representar algunes parts de vídeo sense pèrdues i utilitzar el sistema de color per components RGB. Per aquest motiu va sorgir la necessitat de programar unes extensions que suportessin aquesta demanda. Després d'un any de treball intens van sorgir les "extensions de gamma de fidelitat" (FRExt) que incloïen:

Sistemes de submostreig
  • Suport per una mida de bloc adaptable a la freqüència residual de la transformada.
  • Suport per una quantificació amb matrius escalades.
  • Suport per una representació eficient sense pèrdues de regions específiques.

Aquest conjunt d'extensions anomenades de "perfil alt" són:

  • L'extensió High que suporta 4:2:0 fins a 8 bits/mostra
  • L'extensió High-10 que suporta 4:2:0 fins a 10 bits/mostra
  • L'extensió High 4:2:2 que suporta fins a 4:2:2 i 10 bits/mostra
  • L'extensió High 4:4:4 que suporta fins a 4:4:4 i 12 bits/mostra i la codificació de regions sense pèrdues.

A continuació podem veure una taula amb més especificacions sobre aquests perfils envers al perfil original:

Original High High 10 High 4:2:2 High 4:4:4
slices I i P SI SI SI SI SI
slices B NO SI SI SI SI
slices SI i SP NO NO NO NO NO
imatges de referència múltiples SI SI SI SI SI
Filtre "deblocking" SI SI SI SI SI
codificació CAVLC SI SI SI SI SI
codificació CABAC NO SI SI SI SI
ordenació flexible de macroblocs (FMO) SI NO NO NO NO
ordenació arbitrària de slices (ASO) SI NO NO NO NO
slices redundants (RS) SI NO NO NO NO
partició de dades (DP) NO NO NO NO NO
codificació entrellaçada NO SI SI SI SI
format 4:2:0 SI SI SI SI SI
format monocrom (4:0:0) NO SI SI SI SI
format 4:2:2 NO NO NO SI SI
format 4:4:4 NO NO NO NO SI
8 Bits/píxel SI SI SI SI SI
9 i 10 Bits/píxel NO NO SI SI SI
11 i 12 Bits/píxel NO NO NO NO(2v) SI
transformada 8x8 NO SI SI SI SI
matrius de quantificació NO SI SI SI SI
quantificació Cb i Cr separades NO SI SI SI SI
codificació sense pèrdues NO NO NO NO SI
Original High High 10 High 4:2:2 High 4:4:4

Noves especificacions[modifica | modifica el codi]

H.264/MPEG-4 AVC no aporta ruptura tecnològica amb relació a les normes de codificació de vídeo anteriors. Les diferències les poden trobar en un escala petita sobre el principi general de codificació (predicció, transformada, quantificació, etc.).

Tipus d'imatges[modifica | modifica el codi]

Podem trobar les mateixes imatges que les normes precedents (Imatges I, P i B) i dues noves, la SP (Switching P) i la SI (Switching I) que serveixen per codificar la transició entre dos fluxos de vídeo. Permeten, sense enviar imatges intra molt costoses en temps de processament, passar d'un vídeo a un altre utilitzant predicció temporal o espacial com abans, però amb l'avantatge que permeten la reconstrucció de valors específics exactes de la mostra tot i utilitzar imatges de referència diferents o un nombre diferent d'imatges de referència en el procés de predicció.

Compensació de moviment[modifica | modifica el codi]

El procés de compensació de moviment és diferent de les normes precedents, ja que proposa una gran varietat de formes i de particions de blocs. Cada macrobloc és dividit en subblocs per a l'estimació de moviment i poden tenir set mides diferents(16x16, 16x8, 8x16, 8x8, 8x4, 4x8 i 4x4). Abans l'estàndard més nou introduïa particions de 8x8. Aquesta varietat de particions proporciona més exactitud per a l'estimació amb una precisió que pot arribar fins a un quart de píxel.

Transformada[modifica | modifica el codi]

Té les mateixes propietats que la DCT clàssica però contràriament a altres estàndards que utilitzen blocs de 8x8 aquesta ho fa sobre blocs 4x4. La transformada inversa és definida de manera exacta per tal d'evitar errors d'arrodoniment. Els nous perfils alts FRExt incorporen una transformada de mida 8x8.

Matrius de transformació

Quantificació[modifica | modifica el codi]

Els passos de quantificació s'incrementen un 12,5 % i el rang dinàmic augmenta, ja que els valors van d'1 a 52. Els macroblocs es quantifiquen utilitzant un paràmetre de control que pot canviar adaptant-se al bloc en qüestió. Si utilitzem FRExt tindrem un rang dinàmic que es multiplicarà per 6 per cada bit addicional(partint de 8 bits, 52 passos). A més a més, per tal d'aconseguir els millors resultats visuals, la quantificació de crominància és més acurada que la de luminància.

Filtre "deblocking"[modifica | modifica el codi]

H.264 també integra un filtre d'arrissat que millora l'eficàcia de compressió i la qualitat visual de les seqüències de vídeo eliminant efectes indesitjables de la codificació, com ara els efectes de bloc.

Exploració de dades[modifica | modifica el codi]

Hi ha dos modes d'exploració de coeficients transformats: "zig-zag" i "zig-zag invers". El segon mode d'exploració autoritza particularment la lectura del macrobloc en sentit oposat per tal de funcionar amb la codificació entròpica adaptativa.

Exploració de dades

Codificació entròpica[modifica | modifica el codi]

Unified Variable Lenght Coding

La codificació entròpica es pot realitzar de tres formes diferents. Un primer mètode utilitzat és el conegut UVLC (Unified Variable Lenght Coding). Aquest tipus de codificació és utilitzat per codificar la gran majoria dels elements de sincronització i capçaleres. Els altres dos mètodes són utilitzats per codificar bona part de la resta d'elements sintàctics (coeficients, vectors de moviment). Les codificacions utilitzades per aquesta tasca estan basades en VLC (Variable Length Coding) de forma adaptativa, d'aquest concepte neix el CAVLC (Context Adaptative Variable Length Coding) i el CABAC (Context Adaptative Binary Arithmetic Coding).

Adaptació a la xarxa[modifica | modifica el codi]

Conceptualment els algoritmes estan dividits en dues capes: una primera capa de codificació de vídeo VCL (Video Coding Layer) que s'ocupa de representar eficaçment el contingut de vídeo i una capa d'adaptació a la xarxa NAL (Network Adaptación Layer) que està adreçada més particularment a adaptar el format de dades de vídeo al suport de transmissió.

Algoritmes per a la prevenció de pèrdues[modifica | modifica el codi]

FMO i ASO[modifica | modifica el codi]

L'ordenació flexible de macroblocs (FMO) i l'ordenació arbitrària de slices (ASO) són tècniques per tal de reestructurar la representació de les regions fonamentals (macroblocs) tot i que també poden ser utilitzats per altres objectius.

DP[modifica | modifica el codi]

La partició de dades proporciona la capacitat de separar els elements de sintaxi més importants dels menys importants en paquets de dades diferents tot permetent l'ús de protecció d'error desigual (UEP).

RS[modifica | modifica el codi]

L'algoritme de slices redundants permet a un codificador enviar una representació suplementària d'una regió d'imatge que pot ser usat si la representació primària és corrompuda o perduda.

Enllaços externs[modifica | modifica el codi]