libjpeg-turbo je prvobitno bio baziran na libjpeg/SIMD, MMX-ubrzanom derivatu libjpeg v6b
U Linuxu, kada su kodeci u pitanju, većina korisnika obično ne brine o tome, budući da je u mnogim distribucijama ovaj problem obično već riješen uključivanjem u cilj prema zadanim postavkama, pored pregledavanja ili uređivanja aplikacija, oni također doprinose svom zrnu pijeska uključujući neke dodatke.
Ali šta se dešava kada korisnik želi da poboljša performanse u određenim aspektima, recimo za zadatke uređivanja ili za jednostavnu razonodu. U ovom dijelu se ne uključuju svi korisnici, ali oni koji su zainteresovani teže da istraže prednosti i nedostatke koje svaki format nudi.
I tu se pojavljuje kodek o kojem ćemo danas pričati, a to je da je kao takav JPEG format slike jedan od najpopularnijih, ali to ne znači da je najbolji, jer postoje i drugi formati koji nude mnoge prednosti u odnosu na ovo.
libjpeg-turbo je rješenje za neke od nedostataka JPEG-a u poređenju s drugim formatima, kao što je spomenuto u njegovom GitHub repozitoriju:
libjpeg-turbo je kodek za JPEG slike koji koristi SIMD instrukcije za ubrzavanje benchmark JPEG kompresije i dekompresije na x86, x86-64, Arm, PowerPC i MIPS sistemima, kao i progresivnu JPEG kompresiju na x86, x86-64 i arm. Na takvim sistemima, libjpeg-turbo je generalno 2-6 puta brži od libjpeg-a, pod uslovom da je sve ostalo jednako. Na drugim tipovima sistema, libjpeg-turbo i dalje može nadmašiti libjpeg za značajnu količinu, zahvaljujući svojim visoko optimizovanim Huffmanovim rutinama kodiranja. U mnogim slučajevima, performanse libjpeg-turbo su rivale vlasničkim brzim JPEG kodecima.
libjpeg-turbo implementira i tradicionalni libjpeg API i manje moćan, ali jednostavniji TurboJPEG API. libjpeg-turbo također ima proširenja prostora boja koja mu omogućavaju komprimiranje/dekompresiju u 32-bitne i big-endian pikselne bafere (RGBX, XBGR, itd.), kao i Java interfejs sa svim mogućnostima.
Libjpeg-turbo je API/ABI-kompatibilna fork klasične libjpeg biblioteke , dizajnirana da obezbijedi najbrže brzine kodiranja i dekodiranja. Pored standardnog libjpeg API-ja, biblioteka pruža vlastiti TurboJPEG API i niz proširenja s modelima renderiranja boja koji omogućavaju kompresiju slika u 32-bitne piksel bafere (RGBX, XBGR) ili dekodiranje.
Na drugim arhitekturama, ubrzanje nije toliko značajno, ali zbog korištenja optimiziranih Huffmanovih funkcija kodiranja, biblioteka je i dalje primjetno brža od libjpeg-a i približava se visokokvalitetnim vlasničkim JPEG kodecima u pogledu performansi.
Vrijedi spomenuti da je ibjpeg-turbo nedavno dobio svoju novu granu 3.0 , a glavne inovacije istaknute u ovoj novoj verziji su sljedeće:
- Dodata podrška za poduzorkovanje boja 4:1:1, što vam omogućava da konvertujete, izrežete i rotirate 4:1:1 subuzorkovane JPEG slike bez gubitka kvaliteta, kao i da ih dekomprimujete i konvertujete u YUV model boja.
- Značajno ubrzano izračunavanje optimalnih Huffmanovih tablica. Za male slike (256×256), promjena je omogućila da se vrijeme kompresije smanji do dva puta.
- Dodata je mogućnost primjene aritmetičkog entropijskog kodiranja za JPEG slike sa prikazom boja od 12 bita po kanalu.
- TurboJPEG API je značajno redizajniran kako bi se uklonila postojeća ograničenja i povećala proširivost. Na primjer, sve funkcije C sada imaju prefiks "tj3".
- Mnoge zastavice i modovi su pretvoreni iz argumenata funkcije u opće API parametre.
- Podrška za slike sa 12 i 16 bita boje po kanalu u režimima sa gubicima i bez gubitaka.
- Dodan je režim JPEG datoteke bez gubitaka, koji je dostupan za slike sa 8, 12 i 16 bita boje po kanalu. Dodata nova funkcija jpeg_enable_lossless() i opcija komandne linije “-lossless”.
- Uklonjena su zastarjela polja, konstruktori i metode u Java TurboJPEG API-ju.
Na kraju, treba napomenuti da u budućnosti autor libjpeg-turbo namjerava ograničiti rad na projektu samo na objavljivanje ažuriranja sa ispravkama grešaka. Razvoj nove verzije 3.1 neće početi dok se ne pribave sredstva za projekat.
Za one koji su zainteresovani za kod , on se distribuira pod tri BSD-slične licence: IJG, modificirana od strane BSD-a i zlib. Binarne datoteke su dostupne za Linux, macOS i Windows. Više detalja i preuzimanje binarnih datoteka možete pronaći na sljedećem linku.