Le Context-adaptive variable-length coding ou CAVLC est une forme de codeur entropique à longueur variable utilisé dans la norme vidéo H.264 ou MPEG-4 AVC. Il fait partie des techniques de compression sans perte, c'est-à-dire qu'à partir du code binaire généré par le codeur, il est possible de faire l'opération inverse et de retrouver les informations d'entrée sans aucune différence.

Principe

modifier

Le CAVLC est un codeur adaptatif à longueur variable fondé sur le codage de Huffman. Il s'agit d'un codage souvent représenté en arbre dans lequel chaque symbole est assigné à un code plus ou moins long selon sa probabilité d'apparition. Un code sera long si sa probabilité est faible. Le défaut du codage de Huffman est que le nombre de bits qu'il attribue pour chaque symbole est entier et donc il est souvent loin du codage optimal. Par exemple, si on considère une probabilité de 0,99 %, le meilleur codage selon l'entropie (eq.1) est de 0,015 bits or le symbole assigné sera codé sur 1 bit (au minimum).

Rappel de la formule du calcul de l'entropie:

 , où P est un réel compris compris entre 0 et 1 (la probabilité) (eq.1)

Applications

modifier

Dans la norme H.264, son rôle est d'encoder les coefficients des blocs résiduels de l'image à encoder après les étapes de transformée de Fourier discrète, de quantification et de ré-ordonnancement (établi par un zigzag). Il s'agit de la dernière étape d'encodage qui permet de créer le flux binaire. L'opération inverse est utilisée par le décodeur.

La norme H.264 possède également un deuxième codeur entropique mais de type arithmétique CABAC (Context-based adaptive binary arithmetic coding) qui est plus efficace d'un point de compression par rapport au CAVLC (environ 10 % de gain en compression) mais qui demande beaucoup plus de ressources pour le décodage.

Le CAVLC est présent sur tous les différents profils de la norme H.264 contrairement au CABAC qui est exclu des profils baseline et extended.

Références

modifier

(en) E. G. Richardson, H.264 and MPEG-4 Video Compression: Video Coding for Next-generation Multimedia, Chichester, John Wiley & Sons Ltd., septembre 2003 (ISBN 0-470-84837-5)


Annexes

modifier

Articles connexes

modifier

Liens externes

modifier

📚 Artikel Terkait di Wikipedia

Java (langage)

case 5: System.out.println("La variable est égale à 5"); break; //nouveau case case 5 -> System.out.println("La variable est égale à 5"); } Cette version

Type-length-value

Dans les protocoles de communication, « type-length-value » ou « tag-length-value » (abrégé en TLV), ou type-longueur-valeur en français, est un schéma

Sous-réseau

fixe de 64 bits (fe80::/64) On parle de masque de sous-réseau variable (variable-length subnet mask, VLSM) quand un réseau est divisé en sous-réseaux

Adresse IP

masque de longueur variable (Variable-Length Subnet Mask, VLSM) permet le découpage de l'espace d'adressage en blocs de taille variable, permettant une utilisation

IPv4

(Differentiated Services Code Point) Bits 6-7: ECN (Explicit Congestion Notification) Longueur totale en octets ou Total Length (16 bits) : Nombre total

Ruby

la portée des variables définie par leur forme : var est une variable locale, @var est une variable d'instance, @@var est une variable de classe, $var

Cobol

CodePostal, cette définition permet l'assignation automatique du code de département à la variable Depart sans aucune autre opération de l'utilisateur. Comme

Code à longueur variable

des codes, le code à longueur variable est un code qui associe les symboles de la source à un nombre variable de bits. Les codes à longueur variable peuvent