libjpeg-turbo, kodeklis JPEG attēlu kodēšanai un atkodēšanai

libjpeg-turbo

libjpeg-turbo sākotnēji tika balstīts uz libjpeg/SIMD — ar MMX paātrinātu libjpeg v6b atvasinājumu.

Operētājsistēmā Linux, kad runa ir par kodekiem, lielākā daļa lietotāju parasti par to neuztraucas, jo daudzos izplatījumos šī problēma parasti jau ir atrisināta, iekļaujot to mērķī pēc noklusējuma, papildus lietojumprogrammu skatīšanai vai rediģēšanai, viņi arī sniedz savu ieguldījumu. smilšu, ieskaitot dažas ekstras.

Bet kas notiek, ja lietotājs vēlas uzlabot veiktspēju noteiktos aspektos, piemēram, rediģēšanas uzdevumiem vai vienkāršai atpūtai. Šajā daļā ne visi lietotāji iesaistās, bet interesentiem ir tendence izpētīt katra formāta priekšrocības un trūkumus.

Un šeit parādās kodeks, par kuru mēs šodien runāsim, un tas ir, ka JPEG attēla formāts kā tāds ir viens no populārākajiem, taču tas nenozīmē, ka tas ir labākais, jo ir arī citi formāti, piedāvā daudzas priekšrocības salīdzinājumā ar to.

libjpeg-turbo ir risinājums dažiem JPEG trūkumiem salīdzinājumā ar citiem formātiem, kā minēts tā GitHub repozitorijā:

libjpeg-turbo ir JPEG attēla kodeks, kas izmanto SIMD instrukcijas, lai paātrinātu JPEG saspiešanu un atspiešanu x86, x86-64, Arm, PowerPC un MIPS sistēmās, kā arī progresīvo JPEG saspiešanu x86, x86-64 un arm . Šādās sistēmās libjpeg-turbo parasti ir 2–6 reizes ātrāks nekā libjpeg, viss pārējais ir vienāds. Citu veidu sistēmās libjpeg-turbo joprojām var ievērojami pārspēt libjpeg, pateicoties tā augsti optimizētajai Huffman kodēšanas kārtībai. Daudzos gadījumos libjpeg-turbo veiktspēja konkurē ar patentētiem ātrdarbīgiem JPEG kodekiem.

libjpeg-turbo ievieš gan tradicionālo libjpeg API, gan mazāk jaudīgo, bet vienkāršāko TurboJPEG API. libjpeg-turbo ir arī krāsu telpas paplašinājumi, kas ļauj to saspiest/atspiest līdz 32 bitu un liela izmēra pikseļu buferiem (RGBX, XBGR utt.), kā arī pilnvērtīgu Java interfeisu.

Libjpeg-turbo ir API/ABI saderīga klasiskās libjpeg bibliotēkas atzara versija , kas izstrādāta, lai nodrošinātu ātrāko kodēšanas un dekodēšanas ātrumu. Papildus standarta libjpeg API bibliotēka nodrošina savu TurboJPEG API un vairākus paplašinājumus ar krāsu atveidošanas modeļiem, kas ļauj attēlus saspiest 32 bitu pikseļu buferos (RGBX, XBGR) vai dekodēt.

Citās arhitektūrās paātrinājums nav tik ievērojams, taču, pateicoties optimizētu Hafmana kodēšanas funkciju izmantošanai, bibliotēka joprojām ir ievērojami ātrāka nekā libjpeg un veiktspējas ziņā tuvojas augstas kvalitātes patentētiem JPEG kodekiem.

Vērts pieminēt, ka ibjpeg-turbo nesen saņēma savu jauno 3.0 versiju , un galvenie šajā jaunajā versijā izceltie jauninājumi ir šādi:

  • Pievienots 4:1:1 krāsu apakšizlases atbalsts, kas ļauj konvertēt, apgriezt un pagriezt 4:1:1 apakšizlases JPEG attēlus bez kvalitātes zuduma, kā arī atspiest un pārveidot tos YUV krāsu modelī.
  • Ievērojami paātrināts optimālo Huffman tabulu aprēķins. Maziem attēliem (256 × 256) izmaiņas ļāva samazināt saspiešanas laiku līdz pat divām reizēm.
  • Pievienota iespēja izmantot aritmētiskās entropijas kodēšanu JPEG attēliem ar 12 bitu kanāla krāsu attēlojumu.
  • TurboJPEG API ir ievērojami pārveidota, lai novērstu esošos ierobežojumus un palielinātu paplašināmību. Piemēram, visām C funkcijām tagad ir prefikss "tj3".
  • Daudzi karodziņi un režīmi ir pārveidoti no funkciju argumentiem uz vispārīgiem API parametriem.
  • Atbalsts attēliem ar 12 un 16 bitiem krāsu katrā kanālā zudumu un bezzudumu režīmā.
  • Ir pievienots bezzudumu JPEG faila režīms, kas ir pieejams attēliem ar 8, 12 un 16 krāsu bitiem katrā kanālā. Pievienota jauna funkcija jpeg_enable_lossless() un komandrindas opcija “-lossless”.
  • Java TurboJPEG API ir noņemti novecojušie lauki, konstruktori un metodes.

Visbeidzot, jāpiemin, ka turpmāk libjpeg-turbo autors plāno ierobežot darbu pie projekta, izlaižot tikai atjauninājumus ar kļūdu labojumiem. Jaunās versijas 3.1 izstrāde netiks uzsākta, kamēr nebūs iegūts finansējums projektam.

Tiem, kurus interesē kods , tas tiek izplatīts saskaņā ar trim BSD līdzīgām licencēm: IJG, ko modificējusi BSD, un zlib. Binārie faili ir pieejami operētājsistēmām Linux, macOS un Windows. Plašāku informāciju varat atrast un bināros failus lejupielādēt, izmantojot šo saiti.


Pievienot kā vēlamo avotu pakalpojumā Google