libjpeg-turbo es va basar originalment en libjpeg/SIMD, un derivat accelerat per MMX de libjpeg v6b
A Linux quan es tracta del tema de còdecs la majoria dels usuaris no sol preocupar-se'n, ja que en moltes distribucions aquest tema sol ja estar resolt en ser inclosos en la punteria per defecte, a més que les aplicacions de visualització o edició, tambe aporten el seu granet de sorra incloent alguns extres.
Però què passa quan un usuari vol millorar el rendiment en certs aspectes, digui's per a tasques d'edició o per simple lleure. En aquesta part no tots els usuaris fiquen mà , però per als que sà que els interessa tendeixen a investigar els avantatges i desavantatges que ofereix cada format.
I aquà és on entra el còdec del qual parlarem avui i és que com a tal el format d'imatge JPEG és un dels més populars, però això no vol dir que és el millor, ja que hi ha altres formats que ofereixen molts avantatges sobre aquest.
libjpeg-turbo és una solució a algunes de les deficiències que presenta JPEG contra altres formats ja que com s'esmenta al seu repositori de GitHub:
libjpeg-turbo és un còdec d'imatge JPEG que utilitza instruccions SIMD per accelerar la compressió i descompressió JPEG de referència en sistemes x86, x86-64, Arm, PowerPC i MIPS, aixà com la compressió JPEG progressiva en sistemes x86, x86-64 i Arm. En aquests sistemes, libjpeg-turbo és generalment de 2 a 6 vegades més rà pid que libjpeg, tota la resta és igual. En altres tipus de sistemes, libjpeg-turbo encara pot superar libjpeg en una quantitat significativa, en virtut de les seves rutines de codificació Huffman altament optimitzades. En molts casos, el rendiment de libjpeg-turbo rivalitza amb el dels còdecs JPEG d'alta velocitat patentats.
libjpeg-turbo implementa tant l'API libjpeg tradicional com l'API TurboJPEG menys potent però més senzilla. libjpeg-turbo també compta amb extensions d'espai de color que us permeten comprimir/descomprimir a memòria intermèdia Java amb totes les funcions.
Libjpeg-turbo Ă©s una bifurcaciĂł compatible amb API/ABI de la biblioteca clĂ ssica libjpeg , que tĂ© com a objectiu proporcionar la velocitat de codificaciĂł i descodificaciĂł mĂ©s rĂ pida. A mĂ©s de l'API libjpeg estĂ ndard, la biblioteca proporciona la seva pròpia API TurboJPEG i una sèrie d'extensions amb models de representaciĂł de color que permeten comprimir imatges en bĂşfers de pĂxels de 32 bits (RGBX, XBGR) o descodificar-los.
En altres arquitectures, l'acceleració no és tan significativa, però a causa de l'ús de funcions de codificació Huffman optimitzades, la biblioteca continua sent notablement més rà pida que libjpeg i s'acosta en termes de rendiment als còdecs JPEG patentats d'alta qualitat.
Cal esmentar que fa poc el ibjpeg-turbo va rebre la seva nova branca 3.0 i de les principals innovacions que es destaquen d'aquesta nova versiĂł s'esmenten les segĂĽents:
- Es va afegir suport per a submostreig de color 4:1:1, cosa que li permet convertir, retallar i rotar imatges JPEG amb submostreig 4:1:1 sense pèrdua de qualitat, aixà com descomprimir-les i convertir-les al model de color YUV.
- Cà lcul significativament accelerat de taules de Huffman òptimes. Per a imatges petites (256×256), el canvi va permetre reduir el temps de compressió fins a dues vegades.
- S'hi va afegir la capacitat d'aplicar codificació d'entropia aritmètica per a imatges JPEG amb representació de color de 12 bits per canal.
- L'API de TurboJPEG s'ha redissenyat significativament per eliminar les limitacions existents i augmentar-ne l'extensibilitat. Per exemple, totes les funcions de C tenen ara el prefix «tj3».
- Molts indicadors i modes han esdevingut arguments de funciĂł a parĂ metres API generals.
- Suport per a imatges amb 12 i 16 bits de color per canal en modes amb pèrdua i sense pèrdua.
- S'ha afegit el mode de fitxer JPEG sense pèrdues, que estĂ disponible per a imatges amb 8, 12 i 16 bits de color per canal. S'ha afegit la nova funciĂł jpeg_enable_lossless() i l'opciĂł de lĂnia d'ordres "-lossless".
- Es van eliminar els camps, constructors i mètodes en desús a l'API TurboJPEG de Java.
Finalment, cal esmentar que en el futur, l'autor de libjpeg-turbo té la intenció de restringir el treball al projecte per llançar només actualitzacions amb correccions d'errors. El desenvolupament de la nova versió 3.1 no començarà fins que no s'obtingui el finançament per al projecte.
Pels interessats en el codi han de saber que es distribueix sota tres llicències tipus BSD IJG, modificades per BSD i zlib i s'ofereixen binaris preparats per a Linux, macOS i Windows. Pots consultar els detalls, aixà com obtenir els binaris des del següent enllaç.