Suivez-nous

Interview

Interview : le créateur du BPG discute de son format

Est-ce qu’un programmeur seul peut réussir à faire adopter un nouveau format d’images, là où des géants comme Google (WebP) ou Mozilla (mozjpeg) ont échoué ? Fabrice Bellard répond à nos questions.

Arnaud

Publié le

 

Par

F. Bellard

Fabrice Bellard, le programmeur français à qui l’on doit FFmpeg, a dévoilé un nouveau format d’images, le BPG (Better Portable Graphics) qui présente, sur le papier, tout ce qu’il faut pour remplacer l’ancestral JPEG : des images bien mieux détaillées pour un poids égal, ou plus petites pour une qualité voisine, le support du canal alpha pour la transparence, et le support des couleurs jusqu’à 14 bits par canal. Le BPG utilise le codec x265, l’implémentation open source du HEVC/H.265, un codec vidéo très performant. Une image BPG est, pour l’essentiel, la même chose qu’une image extraite d’une vidéo utilisant ce codec. Avantage énorme, si le GPU peut décoder matériellement le H.265, le BPG bénéficie aussi de cette possibilité.

Mais est-ce qu’un programmeur seul peut réussir à faire adopter un format d’images nouveau, là où des géants comme Google (WebP) ou Mozilla (mozjpeg) ont échoué ? Fabrice Bellard répond à nos questions.

HEVC / H265, le haut du panier

Bonjour Fabrice, pouvez-vous nous dire quelques mots sur vous ?

Je préfère ne pas parler de moi, sinon pour dire que je suis à l’origine d’autres projets comme FFmpeg ou QEMU.

Pouvez-vous nous présenter brièvement le format BPG

Il s’agit d’un nouveau format d’image qui utilise le codec vidéo HEVC (aussi connu sous le nom d’H265). HEVC est ce qui se fait de mieux pour l’instant en terme de compression vidéo. Les images fixes constituent un fraction non négligeable de la taille d’une vidéo (changement de scènes, “keyframes” pour l’accès direct), donc HEVC est aussi très bon pour l’encodage d’images fixes. Il est donc naturel d’utiliser un algorithme de compression vidéo comme base pour la compression d’image. Google a fait cela avec WEBP qui est basé sur VP8 (mais malheureusement VP8 est beaucoup moins bon qu’HEVC).

BPG est normalement utilisé pour la compression avec perte (comme JPEG), mais comme HEVC permet de faire de la compression sans perte (comme PNG), BPG en profile aussi. Mais la compression sans perte est peu intéressante car il n’y a pas beaucoup à gagner en terme de ratio de compression.

Contrairement à JPEG, il est possible de mettre un plan d’alpha (transparence) dans l’image. Il supporte aussi plus de 8 bits par composantes (jusqu’à 14 bits), ce qui permet de conserver la dynamique importante des capteurs des appareils photo sans utiliser un format RAW. Enfin, il supporte tous les espaces de couleur conventionnels (Monochrome, RGB, YCbCr BT 601, BT 709 ou BT 2020, YCgCo, CMYK), ce qui évite de perdre de l’information dans la conversion de couleur. Par exemple, une image JPEG peut être convertie en BPG en restant dans l’espace de couleur YCbCr sans repasser par le RGB. De même pour les images extraites d’une vidéo.



Quelles sont ses innovations techniques ?

Il y en a essentiellement 4 :
• Utilisation de HEVC qui permet un taux de compression très élevé pour une qualité donnée.
• Support disponible dans tous les browsers avec un petit décodeur en Javascript (qui doit être fourni par le site Web).
• Vaste choix d’espace de couleur et de nombre de bits par pixels.
• Qualité des filtres utilisés pour la gestion de la chrominance (avec BPG comme JPEG il est possible de stocker la chrominance avec une résolution moins élevée que la luminance (formats 4:2:2 et 4:2:0). Il est donc nécessaire de changer la résolution de la chrominance, ce qui est généralement fait avec moins de soin dans les autres formats).

Quel est le rapport poids/qualité par rapport aux principaux formats web actuels, JPG et PNG ?

BPG est surtout intéressant dans le contexte d’utilisation de JPEG (compression avec perte). A qualité égale, les fichiers BPG sont plus petits que les autres formats (JPEG, WEBP, JPEG 2000, JPEG XR). Cela est surtout visible pour les taux de compression importants où les défauts deviennent très visibles pour JPEG (blocs de couleur).

Il est aussi judicieux de comparer BPG à PNG quand un plan d’alpha est nécessaire mais que JPEG ne peut pas être utilisé (car il ne supporte pas l’alpha). Dans ce cas, BPG donne un gain très important puisqu’il est possible de passer de la compression sans perte de PNG à une compression avec perte.


La licence est souvent déjà dans le GPU

Qu’en est-il des questions de licence et brevet ?

HEVC (et donc BPG) est protégé par de nombreux brevets dans beaucoup de pays, donc il peut être nécessaire de payer une licence d’utilisation aux différents détenteurs des brevets. Le problème est exactement le même qu’avec H264 qui est utilisé pour l’essentiel des vidéos sur Internet et la solution est identique :

  • Dans beaucoup de cas la compression HEVC est (ou sera) intégrée au matériel, donc la licence aura déjà été payée lors de l’achat du matériel.
  • Si HEVC est implémenté en logiciel, il ne peut faire l’objet de brevets que dans des pays où les brevets sur le logiciel sont autorisés (en particulier en Europe ce type de brevet est interdit).

Comment avez-vous travailler pour l’élaborer ?

J’ai regardé ce que pouvait faire JPEG et essayé de donner au moins les mêmes fonctionnalités en essayant de combler ses plus graves faiblesses (absence de plan d’alpha, non support en standard de plus de 8 bits par composante).

Quelles sont les chances de voir ce format intégré aux navigateurs web ?

À court terme elles sont faibles car il y a une grande inertie (par exemple Google tente désespérément d’imposer WebP avec un succès très limité jusqu’à maintenant). Mais comme il y a un décodeur en Javascript cela n’est pas un obstacle pour la diffusion du format.



Avez-vous des contacts avec Google, Apple, Mozilla, ou autres ? Les fabricants de boitiers photo ?

Pas pour l’instant.

Comment faire en sorte que ce format ne connaisse pas le sort du JPEG 2000 ? C’est à dire un format supérieur mais qui reste marginal ?

JPEG 2000 n’apporte pas un gain suffisant par rapport à JPEG, tout comme JPEG XR ou WebP. Avec BPG les choses sont différentes car le gain est non négligeable et l’algorithme de compression va bientôt être disponible sur tous les appareils pour la vidéo, au même titre qu’H264 est présent partout maintenant.