libjpeg-turbo първоначално е базиран на libjpeg/SIMD, MMX-ускорено производно на libjpeg v6b
В Linux, когато става въпрос за кодеци, повечето потребители обикновено не се притесняват за това, тъй като в много дистрибуции този проблем обикновено вече е разрешен, като е включен в целта по подразбиране, в допълнение към прегледа или редактирането на приложения, Те също допринасят със своето зърно от пясък, включително някои екстри.
Но какво се случва, когато потребител иска да подобри производителността в определени аспекти, да речем за редактиране на задачи или за просто свободно време. В тази част не всички потребители се включват, но за тези, които се интересуват, те са склонни да проучат предимствата и недостатъците, които предлага всеки формат.
И тук идва кодекът, за който ще говорим днес и това е, че като такъв форматът на изображението JPEG е един от най-популярните, но това не означава, че е най-добрият, тъй като има други формати, които предлагат много предимства пред това.
libjpeg-turbo е решение на някои от недостатъците на JPEG в сравнение с други формати, както е споменато в хранилището му в GitHub:
libjpeg-turbo е JPEG кодек за изображения, който използва SIMD инструкции за ускоряване на референтна JPEG компресия и декомпресия на x86, x86-64, Arm, PowerPC и MIPS системи, както и прогресивна JPEG компресия на x86, x86-64 и arm . На такива системи libjpeg-turbo обикновено е 2-6 пъти по-бърз от libjpeg, при равни други условия. На други типове системи libjpeg-turbo все още може да превъзхожда libjpeg със значително количество, по силата на силно оптимизираните програми за кодиране на Huffman. В много случаи производителността на libjpeg-turbo се съревновава с тази на патентованите високоскоростни JPEG кодеци.
libjpeg-turbo прилага както традиционния API на libjpeg, така и по-малко мощния, но по-прост API на TurboJPEG. libjpeg-turbo също така разполага с разширения за цветово пространство, които му позволяват да компресира/декомпресира до 32-битови и big-endian пикселни буфери (RGBX, XBGR и т.н.), както и пълнофункционален Java интерфейс.
Libjpeg-turbo е съвместим с API/ABI fork на класическата библиотека libjpeg , проектиран да осигури най-бързи скорости на кодиране и декодиране. В допълнение към стандартния libjpeg API, библиотеката предоставя собствен TurboJPEG API и редица разширения с модели за цветопредаване, които позволяват изображенията да бъдат компресирани в 32-битови пикселни буфери (RGBX, XBGR) или декодирани.
При други архитектури ускорението не е толкова значително, но поради използването на оптимизирани функции за кодиране на Huffman, библиотеката все още е забележимо по-бърза от libjpeg и се доближава до висококачествени собствени JPEG кодеци по отношение на производителност.
Заслужава да се отбележи, че ibjpeg-turbo наскоро получи своя нов клон 3.0 , а основните нововъведения, подчертани в тази нова версия, са следните:
- Добавена е поддръжка за субсемплиране на цветове 4:1:1, което ви позволява да конвертирате, изрязвате и завъртате 4:1:1 субсемплирани JPEG изображения без загуба на качество, както и да ги декомпресирате и конвертирате в цветовия модел YUV.
- Значително ускорено изчисляване на оптимални таблици на Huffman. За малки изображения (256 × 256), промяната позволява времето за компресиране да бъде намалено до два пъти.
- Добавена е възможност за прилагане на аритметично ентропийно кодиране за JPEG изображения с 12-битово цветово представяне на канал.
- TurboJPEG API е значително преработен, за да премахне съществуващите ограничения и да увеличи разширяемостта. Например всички C функции вече имат префикс "tj3".
- Много флагове и режими са преобразувани от функционални аргументи в общи API параметри.
- Поддръжка за изображения с 12 и 16 бита цвят на канал в режими със загуба и без загуба.
- Добавен е режим на JPEG файл без загуба, който е достъпен за изображения с 8, 12 и 16 бита цвят на канал. Добавена е нова функция jpeg_enable_lossless() и опция на командния ред „-lossless“.
- Премахнати остарели полета, конструктори и методи в Java TurboJPEG API.
И накрая, трябва да се спомене, че в бъдеще авторът на libjpeg-turbo възнамерява да ограничи работата по проекта само до пускане на актуализации с корекции на грешки. Разработването на новата версия 3.1 няма да започне, докато не бъде получено финансиране за проекта.
За тези, които се интересуват от кода , той се разпространява под три лиценза, подобни на BSD: IJG, модифициран от BSD и zlib. Двоичните файлове са достъпни за Linux, macOS и Windows. Можете да намерите повече подробности и да изтеглите двоичните файлове от следния линк.