Universal Variable Length Code

(S'ha redirigit des de: UVLC)

Les sigles UVLC corresponen a Universal Variable Length Code, és un mètode que elimina la redundància estadística en l'algorisme de compressió CAVLC, i es troba generalment en l'última etapa en l'algorisme de compressió de video H.264, o MPEG-4 AVC, que és un còdec digital d'alta compressió estàndard 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). Una arquitectura de codificació UVLC proposa complir els requisits de TML8.

És un mètode de codificació de font que codifica l'entropia. Substitueixen les paraules codi d'una font, per una de longitud proporcional a la freqüència de sortida de dita paraula. D'aquesta manera reduint les paraules que surten amb major freqüència a una paraula clau menor, reduirem la quantitat de dades a transmetre o emmagatzemar.

Diagrama H264.
Diagrama H264.


Dintre del disseny que conforma aquest codificador, en l'etapa de codificació de la entropía podem trobar-hi dos mètodes:

  1. UVLC/CAVLC: mètode per eliminar redundància + algorisme de compressió
  2. CABAC: algorisme de compressió

Funcionament modifica

Esquema general modifica

UVLC s'utilitza per codificar la gran majoria dels elements de sincronització i capçaleres. Podem resumir el seu disseny i funcionament en el següent diagrama:

 
Diagrama UVLC.

Dues parts:

  • Un detector d'1 on la seva sortida anirà a l'entrada de l'acumulador que està format per un registre, un circuit d'alineació de bytes i un sumador.
  • Un separador de codi que a la seva sortida entrarà al codi multiplexor/sortida que el conformen un circuit OR, un buffer (registre) i dos multiplexors.

Procés modifica

Aquest tipus de codificació es basa a la sortida en la distribució normal. La relació entre l'entrada original de bits i la trama de sortida del UVLC és la següent:

No. paraula clau Entrada modificada Codi binari Longitud dels bits Sortida
0 1 00001 1 1
1 2 00010 3 001
2 3 00011 3 011
3 4 00100 5 00001
4 5 00101 5 00011
5 6 00110 5 01001
6 7 00111 5 01011
7 8 01000 7 0000001
8 9 01001 7 0000011
9 10 01010 7 0001001
10 11 01011 7 0001011
11 12 01100 7 0100001
12 13 01101 7 0100011
13 14 01110 7 0101001
14 15 01111 7 0101011
15 16 10000 9 000000001


L'entrada modificada serà el número de paraula clau que es vol codificar més 1, la tercera columna correspon al codi binari de l'entrada modificada. La longitud dels bits la determina el detector d'1 a partir de la trama binaria i utilitzant la taula que es mostra posteriorment:


Entrada (codi binari) Longitud de bits a la sortida
0000000000000001 1
000000000000001x 3
00000000000001xx 5
0000000000001xxx 7
000000000001xxxx 9
00000000001xxxxx 11
0000000001xxxxxx 13
000000001xxxxxxx 15
00000001xxxxxxxx 17
0000001xxxxxxxxx 19
000001xxxxxxxxxx 21
00001xxxxxxxxxxx 23
0001xxxxxxxxxxxx 25
001xxxxxxxxxxxxx 27
01xxxxxxxxxxxxxx 29
1xxxxxxxxxxxxxxx 31


Per exemple, si es detectés el bit més significatiu en la tercera posició començant pel final la trama tindria una longitud de 5 bits. Així es completa la quarta columna de la taula.

El separador de codi és un mòdul de cablejat, que s'encarrega bàsicament de completar la trama de sortida afegint 0 i 1. Per exemple:

  • Entrada: 0000 0000 0000 0010
  • Sortida: 00000000 00000000 00000000 00001001

Observem que afegeix 0 o 1 per formar bytes complets. Els últims tres bits conformaran el codi de sortida mentres que el primer 1 el detector d'1 l'utilitzarà per detectar la longitud de la trama. El primer bit 1 que s'ha afegit per determinar la longitud s'eliminarà amb l'alineació dels bytes, part inclosa en l'acumulador, que conformen el circuit, a més a més reagruparà els bits en múltiples de 8.

La sortida del separador de codi serà ajustat pel shifter, que a més a més rebrà els bits de l'acumulador, per complir amb les posicions requerides del buffer de sortida. El circuit OR s'usa per combinar la sortida del shifter i la sortida del bucle que es genera després de la sortida del buffer a través del multiplexor. A la sortida del buffer canviarà d'acord amb un senyal de rellotge del multiplexor.

Vegeu també modifica