Format WebP
Le format d’image moderne de Google
Le conteneur RIFF
Google n’a pas inventé de nouveau conteneur pour WebP. Le choix s’est porté sur RIFF, le format qui transporte l’audio WAV et la vidéo AVI depuis le début des années 1990. Si vous avez déjà analysé un fichier WAV, vous savez déjà comment WebP fonctionne au niveau du conteneur.
Le format s’appuie sur des blocs imbriqués identifiés par quatre caractères (les codes FourCC). Une conception simple et robuste, qui a traversé les années sans prendre une ride.
Structure d’un fichier WebP (conteneur RIFF)
En-tête WebP
| Offset | Hex | ASCII | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0000 | 52494646241A00005745425056503858 | RIFF$...WEBPVP8X | |||||||||||||||
| 0010 | 0A00000010000000FF0000FF00000000 | .............. | |||||||||||||||
Structure d’un bloc RIFF
À noter : les données d’un bloc sont complétées par un octet nul pour atteindre une longueur paire, si nécessaire.
Offsets importants
- • Début des sous-blocs : 12 octets (après RIFF + taille + WEBP)
- • En-tête de bloc : 8 octets (FourCC de 4 octets + taille de 4 octets)
- • Position du champ de taille : +4 depuis le début du bloc (little-endian)
Blocs d’image
WebP, c’est en réalité trois formats en un : avec perte (VP8), sans perte (VP8L) et étendu (VP8X). Le type de bloc indique la méthode de compression employée.
VP8 : compression avec perte
Utilise le codec vidéo VP8 pour la compression. Rapport qualité/taille comparable à celui du JPEG. Les fichiers WebP simples ne contiennent que ce bloc.
VP8L : compression sans perte
Compression sans perte avec prédiction, transformation colorimétrique et codage entropique. En général 25 à 34 % plus léger que le PNG.
VP8X : format étendu
Signale la présence de fonctions optionnelles : animation, canal alpha, profil ICC, EXIF ou XMP. Obligatoire dès que l’une d’elles est présente.
ALPH : canal alpha
Données du canal alpha, stockées à part. Elles peuvent être compressées avec ou sans perte, indépendamment des données de couleur.
ANIM/ANMF : animation
ANIM contient les paramètres globaux de l’animation. Les blocs ANMF contiennent chaque image de l’animation, avec ses informations de cadence.
Blocs de métadonnées
Contrairement aux fichiers WebP simples, qui ne contiennent que des données d’image, les fichiers WebP étendus peuvent transporter des métadonnées. Bonne nouvelle : ces blocs sont nettement séparés des données d’image, ce qui les rend faciles à repérer et à supprimer.
EXIF : métadonnées EXIF
Contient des données EXIF dans le même format que le JPEG (structure TIFF brute) : infos de l’appareil, coordonnées GPS, horodatages et miniatures. Principal risque pour la vie privée.
XMP : métadonnées XMP
Métadonnées en XML. Elles peuvent dupliquer les données EXIF et y ajouter l’historique de retouche, des infos sur le logiciel et des champs personnalisés.
ICCP : profil colorimétrique ICC
Profil colorimétrique ICC pour la gestion des couleurs. PicScrub le conserve par défaut afin de préserver la fidélité des couleurs.
Les indicateurs VP8X
Le bloc VP8X joue le rôle de sommaire : il indique aux décodeurs ce qu’ils vont trouver dans le fichier. Quand nous supprimons des blocs de métadonnées, nous devons aussi mettre ces indicateurs à jour, sans quoi le décodeur cherchera des données qui n’existent plus.
Bits d’indicateur
Pourquoi ces indicateurs comptent
Lorsque PicScrub supprime les blocs EXIF/XMP, il doit aussi mettre à jour les indicateurs VP8X pour refléter leur absence. Sinon, les décodeurs risquent d’attendre des données qui ne sont plus là.
Comment PicScrub traite le WebP
Valider l’en-tête RIFF
Contrôler la signature RIFF....WEBP
Analyser les blocs
Parcourir tous les blocs RIFF en lisant le FourCC et la taille
Supprimer les blocs de métadonnées
Ignorer les blocs EXIF et XMP au moment d’écrire le résultat
Mettre à jour les indicateurs VP8X
Effacer les bits EXIF/XMP dans le bloc VP8X
Recalculer la taille du fichier
Mettre à jour l’en-tête RIFF avec la nouvelle taille totale
Conservé
- • Données d’image VP8/VP8L
- • Canal alpha ALPH
- • Données d’animation ANIM/ANMF
- • Profil colorimétrique ICCP (optionnel)
Supprimé
- • Métadonnées EXIF
- • Métadonnées XMP
WebP simple ou étendu
Si un fichier WebP ne contient pas de bloc VP8X, c’est un WebP « simple » : rien de plus que l’enveloppe RIFF autour d’un unique bloc VP8 ou VP8L. Aucune métadonnée n’y est possible : si vous tenez à votre vie privée, ce sont les fichiers idéaux.
WebP simple
Ne contient qu’un bloc VP8 ou VP8L. Aucune métadonnée possible.
WebP étendu
Contient un bloc VP8X, qui autorise métadonnées, canal alpha et animation.