Les codecs

Transmettre de l’information dans un nombre réduit de signes est un enjeu technique et industriel important. Compression, codecs, formats de fichiers sont des notions souvent floues et complexes à comprendre.
Un essai d’éclaircissement ici.

La compression

La compression est l’opération par laquelle ou arrive a écrire une information avec moins de signes que ce qui la compose sous sa forme originale. La décompression est l’opération inverse, ou l’on restitue la chaine d’information sous sa forme originale.

On distingue les compressions sans perte, ou non destructive, et les compressions avec perte ou destructives.

Par exemple de zip ou le tar sont des formats de compression sans perte. Vous pouvez compresser un fichier, puis l’extraire et retrouver la à sortie une copie conforme du fichier original.

Le JPEG, ou le mp3 par contre est un format de compression destructif : il restitue un fichier "proche" de l’original, suivant le niveau de compression choisi.

Cas typique de la vidéo

Une heure de vidéo non compressée pèse 263 Go (giga-octets).
Une image de 1024x768 comprend 786 432 pixels, or un pixel (sur un écran true color 32Bits) est composé de 4 Octets, donc une image de 786 432 x 4 pèse 3 Mo.
Une seconde de vidéo de 25 images pèsera donc 75Mo à la seconde. C’est énorme, à la fois en stockage, en streaming (si on regarde la vidéo sur le net) et en traitement pour la machine, qui doit lire ces données sur un support.

L’industrie de la vidéo s’est donc penché sur un moyen de réduire la vidéo numérique vers des poids acceptable, notamment pour diffuser les contenus vidéos via les câbles et surtout les satellites. Le mpeg2 est une des solutions apportées en 1994, encore en usage aujourd’hui pour la transmission par satellite, cable et sur DVD.

Les normes

Les normes décrivent le format du fichier compressé. Elles ne décrivent pas par quel procédé on produit un fichier à cette norme. Ce qui veut dire que pour obtenir un fichier à une certaine norme, plusieurs méthodes (codecs) peuvent être utilisées. Si je dis qu’une brique de Ninive est un parallélépipède rectangle de terre rouge cuite d’une dimension de 52 × 27 × 15 cm, capable de supporter une pression de x kilos, je n’ai rien dit sur la méthode qui permet de la produire.

Certaines normes sont sujettes à licences, c’est a dire qu’il faut payer pour pouvoir utiliser ce format. Certaines normes sont dites ouvertes, parce qu’elle ont été développées pour être utilisées sans payer de licence pour leur utiisation. Certaines normes sont tombées dans le domaine public enfin, comme le GIF.

Les codecs

Les codecs désigne l’opérateur de la compression et de la décompression. Ils font passer un fichier, codé dans une norme, à un autre format de fichier, avec une autre norme. Le nombre d’opérations nécessaires pour faire cette transformation détermine la rapidité du codec. La compression est généralement une opération plus lourde que la décompression, spécialement dans le cas de compressions destructives, puisqu’il faut dégrader l’information de manière ciblée.
Les codecs sont logiciels (ce qui signifie qu’un code informatique produit la compression ou la décompression) ou matériel (et dans ce cas c’est une puce qui se charge du travail, et c’est plus rapide). Les codecs sont eux aussi soumis à licence ou ouvert.

Le divx, par exemple, est protégé par le droit d’auteur, ce qui signifie que si vous voulez fabriquer une application qui montre des film encodés avec le codec divx, vous devrez payer des droits pour le faire. Décompresser par contre est autorisé en acceptant les termes de licence sans pour autant les payer, car il faut que les utilisateurs soient prêt à l’utiliser sans quoi le codec sera un échec commercial.

Notons qu’il y a donc des codecs de différentes qualités pour la même norme. Une compression jpeg peut selon la qualité du codec, donner par exemple une image plus lourde à qualité égale, ou une image plus terne, plus sombre, plus floue selon que son traitement aura été fin ou baclé par le créateur du codec. La plupart du temps, c’est le logiciel qui choisit pour vous le codec employé. Le temps de compression est aussi un facteur important, notamment pour la vidéo.

Décompression à la volée, une affaire de processeur

Un point important concernant les codecs de décompression : si un fichier zip est le plus souvent décompressé avant utilisation, les fichiers mp3 sont lus et décompressés au moment de la lecture. Il en est de même pour les fichiers vidéos. Ce qui signifie que l’ordinateur qui affiche ces données doit pouvoir lire une donnée compressée, la décompresser et l’afficher très rapidement, ce qui demande des ressources, ressources d’autant plus grandes que la compression est forte : certaines données sont compressées par plusieurs algorithmes successifs.

Les conteneurs ou formats de fichiers

Les formats de fichiers désignent la structure du fichier qui reçoit les données compressées. Le AVI est un format de fichier. Généralement, l’extension du fichier en devient le nom : on dira "du mp3" ou "du zip" ou "du avi".
C’est là que ça se complique : le nom du conteneur ne dit pas nécessairement quelle norme a été employée pour compresser les données... Si un jpeg est toujours compressé à la norme jpeg, et un mp3 est du MPEG-1/2 Audio Layer 3, un fichier avi par exemple ne contient pas nécessairement, mettons, du h264.

Fenêtre d'info d'un fichier AVI

Un exemple : le AVI

Le avi est très répandu sur les réseaux de partage de fichier. En fait il peut contenir des données compressées avec tout un tas de normes différentes, et avoir été produit avec un tas de codecs différents par des logiciels de compression différents...
Par exemple, l’image peut être du cinepak (une des premières compression de vidéo, utilisées dans les les CD-Rom) ou du Sorenson (son successeur) ou du h263, h264 ou mpeg-4...
Un avi peut contenu un flux d’images et jusqu’à 99 fichiers de son, en mp3 ou encore pcm, ce qui lui permet d’être multilingue.
La page sur le format AVI

Un autre exemple : le FLV

Le flv ou FLash Vidéo contient des données compressées à la norme h264 ou du VP6, avec du son en mp3. Son décodage est permis par l’application flash qui le lit, ce qui a rendu son utilisation plus simple et fait son succès avec des sites comme Youtube, Dailymotion ou Viméo. Le codec est soumis à une licence.
La page wikipedia sur le flv

Le DVD

Les lecteurs de salon ont à la base été créés pour lire des dvd-rom. On y trouve dans des format de fichiers VOB compressés à la norme mpeg-2. Le son quant à lui peut être du PCM, du Dolby Digital ou du DTS. Par la suite les lecteurs ont été dotés de puces ou de logiciels capables de décompresser d’autres formats de compression comme le divx ou le h264, ce qui rend le marché des lecteurs dvd particulièrement complexe à comprendre.
Si vous avez l’intention de fabriquer un dvd lisible sur la plupart des lecteurs dvd, vous le ferez donc avec un logiciel dédié, capable de compresser du mpeg_2 dans des fichiers VOB. DVDFlick pour PC, smalldvd pour mac par exemple
Voir la page sur le DVD de wikipedia

Les encodeurs de données, son, vidéo

Les encodeurs de données sont assez stabilisés. Pourvoir échanger des données compressées a été au début du net un problème : les plateformes n’avaient pas les mêmes logiciels et les mêmes normes. Aujourdui, le ZIP, le TAR, le GZ sont stabilisés. Les données sont toujours compressées sans pertes et il y a eu peu d’avancées significatives dans ce domaine depuis des années.

Les compressions d’image se sont stabilisées elles aussi. Le gif, le png et le JPEG, les trois formats employés sur le net, sont compressés et décompressés de manière transparente par la plupart des logiciels.

La compression du son est par contre en constante amélioration. Si le mp3 est sa base (entre autre car c’est une norme ouverte), d’autres formats existe comme ogg vorbis, Flac. L’objectif est amélioration de la qualité à débit égal ou moindre que le mp3.

Les logiciels qui encode les vidéos sont généralement de compresser a différentes normes avec différentes qualités, ce qui complexifie leurs interfaces. Sachant que chaque licence de codec appartient à des entreprises différentes, ça rend leur fabrication et utilisation parfois complexe. Tous les format de fichiers n’ont pas les mêmes caractéristiques en qualité (qualité de compression, respect des couleurs, bitrate variable ou constant), et possibilités (sous-titres, sons, chapitrage, etc.).
Des formats ouverts existent aujourd’hui, ainsi que des codecs facilement utilisables. Ainsi le format theora tente de trouver sa place parmi les format plus utilisés comme h264 et divx.

Les lecteurs

Il existe selon les OS (Mac OS ou Windows) et selon les versions de ceux-ci un foule de logiciels capable de lire des fichiers compressés. Citons ici juste VLC qui permet de lire un grand nombre de fichiers son et image, et qui est open source et gratuit.
Voir le site de VLC