libjpeg-turbo er en åpen kildekode, cross-platform og helt fri programvare utviklet for å gi en high-speed versjon av den originale libjpeg bibliotek programvare, spesielt laget for x86 og x86-64-prosessorer, som bruker SIMD ( enkelt~~POS=TRUNC Instruction, Multiple data-) instruksjoner, for eksempel SSE2, MMX og NEON, for å akselerere baseline JPEG dekompresjon og kompresjon.
En ekstremt rask JPEG bildekodek
Programvaren er en ekstremt rask JPEG bildekodek som er generelt 2-4x raskere enn den umodifiserte versjonen av libjpeg. Prosjektet var opprinnelig basert på libjpeg / SIMD prosjekt som er opprettet av Miyasaka Masaru.
Implementerer den tradisjonelle libjpeg API
Denne turbo-versjonen av libjpeg biblioteket implementerer også den tradisjonelle libjpeg API, i tillegg til den enkle TurboJPEG API. Det har fargerom utvidelser, som tillater brukere å komprimere fra eller dekomprimere til store-endian og 32-bit pixel buffere (XBGR, RGBX, etc.), og en fullverdig Java grensesnitt.
Fordelt som innfødte installatører for DEB og RPM-baserte operativsystemer
For enkelhets skyld, er programvaren distribueres som innfødte installatører for DEB og RPM-baserte operativsystemer, slik som Debian, Ubuntu, Linux Mint, Fedora, CentOS, Red Hat Enterprise Linux, opensuse, Mageia, etc., og støtter både 64 og 32-bits maskinvareplattformer.
Komme i gang med libjpeg-turbo
libjpeg-turbo prosjektet kan enkelt installeres fra de viktigste programvare repositories av en GNU / Linux-distribusjon. Det vil også bli installert automatisk sammen med all programvare som krever det.
For å installere den manuelt ved hjelp av kilden pakken, i tilfelle du ønsker å optimalisere den for maskinvarearkitektur / operativsystem, laste ned og lagre den nyeste arkivet fra Softoware, pakke ut innholdet ved hjelp av en arkiv manager verktøyet, åpne en Terminal app og gå til plasseringen av den utpakkede arkivfil (f.eks cd / home / softoware / libjpeg-turbo).
Deretter kjører den & quot; ./ configure && gjøre & rsquo; kommando for å konfigurere og kompilere programmet, etterfulgt av & quot; sudo make install & rsquo; commad å installere det hele systemet og gjøre den tilgjengelig for alle programmer
Hva er nytt i denne utgaven.
- < li> Fikset en bygge saken på OS X PowerPC plattformer (md5cmp unnlatt å bygge fordi OS X ikke gir le32toh () og htole32 () funksjoner.).
- Den ikke-SIMD RGB565 fargekonverteringskoden ikke fungerte riktig på big endian maskiner. Dette har blitt fikset.
- Fikset et problem i tjPlaneSizeYUV () der det ville feilaktig returnere en istedenfor -1 hvis ComponentID var & gt; 0 og subsamp var TJSAMP_GRAY.
- Fikset et problem i tjBufSizeYUV2 () wherby det ville feilaktig returnere 0 istedenfor -1 hvis bredde var & lt; 1.
- Huffman koderen bruker nå CLZ og BSR instruksjoner for litt telling på ARM64 plattformer.
- Den nære () metoden i TJCompressor og TJDecompressor Java-klasser er nå idempotent. Tidligere ville at metoden kaller de innfødte tjDestroy () -funksjonen selv om TurboJPEG eksempel hadde allerede blitt ødelagt. Dette forårsaket et unntak for å bli kastet under sluttføring, hvis close () metode hadde allerede blitt kalt. Unntaket ble fanget, men det var fortsatt en dyr operasjon.
- TurboJPEG API tidligere genererte en feil (& quot; Kunne ikke bestemme delsampling type for JPEG-bilde & quot;) når du forsøker å dekomprimere gråtoner JPEG-bilder som ble komprimert med en sampling faktor annet enn en (for eksempel med "cjpeg -grayscale - prøven 2x2 "). Delsampling teknisk har ingen mening med gråtoner JPEG, og dermed de horisontale og vertikale prøvetaking faktorer for slike bilder blir ignorert av dekomprimereren. Men TurboJPEG API var å være for rigid og var ventet prøvetakings faktorer for å være lik en før den behandles bildet som et gråtonebilde JPEG.
- cjpeg, djpeg, og jpegtran aksepterer nå et argument for -versjon, som vil skrive ut bibliotek versjon og avslutte.
- Med henvisning til 1.4 beta1 [15], en annen svært sjelden omstendighet ble oppdaget under hvilke Huffman koderen lokale bufferen kan bli overkjørt når en bufret reisemål leder brukes, og en ekstremt høy frekvensblokk (i utgangspunktet useriøs bildedata) er blir kodet. Selv om Huffman lokal buffer ble økt fra 128 byte til 136 byte for å løse forrige utgave, den nye utgaven forårsaket enda større buffer for å bli overkjørt. Videre analyser viser at det i den absolutte verste fall (for eksempel å sette vekslende AC koeffisienter til 32767 og -32768 i JPEG-skanning rekkefølge), Huffman koderen kan produsere kodede blokker som nærmer doble størrelsen på ukodet blokker. Dermed ble Huffman lokal buffer økt til 256 bytes, som skal hindre en slik sak fra re-forekommende i fremtiden.
- Den nye tjPlaneSizeYUV (), tjPlaneWidth (), og tjPlaneHeight () funksjoner var faktisk ikke brukes på alle plattformer, bortsett fra OS X og Windows, fordi disse funksjonene ikke ble inkludert i libturbojpeg mapfile. Dette har blitt fikset.
- Restaurert de JPP (), JMETHOD (), og langt makroer i libjpeg-turbo header filer. De JPP () og JMETHOD () makroer opprinnelig ble innført i libjpeg som en måte å støtte ikke-ANSI kompilatorer som manglet støtte for prototypeparametere. libjpeg-turbo har aldri støttet slike kompilatorer, men noen programvarepakker fortsatt bruke makroer til å definere sine egne prototyper. Tilsvarende har libjpeg-turbo aldri støttet MS-DOS og andre plattformer som har langt symboler, men noen programvarepakker fortsatt bruke FAR makro. En ganske godt argument kan gjøres at dette er en dårlig praksis på den delen av programvaren i spørsmålet, men siden dette påvirker mer enn en pakke, det er bare lettere å fikse det her.
- Faste saker som ble hindrer ARM 64-bits SIMD-kode fra kompilering for iOS, og inkluderte en ARMv8 arkitektur i alle binærfiler installert av & quot; offisielle & quot; libjpeg-turbo SDK for OS X.
Hva er nytt i versjon 1.4.2:
- Fikset en bygge saken på OS X PowerPC plattformer ( md5cmp mislyktes i å bygge fordi OS X ikke gir le32toh () og htole32 () funksjoner.).
- Den ikke-SIMD RGB565 fargekonverteringskoden ikke fungerte riktig på big endian maskiner. Dette har blitt fikset.
- Fikset et problem i tjPlaneSizeYUV () der det ville feilaktig returnere en istedenfor -1 hvis ComponentID var & gt; 0 og subsamp var TJSAMP_GRAY.
- Fikset et problem i tjBufSizeYUV2 () wherby det ville feilaktig returnere 0 istedenfor -1 hvis bredde var & lt; 1.
- Huffman koderen bruker nå CLZ og BSR instruksjoner for litt telling på ARM64 plattformer.
- Den nære () metoden i TJCompressor og TJDecompressor Java-klasser er nå idempotent. Tidligere ville at metoden kaller de innfødte tjDestroy () -funksjonen selv om TurboJPEG eksempel hadde allerede blitt ødelagt. Dette forårsaket et unntak for å bli kastet under sluttføring, hvis close () metode hadde allerede blitt kalt. Unntaket ble fanget, men det var fortsatt en dyr operasjon.
- TurboJPEG API tidligere genererte en feil (& quot; Kunne ikke bestemme delsampling type for JPEG-bilde & quot;) når du forsøker å dekomprimere gråtoner JPEG-bilder som ble komprimert med en sampling faktor annet enn en (for eksempel med "cjpeg -grayscale - prøven 2x2 "). Delsampling teknisk har ingen mening med gråtoner JPEG, og dermed de horisontale og vertikale prøvetaking faktorer for slike bilder blir ignorert av dekomprimereren. Men TurboJPEG API var å være for rigid og var ventet prøvetakings faktorer for å være lik en før den behandles bildet som et gråtonebilde JPEG.
- cjpeg, djpeg, og jpegtran aksepterer nå et argument for -versjon, som vil skrive ut bibliotek versjon og avslutte.
- Med henvisning til 1.4 beta1 [15], en annen svært sjelden omstendighet ble oppdaget under hvilke Huffman koderen lokale bufferen kan bli overkjørt når en bufret reisemål leder brukes, og en ekstremt høy frekvensblokk (i utgangspunktet useriøs bildedata) er blir kodet. Selv om Huffman lokal buffer ble økt fra 128 byte til 136 byte for å løse forrige utgave, den nye utgaven forårsaket enda større buffer for å bli overkjørt. Videre analyser viser at det i den absolutte verste fall (for eksempel å sette vekslende AC koeffisienter til 32767 og -32768 i JPEG-skanning rekkefølge), Huffman koderen kan produsere kodede blokker som nærmer doble størrelsen på ukodet blokker. Dermed ble Huffman lokal buffer økt til 256 bytes, som skal hindre en slik sak fra re-forekommende i fremtiden.
- Den nye tjPlaneSizeYUV (), tjPlaneWidth (), og tjPlaneHeight () funksjoner var faktisk ikke brukes på alle plattformer, bortsett fra OS X og Windows, fordi disse funksjonene ikke ble inkludert i libturbojpeg mapfile. Dette har blitt fikset.
- Restaurert de JPP (), JMETHOD (), og langt makroer i libjpeg-turbo header filer. De JPP () og JMETHOD () makroer opprinnelig ble innført i libjpeg som en måte å støtte ikke-ANSI kompilatorer som manglet støtte for prototypeparametere. libjpeg-turbo har aldri støttet slike kompilatorer, men noen programvarepakker fortsatt bruke makroer til å definere sine egne prototyper. Tilsvarende har libjpeg-turbo aldri støttet MS-DOS og andre plattformer som har langt symboler, men noen programvarepakker fortsatt bruke FAR makro. En ganske godt argument kan gjøres at dette er en dårlig praksis på den delen av programvaren i spørsmålet, men siden dette påvirker mer enn en pakke, det er bare lettere å fikse det her.
- Faste saker som ble hindrer ARM 64-bits SIMD-kode fra kompilering for iOS, og inkluderte en ARMv8 arkitektur i alle binærfiler installert av & quot; offisielle & quot; libjpeg-turbo SDK for OS X.
Hva er nytt i versjon 1.4.0:
- Fikset en bygge saken på OS X PowerPC plattformer ( md5cmp mislyktes i å bygge fordi OS X ikke gir le32toh () og htole32 () funksjoner.).
- Den ikke-SIMD RGB565 fargekonverteringskoden ikke fungerte riktig på big endian maskiner. Dette har blitt fikset.
- Fikset et problem i tjPlaneSizeYUV () der det ville feilaktig returnere en istedenfor -1 hvis ComponentID var & gt; 0 og subsamp var TJSAMP_GRAY.
- Fikset et problem i tjBufSizeYUV2 () wherby det ville feilaktig returnere 0 istedenfor -1 hvis bredde var & lt; 1.
- Huffman koderen bruker nå CLZ og BSR instruksjoner for litt telling på ARM64 plattformer.
- Den nære () metoden i TJCompressor og TJDecompressor Java-klasser er nå idempotent. Tidligere ville at metoden kaller de innfødte tjDestroy () -funksjonen selv om TurboJPEG eksempel hadde allerede blitt ødelagt. Dette forårsaket et unntak for å bli kastet under sluttføring, hvis close () metode hadde allerede blitt kalt. Unntaket ble fanget, men det var fortsatt en dyr operasjon.
- TurboJPEG API tidligere genererte en feil (& quot; Kunne ikke bestemme delsampling type for JPEG-bilde & quot;) når du forsøker å dekomprimere gråtoner JPEG-bilder som ble komprimert med en sampling faktor annet enn en (for eksempel med "cjpeg -grayscale - prøven 2x2 "). Delsampling teknisk har ingen mening med gråtoner JPEG, og dermed de horisontale og vertikale prøvetaking faktorer for slike bilder blir ignorert av dekomprimereren. Men TurboJPEG API var å være for rigid og var ventet prøvetakings faktorer for å være lik en før den behandles bildet som et gråtonebilde JPEG.
- cjpeg, djpeg, og jpegtran aksepterer nå et argument for -versjon, som vil skrive ut bibliotek versjon og avslutte.
- Med henvisning til 1.4 beta1 [15], en annen svært sjelden omstendighet ble oppdaget under hvilke Huffman koderen lokale bufferen kan bli overkjørt når en bufret reisemål leder brukes, og en ekstremt høy frekvensblokk (i utgangspunktet useriøs bildedata) er blir kodet. Selv om Huffman lokal buffer ble økt fra 128 byte til 136 byte for å løse forrige utgave, den nye utgaven forårsaket enda større buffer for å bli overkjørt. Videre analyser viser at det i den absolutte verste fall (for eksempel å sette vekslende AC koeffisienter til 32767 og -32768 i JPEG-skanning rekkefølge), Huffman koderen kan produsere kodede blokker som nærmer doble størrelsen på ukodet blokker. Dermed ble Huffman lokal buffer økt til 256 bytes, som skal hindre en slik sak fra re-forekommende i fremtiden.
- Den nye tjPlaneSizeYUV (), tjPlaneWidth (), og tjPlaneHeight () funksjoner var faktisk ikke brukes på alle plattformer, bortsett fra OS X og Windows, fordi disse funksjonene ikke ble inkludert i libturbojpeg mapfile. Dette har blitt fikset.
- Restaurert de JPP (), JMETHOD (), og langt makroer i libjpeg-turbo header filer. De JPP () og JMETHOD () makroer opprinnelig ble innført i libjpeg som en måte å støtte ikke-ANSI kompilatorer som manglet støtte for prototypeparametere. libjpeg-turbo har aldri støttet slike kompilatorer, men noen programvarepakker fortsatt bruke makroer til å definere sine egne prototyper. Tilsvarende har libjpeg-turbo aldri støttet MS-DOS og andre plattformer som har langt symboler, men noen programvarepakker fortsatt bruke FAR makro. En ganske godt argument kan gjøres at dette er en dårlig praksis på den delen av programvaren i spørsmålet, men siden dette påvirker mer enn en pakke, det er bare lettere å fikse det her.
- Faste saker som ble hindrer ARM 64-bits SIMD-kode fra kompilering for iOS, og inkluderte en ARMv8 arkitektur i alle binærfiler installert av & quot; offisielle & quot; libjpeg-turbo SDK for OS X.
Hva er nytt i versjon 1.3.0:
- [1] "gjøre test" fungerer nå riktig på FreeBSD, og det ikke lenger krever md5sum kjør å være til stede på andre Un * x plattformer.
- [2] Overhalt emballasjesystemet: - For å unngå konflikt med leverandør levert libjpeg-turbo pakker, har de offisielle turtall og Debs for libjpeg-turbo blitt omdøpt til & quot; libjpeg-turbo-offisielle & quot ;. - De TurboJPEG bibliotekene er nå plassert under / opt / libjpeg-turbo i de offisielle Linux og Mac pakker, for å unngå konflikt med leverandør levert pakker og også for å effektivisere emballasjesystemet. - Slipp pakkene er nå opprettet med katalogstrukturen definert av Konfigurer variablene & quot; prefiks & quot ;, & quot; bindir & quot ;, & quot; libdir & quot ;, etc. (Un * x) eller ved CMAKE_INSTALL_PREFIX variabel (Windows). Unntaket er at docs er alltid plassert under systemet standard dokumentasjon katalog på Un * x og Mac-systemer, og på Windows, er det TurboJPEG DLL alltid ligger i systemkatalogen Windows. - For å unngå forvirring, offisielle libjpeg-turbo pakker på Linux / Unix-plattformer (unntatt for Mac) vil alltid installere 32-biters biblioteker i / opt / libjpeg-turbo / lib32 og 64-bits biblioteker i / opt / libjpeg- turbo / lib64. - Fikset et problem der, i noen tilfeller, libjpeg-turbo kjørbare filer på Un * x systemer ble ikke riktig å knytte med de delte bibliotekene installert av den samme pakken. - Fikset et problem der bygge & quot; installatør & quot; målrette på Windows når WITH_JAVA = 1 ville mislykkes hvis TurboJPEG JAR ikke hadde vært tidligere bygget. - Bygging av & quot; installere & quot; målet på Windows nå installerer filer inn i de samme stedene som installatøren gjør.
- [3] Fikset en Huffman encoder bug som forhindret I / O suspensjon fra fungerer.
Hva er nytt i versjon 1.2.0:
- En oppbygging problemet oppstår når du bruker YASM på Unix-systemer ble løst.
- en ut-av-grenser lest i SSE2 SIMD koden ble løst.
- Nye fargerom skjøte konstanter som gjør at programmer for å angi at ubrukt byte i en 4-byte RGB buffer bør behandles som en alfakanal når dekomprimere ble lagt til.
- En regresjon problemet oppstod når du bygger djevel med libjpeg-turbo ble fikset.
- iOS støtte ble lagt til libjpeg-turbo SDK for Mac.
Hva er nytt i versjon 1.1 Beta 1:
- libjpeg-turbo kan bygges for å emulere libjpeg v7 eller V8B API / ABI.
- Windows build-systemet bruker nå CKontroller.
- TurboJPEG / OSS Nå kan komprimere fra / dekomprimere til gråtoner bitmaps og konvertere RGB eller JPEG-bilder til YUV planar utgang.
- jpgtest kan brukes til å teste dekompresjon ytelse med eksisterende JPEG-bilder.
- Valgfritt aritmetisk koding og dekoding støtte ble lagt til.
- Ytterligere beskyttelse ble lagt mot ugyldige Huffman-koder.
Hva er nytt i versjon 1.0.0.
- bygge videre forbedringer på FreeBSD
- Unix / Linux-pakken inkluderer nå libjpeg kjøre-time programmer (cjpeg, etc.) og man-sidene.
- Det er en 32-bit tilleggspakke for AMD64 Debian-systemer.
- Cygwin støtte.
- Full støtte for bygging / testing på ikke-x86-arkitekturer.
- 64-bit OS X binærfiler er nå bakoverkompatibel med OS X 10.4.
- Det finnes ulike Linux-emballasje tweaks.
Hva er nytt i versjon 0.0.91:
- Lagt dokumentasjon til .deb pakker
- Faste dataødeleggelsesfeil når dekomprimere store JPEG-bilder og / eller bruke bufret I / O med libjpeg-turbo decompressor
Kommentarer ikke funnet