libjpeg-turbo je prvotno temeljil na libjpeg/SIMD, MMX-pospešeni izpeljanki libjpeg v6b
V Linuxu, ko gre za kodeke, večina uporabnikov običajno ne skrbi za to, saj je v mnogih distribucijah ta težava običajno že rešena tako, da je privzeto vključena v cilj, poleg ogledovanja ali urejanja aplikacij, prispevajo tudi svoje zrno peska, vključno z nekaterimi dodatki.
Toda kaj se zgodi, ko uporabnik želi izboljšati zmogljivost v določenih vidikih, recimo za urejanje opravil ali za preprosto preživljanje prostega časa. V tem delu ne sodelujejo vsi uporabniki, vendar tisti, ki jih zanima, ponavadi raziščejo prednosti in slabosti, ki jih ponuja posamezni format.
In tu nastopi kodek, o katerem bomo danes govorili, in to je, da je slikovni format JPEG kot tak eden najbolj priljubljenih, vendar to ne pomeni, da je najboljši, saj obstajajo tudi drugi formati, ki ponuja veliko prednosti pred tem.
libjpeg-turbo je rešitev za nekatere pomanjkljivosti JPEG-a v primerjavi z drugimi formati, kot je omenjeno v njegovem repozitoriju GitHub:
libjpeg-turbo je slikovni kodek JPEG, ki uporablja navodila SIMD za pospešitev primerjalnega stiskanja in dekompresije JPEG v sistemih x86, x86-64, Arm, PowerPC in MIPS, kot tudi progresivno stiskanje JPEG v sistemih x86, x86-64 in arm. V takšnih sistemih je libjpeg-turbo na splošno 2-6-krat hitrejši od libjpeg, če so vsi ostali enaki. Na drugih vrstah sistemov lahko libjpeg-turbo še vedno precej prekaša libjpeg zaradi svojih zelo optimiziranih Huffmanovih kodirnih rutin. V mnogih primerih zmogljivost libjpeg-turbo tekmuje z zmogljivostjo lastniških kodekov JPEG visoke hitrosti.
libjpeg-turbo implementira tradicionalni libjpeg API in manj zmogljiv, a preprostejši TurboJPEG API. libjpeg-turbo vsebuje tudi razširitve barvnega prostora, ki mu omogočajo stiskanje/dekompresijo v 32-bitne in big-endian medpomnilnike slikovnih pik (RGBX, XBGR itd.), kot tudi vmesnik Java s polnimi funkcijami.
Libjpeg-turbo je razvejana različica klasične knjižnice libjpeg , ki je skladna z API/ABI in je zasnovana za zagotavljanje najhitrejših hitrosti kodiranja in dekodiranja. Poleg standardnega API-ja libjpeg knjižnica ponuja tudi lasten API TurboJPEG in številne razširitve z modeli barvnega upodabljanja, ki omogočajo stiskanje slik v 32-bitne slikovne medpomnilnike (RGBX, XBGR) ali dekodiranje.
Na drugih arhitekturah pospešek ni tako pomemben, vendar je zaradi uporabe optimiziranih funkcij Huffmanovega kodiranja knjižnica še vedno opazno hitrejša od libjpeg in se po zmogljivosti približuje visokokakovostnim lastniškim JPEG kodekom.
Omeniti velja, da je ibjpeg-turbo pred kratkim prejel svojo novo vejo 3.0 , glavne novosti, ki so bile poudarjene v tej novi različici, pa so naslednje:
- Dodana podpora za podvzorčenje barv 4:1:1, ki vam omogoča pretvorbo, obrezovanje in vrtenje podvzorčenih slik JPEG 4:1:1 brez izgube kakovosti ter njihovo dekompresijo in pretvorbo v barvni model YUV.
- Bistveno pospešen izračun optimalnih Huffmanovih tabel. Pri majhnih slikah (256 × 256) je sprememba omogočila, da se je čas stiskanja zmanjšal do dvakrat.
- Dodana možnost uporabe aritmetičnega entropijskega kodiranja za slike JPEG z 12-bitno barvno predstavitvijo na kanal.
- TurboJPEG API je bil bistveno preoblikovan, da bi odstranil obstoječe omejitve in povečal razširljivost. Na primer, vse funkcije C imajo zdaj predpono "tj3".
- Številne zastavice in načini so bili pretvorjeni iz funkcijskih argumentov v splošne parametre API-ja.
- Podpora za slike z 12 in 16 bitov barve na kanal v načinih z izgubami in brez izgub.
- Dodan je bil način datoteke JPEG brez izgub, ki je na voljo za slike z 8, 12 in 16 bitov barve na kanal. Dodana nova funkcija jpeg_enable_lossless() in možnost ukazne vrstice »-lossless«.
- Odstranjena zastarela polja, konstruktorji in metode v Java TurboJPEG API.
Nazadnje je treba omeniti, da namerava avtor libjpeg-turbo v prihodnosti omejiti delo na projektu le na objavo posodobitev s popravki napak. Razvoj nove različice 3.1 se ne bo začel, dokler ne bodo pridobljena sredstva za projekt.
Za tiste, ki jih koda zanima , je distribuirana pod tremi licencami, podobnimi BSD: IJG, modified by BSD in zlib. Binarne datoteke so na voljo za Linux, macOS in Windows. Več podrobnosti in prenos binarnih datotek najdete na naslednji povezavi.