libjpeg-turbo, en kodek for koding og dekoding av JPEG-bilder

libjpeg-turbo

libjpeg-turbo var opprinnelig basert på libjpeg/SIMD , en MMX-akselerert derivat av libjpeg v6b

I Linux, når det kommer til kodeker, bekymrer de fleste brukere seg vanligvis ikke for det, siden i mange distribusjoner er dette problemet vanligvis allerede løst ved å være inkludert i målet som standard, i tillegg til å se eller redigere applikasjoner, bidrar de også av sand inkludert noen ekstrautstyr.

Men hva skjer når en bruker ønsker å forbedre ytelsen i visse aspekter, for eksempel for redigeringsoppgaver eller for enkel fritid. I denne delen er ikke alle brukere involvert, men for de som er interessert har de en tendens til å undersøke fordelene og ulempene som hvert format byr på.

Og det er her kodeken vi skal snakke om i dag kommer inn, og det er at JPEG-bildeformatet som sådan er et av de mest populære, men dette betyr ikke at det er det beste, siden det er andre formater som gir mange fordeler i forhold til dette.

libjpeg-turbo er en løsning på noen av manglene ved JPEG sammenlignet med andre formater, som nevnt i GitHub-repositoriet:

libjpeg-turbo er en JPEG-bildekodek som bruker SIMD-instruksjoner for å akselerere benchmark JPEG-komprimering og dekompresjon på x86, x86-64, Arm, PowerPC og MIPS-systemer, samt progressiv JPEG-komprimering på x86, x86-64 og arm . På slike systemer er libjpeg-turbo generelt 2-6 ganger raskere enn libjpeg, alt annet likt. På andre typer systemer kan libjpeg-turbo fortsatt utkonkurrere libjpeg med en betydelig mengde, i kraft av sine svært optimaliserte Huffman-kodingsrutiner. I mange tilfeller kan libjpeg-turbos ytelse konkurrere med proprietære høyhastighets JPEG-kodeker.

libjpeg-turbo implementerer både den tradisjonelle libjpeg API og den mindre kraftige, men enklere TurboJPEG API. libjpeg-turbo har også fargeromsutvidelser som lar den komprimere/dekomprimere til 32-bit og big-endian pikselbuffere (RGBX, XBGR, etc.), samt et fullverdig Java-grensesnitt.

Libjpeg-turbo er en API/ABI-kompatibel forgrening av det klassiske libjpeg-biblioteket , designet for å gi de raskeste kodings- og dekodingshastighetene. I tillegg til standard libjpeg API, tilbyr biblioteket sitt eget TurboJPEG API og en rekke utvidelser med fargegjengivelsesmodeller som lar bilder komprimeres til 32-bit pikselbuffere (RGBX, XBGR) eller dekodes.

På andre arkitekturer er ikke akselerasjonen like betydelig, men på grunn av bruken av optimaliserte Huffman-kodingsfunksjoner er biblioteket fortsatt merkbart raskere enn libjpeg og nærmer seg proprietære JPEG-kodeker av høy kvalitet når det gjelder ytelse.

Det er verdt å nevne at ibjpeg-turbo nylig mottok sin nye 3.0-gren , og de viktigste nyvinningene som er fremhevet i denne nye versjonen er følgende:

  • Lagt til støtte for 4:1:1 fargesubsampling, slik at du kan konvertere, beskjære og rotere 4:1:1 subsamplede JPEG-bilder uten kvalitetstap, samt dekomprimere og konvertere dem til YUV-fargemodellen.
  • Betydelig akselerert beregning av optimale Huffman-tabeller. For smÃ¥ bilder (256×256) tillot endringen at komprimeringstiden ble redusert med opptil to ganger.
  • Lagt til muligheten til Ã¥ bruke aritmetisk entropikoding for JPEG-bilder med 12-biter-per-kanal fargerepresentasjon.
  • TurboJPEG API har blitt betydelig redesignet for Ã¥ fjerne eksisterende begrensninger og øke utvidbarheten. For eksempel er alle C-funksjoner nÃ¥ prefiksert med "tj3".
  • Mange flagg og moduser har blitt konvertert fra funksjonsargumenter til generelle API-parametere.
  • Støtte for bilder med 12 og 16 bits farge per kanal i tapsfrie og tapsfrie moduser.
  • Tapsfri JPEG-filmodus er lagt til, som er tilgjengelig for bilder med 8, 12 og 16 biter farge per kanal. Lagt til ny funksjon jpeg_enable_lossless() og kommandolinjealternativet "-lossless".
  • Fjernet utdaterte felt, konstruktører og metoder i Java TurboJPEG API.

Til slutt bør det nevnes at forfatteren av libjpeg-turbo i fremtiden har til hensikt å begrense arbeidet med prosjektet til kun å gi ut oppdateringer med feilrettinger. Utviklingen av den nye versjonen 3.1 starter ikke før finansiering av prosjektet er innhentet.

For de som er interessert i koden , er den distribuert under tre BSD-lignende lisenser: IJG, modifisert av BSD, og ​​zlib. Binærfiler er tilgjengelige for Linux, macOS og Windows. Du kan finne mer informasjon og laste ned binærfilene fra følgende lenke.


Legg til som foretrukket kilde i Google