libjpeg-turbo, un còdec per codificar i descodificar imatges JPEG

libjpeg-turbo

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, l'objectiu del qual és 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 libjpeg-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.

Per als 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 de el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.