libjpeg-turbo bol pôvodne založený na libjpeg/SIMD, MMX akcelerovanom deriváte libjpeg v6b
V Linuxe, pokiaľ ide o kodeky, si to väčšina používateľov zvyčajne nerobí starosti, pretože v mnohých distribúciách je tento problém už zvyčajne vyriešený tým, že sú štandardne zahrnuté v cieli, okrem prezerania alebo úpravy aplikácií tiež prispievajú svojim obsahom piesku vrátane niektorých doplnkov.
Čo sa však stane, keď chce používateľ zlepšiť výkon v určitých aspektoch, povedzme pri úpravách úloh alebo pri jednoduchom oddychu. Do tejto časti sa nezapoja všetci používatelia, no tí, ktorí majú záujem, majú tendenciu skúmať výhody a nevýhody, ktoré jednotlivé formáty ponúkajú.
A tu prichádza na scénu kodek, o ktorom sa dnes budeme baviť, a to, že obrazový formát JPEG ako taký je jedným z najpopulárnejších, ale to neznamená, že je najlepší, pretože existujú aj iné formáty, ktoré ponúkajú oproti tomu mnohé výhody.
Balík libjpeg-turbo je riešením niektorých nedostatkov formátu JPEG v porovnaní s inými formátmi, ako je uvedené v jeho repozitári GitHub:
libjpeg-turbo je obrázkový kodek JPEG, ktorý používa inštrukcie SIMD na zrýchlenie porovnávacej kompresie a dekompresie JPEG na systémoch x86, x86-64, Arm, PowerPC a MIPS, ako aj progresívnu kompresiu JPEG na systémoch x86, x86-64 a arm . Na takýchto systémoch je libjpeg-turbo vo všeobecnosti 2-6 krát rýchlejší ako libjpeg, pričom všetko ostatné je rovnaké. Na iných typoch systémov môže libjpeg-turbo stále výrazne prekonávať libjpeg, a to vďaka svojim vysoko optimalizovaným Huffmanovým kódovacím rutinám. V mnohých prípadoch výkon libjpeg-turbo konkuruje výkonu proprietárnych vysokorýchlostných kodekov JPEG.
libjpeg-turbo implementuje tradičné libjpeg API aj menej výkonné, ale jednoduchšie TurboJPEG API. libjpeg-turbo obsahuje aj rozšírenia farebného priestoru, ktoré mu umožňujú komprimovať/dekomprimovať na 32-bitové a big-endian pixelové vyrovnávacie pamäte (RGBX, XBGR atď.), ako aj plnohodnotné rozhranie Java.
Libjpeg-turbo je odnož klasickej knižnice libjpeg kompatibilná s API/ABI , navrhnutá tak, aby poskytovala najrýchlejšie kódovanie a dekódovanie. Okrem štandardného rozhrania libjpeg API poskytuje knižnica vlastné rozhranie TurboJPEG API a množstvo rozšírení s modelmi vykresľovania farieb, ktoré umožňujú kompresiu obrázkov do 32-bitových pixelových vyrovnávacích pamätí (RGBX, XBGR) alebo ich dekódovanie.
Na iných architektúrach nie je zrýchlenie také výrazné, ale vďaka použitiu optimalizovaných funkcií Huffmanovho kódovania je knižnica stále citeľne rýchlejšia ako libjpeg a z hľadiska výkonu sa približuje vysokokvalitným proprietárnym JPEG kodekom.
Za zmienku stojí, že ibjpeg-turbo nedávno dostal svoju novú vetvu 3.0 a hlavné inovácie, ktoré táto nová verzia zdôraznila, sú nasledovné:
- Pridaná podpora pre podvzorkovanie farieb 4:1:1, čo vám umožňuje konvertovať, orezávať a otáčať podvzorkované obrázky JPEG v pomere 4:1:1 bez straty kvality, ako aj dekomprimovať a konvertovať na farebný model YUV.
- Výrazne zrýchlený výpočet optimálnych Huffmanových tabuliek. Pri malých obrázkoch (256×256) zmena umožnila skrátiť čas kompresie až dvojnásobne.
- Pridaná možnosť použiť aritmetické entropické kódovanie pre obrázky JPEG s 12-bitovým zobrazením farieb na kanál.
- TurboJPEG API bolo výrazne prepracované, aby sa odstránili existujúce obmedzenia a zvýšila sa rozšíriteľnosť. Napríklad všetky funkcie C majú teraz predponu „tj3“.
- Mnoho príznakov a režimov bolo prevedených z argumentov funkcií na všeobecné parametre API.
- Podpora obrázkov s 12 a 16 bitmi farieb na kanál v stratových a bezstratových režimoch.
- Bol pridaný režim bezstratových súborov JPEG, ktorý je k dispozícii pre obrázky s 8, 12 a 16 bitmi farieb na kanál. Pridaná nová funkcia jpeg_enable_lossless() a možnosť príkazového riadku „-lossless“.
- V Java TurboJPEG API boli odstránené zastarané polia, konštruktory a metódy.
Na záver treba spomenúť, že v budúcnosti má autor libjpeg-turbo v úmysle obmedziť prácu na projekte len na vydávanie aktualizácií s opravami chýb. Vývoj novej verzie 3.1 sa začne až po získaní financií na projekt.
Pre tých, ktorí majú záujem o kód , je distribuovaný pod tromi licenciami podobnými BSD: IJG, modifikovaná BSD a zlib. Binárne súbory sú dostupné pre Linux, macOS a Windows. Viac informácií a stiahnutie binárnych súborov nájdete na nasledujúcom odkaze.