Universal Variable Length Code
En construcció...
Les sigles UVLC corresponen a Universal Variable Length Code, és un mètode que elimina la redundància estadística en l'algoritme de compressió CAVLC, i es troba generalment en l'última etapa en l'algoritme de compressió de video H.264, o MPEG-4 part 10, 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).

Dintre del disseny que conforma aquest codificador, en l'etapa de codificació de la entropía podem trobar-hi dos mètodes:
- UVLC/CAVLC: mètode per eliminar redundància + algoritme de compressió
- CABAC: algoritme de compressió
Definició
Esquema general
El 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:

Dues parts:
- Un detector de 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.
Funcionament
Aquest tipus de codificació es basa a la sortida en la distribució normal. La relació entre la entrada original de bits i la trama de sortida és la següent:
![]() | La plantilla {{Bellataula}} és obsoleta. |
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 de 1 a partir de la trama binaria i utilitzant la taula que es mostra posteriorment:
![]() | La plantilla {{Bellataula}} és obsoleta. |
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 conformaràn el codi de sortida mentres que el primer 1 el detector de 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 que conformen el circuit com es mostra a continuació.