Sous Linux, en ce qui concerne les codecs, la plupart des utilisateurs ne s’en soucient généralement pas, car dans de nombreuses distributions, ce problème est généralement déjà résolu en étant inclus dans la cible par défaut, en plus de visualiser ou d’éditer des applications, Ils apportent également leur grain de sable, y compris quelques extras.
Mais que se passe-t-il lorsqu’un utilisateur souhaite améliorer les performances dans certains aspects, par exemple pour des tâches d’édition ou pour de simples loisirs. Dans cette partie, tous les utilisateurs ne sont pas impliqués, mais pour ceux qui sont intéressés, ils ont tendance à rechercher les avantages et les inconvénients de chaque format.
Et c’est là qu’intervient le codec dont nous allons parler aujourd’hui et c’est qu’en tant que tel le format d’image JPEG est l’un des plus populaires, mais cela ne veut pas dire qu’il est le meilleur, car il existe d’autres formats qui offrent de nombreux avantages par rapport à cela.
libjpeg-turbo est une solution à certaines des lacunes de JPEG contre d’autres formats puisque comme mentionné dans leur référentiel GitHub :
libjpeg-turbo est un codec d’image JPEG qui utilise les instructions SIMD pour accélérer la compression et la décompression JPEG de référence sur les systèmes x86, x86-64, Arm, PowerPC et MIPS, ainsi que la compression JPEG progressive sur x86, x86-64 et arm . Sur de tels systèmes, libjpeg-turbo est généralement 2 à 6 fois plus rapide que libjpeg, toutes choses étant égales par ailleurs. Sur d’autres types de systèmes, libjpeg-turbo peut toujours surpasser libjpeg de manière significative, grâce à ses routines de codage Huffman hautement optimisées. Dans de nombreux cas, les performances de libjpeg-turbo rivalisent avec celles des codecs JPEG propriétaires à haut débit.
libjpeg-turbo implémente à la fois l’API libjpeg traditionnelle et l’API TurboJPEG moins puissante mais plus simple. libjpeg-turbo propose également des extensions d’espace colorimétrique qui lui permettent de compresser/décompresser vers des tampons de pixels 32 bits et big-endian (RGBX, XBGR, etc.), ainsi qu’une interface Java complète.
libjpeg-turbo est un fork compatible API/ABI de la bibliothèque classique libjpeg, dont le but est de fournir la vitesse d’encodage et de décodage la plus rapide. En plus de l’API libjpeg standard, la bibliothèque fournit sa propre API TurboJPEG et un certain nombre d’extensions avec des modèles de rendu des couleurs qui permettent aux images d’être compressées ou décodées à partir de tampons de pixels 32 bits (RGBX, XBGR).
Sur d’autres architectures, l’accélération n’est pas aussi importante, mais grâce à l’utilisation de fonctions de codage Huffman optimisées, la bibliothèque est encore nettement plus rapide que libjpeg et se rapproche en termes de performances des codecs JPEG propriétaires de haute qualité.
Il convient de mentionner que récemmentibjpeg-turbo a reçu sa nouvelle branche 3.0 et les principales innovations qui se démarquer de cette nouvelle versionsont mentionnés :
- Ajout de la prise en charge du sous-échantillonnage de couleur 4:1:1, vous permettant de convertir, recadrer et faire pivoter des images JPEG sous-échantillonnées 4:1:1 sans perte de qualité, ainsi que de les décompresser et de les convertir au modèle de couleur YUV.
- Calcul significativement accéléré des tables de Huffman optimales. Pour les petites images (256 × 256), le changement a permis de réduire jusqu’à deux fois le temps de compression.
- Ajout de la possibilité d’appliquer un codage entropique arithmétique pour les images JPEG avec une représentation des couleurs 12 bits par canal.
- L’API TurboJPEG a été considérablement repensée pour supprimer les limitations existantes et augmenter l’extensibilité. Par exemple, toutes les fonctions C sont désormais préfixées par “tj3”.
- De nombreux drapeaux et modes ont été convertis d’arguments de fonction en paramètres généraux d’API.
- Prise en charge des images avec 12 et 16 bits de couleur par canal en modes avec et sans perte.
- Le mode de fichier JPEG sans perte a été ajouté, qui est disponible pour les images avec 8, 12 et 16 bits de couleur par canal. Ajout de la nouvelle fonction jpeg_enable_lossless() et de l’option de ligne de commande “-lossless”.
- Suppression des champs, constructeurs et méthodes obsolètes dans l’API Java TurboJPEG.
Enfin, il convient de mentionner qu’à l’avenir, l’auteur de libjpeg-turbo a l’intention de limiter le travail sur le projet à la seule publication de mises à jour avec des corrections de bogues. Le développement de la nouvelle version 3.1 ne commencera pas tant que le financement du projet n’aura pas été obtenu.
Pour les intéressé par le code Il faut savoir qu’il est distribué sous trois licences de type BSD IJG, modifiées par BSD et zlib, et des binaires préparés sont proposés pour Linux, macOS et Windows. Vous pouvez vérifier les détails et obtenir les fichiers binaires à partir du lien suivant.