libjpeg-turbo, kodek JPEG-piltide kodeerimiseks ja dekodeerimiseks

libjpeg-turbo

libjpeg-turbo põhines algselt libjpeg/SIMD-l, mis on libjpeg v6b MMX-kiirendatud tuletis.

Linuxis, mis puutub koodekitesse, siis enamik kasutajaid selle pärast tavaliselt ei muretse, kuna paljudes distributsioonides on see probleem tavaliselt juba lahendatud, lisades need vaikimisi sihtmärki, lisaks rakenduste vaatamisele või redigeerimisele annavad nad ka oma osa. liiva, sealhulgas mõned lisad.

Mis juhtub aga siis, kui kasutaja soovib teatud aspektides jõudlust parandada, näiteks redigeerimisülesannete või lihtsa vaba aja veetmise jaoks. Selles osas ei osale kõik kasutajad, kuid huvilised kipuvad uurima iga vormingu eeliseid ja puudusi.

Siin tulebki sisse koodek, millest me täna räägime, ja see tähendab, et sellisena on JPEG-pildivorming üks populaarsemaid, kuid see ei tähenda, et see oleks parim, kuna on ka teisi vorminguid, pakuvad selle ees palju eeliseid.

libjpeg-turbo on lahendus mõnele JPEG-i puudusele võrreldes teiste vormingutega, nagu on mainitud selle GitHubi repositooriumis:

libjpeg-turbo on JPEG-kujutise koodek, mis kasutab SIMD-juhiseid, et kiirendada JPEG-tihendust ja -lahutamist x86-, x86-64-, Arm-, PowerPC- ja MIPS-süsteemides, samuti progresseeruvat JPEG-tihendust x86-, x86-64- ja arm-süsteemides. Sellistes süsteemides on libjpeg-turbo üldiselt 2–6 korda kiirem kui libjpeg, kõik muu on sama. Teist tüüpi süsteemides võib libjpeg-turbo oma kõrgelt optimeeritud Huffmani kodeerimisrutiinide tõttu siiski libjpegi märkimisväärselt ületada. Paljudel juhtudel konkureerib libjpeg-turbo jõudlus patenteeritud kiirete JPEG-koodekidega.

libjpeg-turbo rakendab nii traditsioonilist libjpeg API-t kui ka vähem võimsat, kuid lihtsamat TurboJPEG API-t. libjpeg-turbol on ka värviruumi laiendused, mis võimaldavad tihendada/lahti pakkida 32-bitisteks ja suurteks pikslipuhvriteks (RGBX, XBGR jne), samuti täisfunktsionaalne Java liides.

Libjpeg-turbo on klassikalise libjpeg teegi API/ABI-ühilduv haru , mis on loodud pakkuma kiireimaid kodeerimis- ja dekodeerimiskiirusi. Lisaks standardsele libjpeg API-le pakub teek oma TurboJPEG API-t ja mitmeid laiendusi värvirenderdusmudelitega, mis võimaldavad pilte tihendada 32-bitistesse pikslipuhvritesse (RGBX, XBGR) või dekodeerida.

Teistes arhitektuurides pole kiirendus nii märkimisväärne, kuid optimeeritud Huffmani kodeerimisfunktsioonide kasutamise tõttu on teek siiski märgatavalt kiirem kui libjpeg ja läheneb jõudluse poolest kvaliteetsetele patenteeritud JPEG-koodekitele.

Tasub mainida, et ibjpeg-turbo sai hiljuti oma uue 3.0 haru ja selle uue versiooni peamised uuendused on järgmised:

  • Lisatud on 4:1:1 värvide alamdiskreetmise tugi, mis võimaldab teil 4:1:1 alamdismplitud JPEG-pilte teisendada, kärpida ja pöörata ilma kvaliteedi kadumiseta, samuti neid lahti pakkida ja YUV-värvimudeliks teisendada.
  • Oluliselt kiirendatud optimaalsete Huffmani tabelite arvutamine. Väikeste piltide (256×256) puhul võimaldas muudatus tihendusaega kuni kaks korda vähendada.
  • Lisatud on võimalus rakendada aritmeetilist entroopia kodeerimist JPEG-piltidele 12-bitise kanali värviesitusega.
  • TurboJPEG API-d on olemasolevate piirangute eemaldamiseks ja laiendatavuse suurendamiseks oluliselt ümber kujundatud. Näiteks on nüüd kõigi C-funktsioonide eesliide "tj3".
  • Paljud lipud ja režiimid on teisendatud funktsiooni argumentidest üldisteks API parameetriteks.
  • Toetus piltidele, millel on 12 ja 16 bitti värvi kanali kohta kadudeta ja kadudeta režiimides.
  • Lisatud on kadudeta JPEG-failirežiim, mis on saadaval piltide jaoks, millel on 8, 12 ja 16 bitti värvi kanali kohta. Lisatud on uus funktsioon jpeg_enable_lossless() ja käsurea valik "-lossless".
  • Java TurboJPEG API-st on eemaldatud aegunud väljad, konstruktorid ja meetodid.

Lõpetuseks tuleb mainida, et tulevikus kavatseb libjpeg-turbo autor piirata tööd projekti kallal ainult veaparandustega värskenduste avaldamisega. Uue versiooni 3.1 väljatöötamist ei alustata enne, kui projekti rahastatakse.

Koodist huvitatutele : see levitatakse kolme BSD-laadse litsentsi alusel: IJG, BSD poolt modifitseeritud ja zlib. Binaarfailid on saadaval Linuxile, macOS-ile ja Windowsile. Lisateavet leiate ja binaarfailid saate alla laadida järgmiselt lingilt.


Lisa eelistatud allikana Google'is