libjpeg-turbo, kodek za kodiranje i dekodiranje JPEG slika

libjpeg-turbo

libjpeg-turbo izvorno se temeljio na libjpeg/SIMD, MMX-ubrzanoj izvedenici libjpeg v6b

U Linuxu, kada je riječ o kodecima, većina korisnika obično ne brine o tome, budući da je u mnogim distribucijama ovaj problem obično već riješen tako da je uključen u cilj prema zadanim postavkama, uz pregled ili uređivanje aplikacija, Oni također doprinose svojim sadržajem pijeska uključujući neke dodatke.

Ali što se događa kada korisnik želi poboljšati izvedbu u određenim aspektima, recimo za zadatke uređivanja ili za jednostavno slobodno vrijeme. U ovom dijelu ne sudjeluju svi korisnici, ali oni koji su zainteresirani nastoje istražiti prednosti i nedostatke koje svaki format nudi.

I tu dolazi kodek o kojem ćemo danas govoriti, a to je da je kao takav JPEG format slike jedan od najpopularnijih, ali to ne znači da je i najbolji, jer postoje i drugi formati koji nude mnoge prednosti u odnosu na ovo.

libjpeg-turbo je rješenje za neke nedostatke JPEG-a u usporedbi s drugim formatima, kao što je spomenuto u njegovom GitHub repozitoriju:

libjpeg-turbo je JPEG slikovni kodek koji koristi SIMD upute za ubrzavanje referentne JPEG kompresije i dekompresije na x86, x86-64, Arm, PowerPC i MIPS sustavima, kao i progresivnu JPEG kompresiju na x86, x86-64 i arm . Na takvim sustavima, libjpeg-turbo je općenito 2-6 puta brži od libjpega, ako su svi ostali jednaki. Na drugim vrstama sustava, libjpeg-turbo još uvijek može znatno nadmašiti libjpeg, zahvaljujući visoko optimiziranim Huffmanovim rutinama kodiranja. U mnogim slučajevima, izvedba libjpeg-turbo-a nadmašuje performanse vlasničkih JPEG kodeka velike brzine.

libjpeg-turbo implementira i tradicionalni libjpeg API i manje moćan, ali jednostavniji TurboJPEG API. libjpeg-turbo također sadrži proširenja prostora boja koja mu omogućuju kompresiju/dekompresiju na 32-bitne i big-endian međuspremnike piksela (RGBX, XBGR, itd.), kao i potpuno opremljeno Java sučelje.

Libjpeg-turbo je API/ABI-kompatibilna fork klasične libjpeg biblioteke , dizajnirana za pružanje najbržih brzina kodiranja i dekodiranja. Uz standardni libjpeg API, biblioteka nudi vlastiti TurboJPEG API i niz proširenja s modelima prikaza boja koji omogućuju kompresiju slika u 32-bitne pikselne međuspremnike (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:

  • Dodana podrška za poduzorkovanje boja 4:1:1, što vam omogućuje pretvaranje, obrezivanje i rotiranje 4:1:1 poduzorkovanih JPEG slika bez gubitka kvalitete, kao i njihovo dekomprimiranje i pretvaranje u YUV model boja.
  • Značajno ubrzan izračun optimalnih Huffmanovih tablica. Za male slike (256×256), promjena je omogućila smanjenje vremena kompresije do dva puta.
  • Dodana je mogućnost primjene aritmetičkog entropijskog kodiranja za JPEG slike s 12-bitnim prikazom boja po kanalu.
  • TurboJPEG API značajno je redizajniran kako bi se uklonila postojeća ograničenja i povećala proširivost. Na primjer, sve C funkcije sada imaju prefiks "tj3".
  • Mnoge zastavice i modovi pretvoreni su iz argumenata funkcije u općenite API parametre.
  • Podrška za slike s 12 i 16 bita boje po kanalu u načinima rada s gubicima i bez gubitaka.
  • Dodan je način rada JPEG datoteke bez gubitaka, koji je dostupan za slike s 8, 12 i 16 bita boje po kanalu. Dodana je nova funkcija jpeg_enable_lossless() i opcija naredbenog retka “-lossless”.
  • Uklonjena su zastarjela polja, konstruktori i metode u Java TurboJPEG API-ju.

Na kraju, treba spomenuti da u budućnosti autor libjpeg-turbo namjerava ograničiti rad na projektu samo na izdavanje ažuriranja s ispravcima grešaka. Razvoj nove verzije 3.1 neće započeti dok se ne osiguraju sredstva za projekt.

Za one koje zanima kod , distribuira se pod tri BSD-slične licence: IJG, modificirana od strane BSD-a i zlib. Binarne datoteke dostupne su za Linux, macOS i Windows. Više detalja i preuzimanje binarnih datoteka možete pronaći na sljedećoj poveznici.


Dodaj kao preferirani izvor na Googleu