libjpeg-турбо е с отворен код, по-платформа и напълно безплатен софтуер проектиран да осигури високоскоростен версия на оригиналния софтуер libjpeg библиотека, специално изработени за x86 и x86-64 процесори, които използват SIMD ( една инструкция, множество данни) инструкции, като SSE2, MMX и неон, за да се ускори изходно JPEG декомпресия и компресия.
Изключително бърз JPEG кодек изображение
Софтуерът е изключително бърз JPEG кодек изображение, което обикновено е 2-4x по-бързо от немодифицирана версия на libjpeg. Проектът беше първоначално основава на проекта за libjpeg / SIMD създаден от Miyasaka Масару.
Осъществява традиционната libjpeg API
Това турбо версия на библиотеката libjpeg също изпълнява традиционната libjpeg API, както и ясна TurboJPEG API. Той разполага цветово разширения, което позволява на потребителите да се компресират от или декомпресиране на големите-къс и 32-битови пиксел буфери (XBGR, RGBX, и т.н.), и пълнофункционален Java интерфейс.
Разпределени както местни монтажници за DEB и RPM-базирани операционни системи
За ваше удобство, софтуерът се разпространява като местни монтажници за DEB и RPM-базирани операционни системи, като Debian, Ubuntu, Linux Mint, Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mageia и т.н., подкрепящи двете 64 и 32-битови хардуерни платформи.
Първи стъпки с libjpeg-турбо
Проектът libjpeg-турбо може лесно да бъде инсталиран от основните софтуерни хранилища на разпределение на GNU / Linux. Той също така ще се инсталира автоматично, заедно с всеки софтуер, който го изисква.
За да го инсталирате ръчно с помощта на пакета с изходния код, в случай, че искате да го оптимизира за вашия хардуер архитектура / операционна система, сваляне и спаси последната архива от Softoware, извличане на съдържанието му с помощта на помощна програма архив мениджър, отворете Terminal приложение и отидете на местоположението на добитите архив файл (например CD / начало / softoware / libjpeg-турбо).
След това, стартирайте & lsquo; ./ конфигуриране && направи & rsquo; команда, за да конфигурирате и компилирате програмата, следвана от & lsquo; Sudo да инсталирате & rsquo; commad да го инсталирате на цялата система и да я направи достъпна за всички приложения
Какво ново в тази версия:.
- < Li> Фиксиран натрупване издаване на OS X PowerPC платформи (md5cmp не успя да се изгради, защото OS X не предоставя le32toh () и htole32 () функции.).
- не-SIMD RGB565 цвят Кодът за преобразуване не работи правилно на големи къс машини. Това е фиксиран.
- Фиксирана проблем в tjPlaneSizeYUV (), при която той погрешно да се върне 1 вместо -1 ако componentID беше & GT; 0 и subsamp беше TJSAMP_GRAY.
- Фиксирана проблем в tjBufSizeYUV2 () wherby го погрешно да се върне 0 вместо -1 ако ширина беше & LT; 1.
- The енкодер Хъфман сега използва CLZ и BSR инструкции за малко разчита на ARM64 платформи.
- Методът на близо () в класовете TJCompressor и TJDecompressor Java е сега idempotent. Преди това, този метод ще извикате функцията родния tjDestroy (), дори ако инстанция TurboJPEG вече са били унищожени. Това предизвика изключение да бъдат изхвърлени по време на финализиране, ако методът на близо () вече е бил наречен. Изключение беше хванат, но тя все още е скъпа операция.
- The API TurboJPEG предварително генериран грешка (& quot; Не може да се определи типа пробовземане за JPEG изображение & quot;), когато се опитват да се декомпресира сивото JPEG изображения, които са компресирани с фактор за вземане на проби, различна от 1 (например, с "cjpeg -grayscale - проба 2x2 "). Пробовземане технически няма никакво значение с черно-бели JPEG снимки, и по този начин хоризонтални и вертикални фактори за такива изображения на проби са игнорирани от декомпресора. Въпреки това, TurboJPEG API беше твърде строга и е очаквал фактори за вземане на проби, за да бъде равна на 1, преди да го обработва изображението като нива на сивото JPEG.
- cjpeg, djpeg, и jpegtran сега приемам аргумент на -version, което ще се отпечата версия на библиотеката и да излезете.
- Позовавайки се на 1.4 бета 1 [15], друг изключително рядко обстоятелство е била открита при които местната буфер на енкодера Хъфман може да бъде превишен, когато се използва буферен мениджър дестинация и изключително-висока честота блок (основно данни боклуци снимка) е кодиран. Въпреки че местната буфер Хъфман е увеличен от 128 байта до 136 байта, за да се отговори на предишния въпрос, новата емисия, причинени дори по-голям буфер да бъде превишен. По-нататъшният анализ показва, че в абсолютна лошия случай (като например създаването на променлив AC коефициенти за 32767 и -32768 в реда на сканиране JPEG), на Хъфман енкодер може да произвежда кодирани блокове, които се приближават два пъти размера на некодиран блокове. По този начин, на местно буфер Хъфман е увеличен до 256 байта, което трябва да пречат на всички тези въпроси, от повторно случва в бъдеще.
- Новият tjPlaneSizeYUV (), tjPlaneWidth (), и tjPlaneHeight () функции не са били действително използваеми на всяка платформа с изключение на OS X и Windows, защото тези функции не са били включени в libturbojpeg mapfile. Това е фиксиран.
- възстановил JPP (), JMETHOD (), и далеч макроси в заглавните файлове libjpeg-турбо. JPP () и JMETHOD () макроси първоначално са били изпълнявани в libjpeg като начин за подпомагане на не-ANSI компилатори, че липсва подкрепа за прототипи параметри. libjpeg-турбо никога не е подкрепяла такива компилатори, но някои софтуерни пакети все още използват макроси, за да определят своите прототипи. По същия начин, libjpeg-турбо никога не е подкрепяла MS-DOS и други платформи, които имат много символи, но някои софтуерни пакети все още използват FAR макроса. А доста добър аргумент може да се направи, че това е лоша практика от страна на софтуера под въпрос, но тъй като това засяга повече от един пакет, това е просто по-лесно да се поправи тук.
- Фиксирани въпроси, които бяха предотвратяващи ARM 64-битов SIMD кода от съставянето на IOS, и включваха ARMv8 архитектура във всички изпълними файлове инсталирани от & quot; официален & quot; libjpeg-турбо SDK за OS X.
Какво ново във версия 1.4.2:
- Фиксиран натрупване издаване на OS X PowerPC платформи ( md5cmp не успя да се изгради, защото OS X не предоставя le32toh () и htole32 () функции.).
- не-SIMD RGB565 цвят Кодът за преобразуване не работи правилно на големи къс машини. Това е фиксиран.
- Фиксирана проблем в tjPlaneSizeYUV (), при която той погрешно да се върне 1 вместо -1 ако componentID беше & GT; 0 и subsamp беше TJSAMP_GRAY.
- Фиксирана проблем в tjBufSizeYUV2 () wherby го погрешно да се върне 0 вместо -1 ако ширина беше & LT; 1.
- The енкодер Хъфман сега използва CLZ и BSR инструкции за малко разчита на ARM64 платформи.
- Методът на близо () в класовете TJCompressor и TJDecompressor Java е сега idempotent. Преди това, този метод ще извикате функцията родния tjDestroy (), дори ако инстанция TurboJPEG вече са били унищожени. Това предизвика изключение да бъдат изхвърлени по време на финализиране, ако методът на близо () вече е бил наречен. Изключение беше хванат, но тя все още е скъпа операция.
- The API TurboJPEG предварително генериран грешка (& quot; Не може да се определи типа пробовземане за JPEG изображение & quot;), когато се опитват да се декомпресира сивото JPEG изображения, които са компресирани с фактор за вземане на проби, различна от 1 (например, с "cjpeg -grayscale - проба 2x2 "). Пробовземане технически няма никакво значение с черно-бели JPEG снимки, и по този начин хоризонтални и вертикални фактори за такива изображения на проби са игнорирани от декомпресора. Въпреки това, TurboJPEG API беше твърде строга и е очаквал фактори за вземане на проби, за да бъде равна на 1, преди да го обработва изображението като нива на сивото JPEG.
- cjpeg, djpeg, и jpegtran сега приемам аргумент на -version, което ще се отпечата версия на библиотеката и да излезете.
- Позовавайки се на 1.4 бета 1 [15], друг изключително рядко обстоятелство е била открита при които местната буфер на енкодера Хъфман може да бъде превишен, когато се използва буферен мениджър дестинация и изключително-висока честота блок (основно данни боклуци снимка) е кодиран. Въпреки че местната буфер Хъфман е увеличен от 128 байта до 136 байта, за да се отговори на предишния въпрос, новата емисия, причинени дори по-голям буфер да бъде превишен. По-нататъшният анализ показва, че в абсолютна лошия случай (като например създаването на променлив AC коефициенти за 32767 и -32768 в реда на сканиране JPEG), на Хъфман енкодер може да произвежда кодирани блокове, които се приближават два пъти размера на некодиран блокове. По този начин, на местно буфер Хъфман е увеличен до 256 байта, което трябва да пречат на всички тези въпроси, от повторно случва в бъдеще.
- Новият tjPlaneSizeYUV (), tjPlaneWidth (), и tjPlaneHeight () функции не са били действително използваеми на всяка платформа с изключение на OS X и Windows, защото тези функции не са били включени в libturbojpeg mapfile. Това е фиксиран.
- възстановил JPP (), JMETHOD (), и далеч макроси в заглавните файлове libjpeg-турбо. JPP () и JMETHOD () макроси първоначално са били изпълнявани в libjpeg като начин за подпомагане на не-ANSI компилатори, че липсва подкрепа за прототипи параметри. libjpeg-турбо никога не е подкрепяла такива компилатори, но някои софтуерни пакети все още използват макроси, за да определят своите прототипи. По същия начин, libjpeg-турбо никога не е подкрепяла MS-DOS и други платформи, които имат много символи, но някои софтуерни пакети все още използват FAR макроса. А доста добър аргумент може да се направи, че това е лоша практика от страна на софтуера под въпрос, но тъй като това засяга повече от един пакет, това е просто по-лесно да се поправи тук.
- Фиксирани въпроси, които бяха предотвратяващи ARM 64-битов SIMD кода от съставянето на IOS, и включваха ARMv8 архитектура във всички изпълними файлове инсталирани от & quot; официален & quot; libjpeg-турбо SDK за OS X.
Какво ново във версия 1.4.0:
- Фиксиран натрупване издаване на OS X PowerPC платформи ( md5cmp не успя да се изгради, защото OS X не предоставя le32toh () и htole32 () функции.).
- не-SIMD RGB565 цвят Кодът за преобразуване не работи правилно на големи къс машини. Това е фиксиран.
- Фиксирана проблем в tjPlaneSizeYUV (), при която той погрешно да се върне 1 вместо -1 ако componentID беше & GT; 0 и subsamp беше TJSAMP_GRAY.
- Фиксирана проблем в tjBufSizeYUV2 () wherby го погрешно да се върне 0 вместо -1 ако ширина беше & LT; 1.
- The енкодер Хъфман сега използва CLZ и BSR инструкции за малко разчита на ARM64 платформи.
- Методът на близо () в класовете TJCompressor и TJDecompressor Java е сега idempotent. Преди това, този метод ще извикате функцията родния tjDestroy (), дори ако инстанция TurboJPEG вече са били унищожени. Това предизвика изключение да бъдат изхвърлени по време на финализиране, ако методът на близо () вече е бил наречен. Изключение беше хванат, но тя все още е скъпа операция.
- The API TurboJPEG предварително генериран грешка (& quot; Не може да се определи типа пробовземане за JPEG изображение & quot;), когато се опитват да се декомпресира сивото JPEG изображения, които са компресирани с фактор за вземане на проби, различна от 1 (например, с "cjpeg -grayscale - проба 2x2 "). Пробовземане технически няма никакво значение с черно-бели JPEG снимки, и по този начин хоризонтални и вертикални фактори за такива изображения на проби са игнорирани от декомпресора. Въпреки това, TurboJPEG API беше твърде строга и е очаквал фактори за вземане на проби, за да бъде равна на 1, преди да го обработва изображението като нива на сивото JPEG.
- cjpeg, djpeg, и jpegtran сега приемам аргумент на -version, което ще се отпечата версия на библиотеката и да излезете.
- Позовавайки се на 1.4 бета 1 [15], друг изключително рядко обстоятелство е била открита при които местната буфер на енкодера Хъфман може да бъде превишен, когато се използва буферен мениджър дестинация и изключително-висока честота блок (основно данни боклуци снимка) е кодиран. Въпреки че местната буфер Хъфман е увеличен от 128 байта до 136 байта, за да се отговори на предишния въпрос, новата емисия, причинени дори по-голям буфер да бъде превишен. По-нататъшният анализ показва, че в абсолютна лошия случай (като например създаването на променлив AC коефициенти за 32767 и -32768 в реда на сканиране JPEG), на Хъфман енкодер може да произвежда кодирани блокове, които се приближават два пъти размера на некодиран блокове. По този начин, на местно буфер Хъфман е увеличен до 256 байта, което трябва да пречат на всички тези въпроси, от повторно случва в бъдеще.
- Новият tjPlaneSizeYUV (), tjPlaneWidth (), и tjPlaneHeight () функции не са били действително използваеми на всяка платформа с изключение на OS X и Windows, защото тези функции не са били включени в libturbojpeg mapfile. Това е фиксиран.
- възстановил JPP (), JMETHOD (), и далеч макроси в заглавните файлове libjpeg-турбо. JPP () и JMETHOD () макроси първоначално са били изпълнявани в libjpeg като начин за подпомагане на не-ANSI компилатори, че липсва подкрепа за прототипи параметри. libjpeg-турбо никога не е подкрепяла такива компилатори, но някои софтуерни пакети все още използват макроси, за да определят своите прототипи. По същия начин, libjpeg-турбо никога не е подкрепяла MS-DOS и други платформи, които имат много символи, но някои софтуерни пакети все още използват FAR макроса. А доста добър аргумент може да се направи, че това е лоша практика от страна на софтуера под въпрос, но тъй като това засяга повече от един пакет, това е просто по-лесно да се поправи тук.
- Фиксирани въпроси, които бяха предотвратяващи ARM 64-битов SIMD кода от съставянето на IOS, и включваха ARMv8 архитектура във всички изпълними файлове инсталирани от & quot; официален & quot; libjpeg-турбо SDK за OS X.
Какво ново във версия 1.3.0:
- [1] "направи тест" сега работи правилно на FreeBSD, и тя вече не изисква md5sum изпълнимия да има и по други Un * х платформи.
- [2] Основно ремонтирана системата на опаковките: - За да се избегне конфликт с продавач-доставени libjpeg-турбо пакети, официалните оборотите и Дебс за libjpeg-турбо са преименувани на & quot; libjpeg-турбо-официален & quot ;. - Библиотеки TurboJPEG сега се намират под / изберат / libjpeg-турбо в официалните Linux и Mac пакети, за да се избегне конфликт с продавач-доставени пакети и също да рационализира системата за опаковане. - пакети изданието вече са създадени с структурата на директориите, определена от Конфигуриране на променливите и на quot; префикс & quot ;, & quot; bindir & quot ;, & quot; libdir & quot ;, и т.н. (Un * х) или чрез променливата CMAKE_INSTALL_PREFIX (Windows). Изключение е че лекарите винаги се намира под директорията документацията на системата по подразбиране на Un * х и Mac системи, и на Windows, за TurboJPEG DLL винаги се намира в системната директория на Windows. - За да се избегне объркване, официални libjpeg-турбо пакети на Linux / Unix платформи (с изключение на Mac) винаги ще се инсталира библиотеки 32-битови в / изберат / libjpeg-турбо / lib32 и библиотеки 64-битови в / изберат / libjpeg- турбо / lib64. - Поправен е проблем, при който, в някои случаи, изпълнимите libjpeg-турбо за Un * х системи не са били правилно свързване с споделени библиотеки, инсталирани от една и съща опаковка. - Поправен е проблем, при който изграждането на & quot; инсталатора & quot; насочване на Windows, когато WITH_JAVA = 1 ще се провали, ако буркана TurboJPEG не е била предварително изградена. - Изграждане на & quot; инсталиране & quot; мишена на Windows сега инсталира файлове в едни и същи места, че инсталаторът прави.
- [3] Фиксирана Хъфман енкодер бъг, който попречи I / O окачване да действа правилно.
Какво ново във версия 1.2.0:
- A въпрос натрупване срещнали при използване YASM на Unix системи е фиксиран.
- An граници протичането на четат кода на SSE2 SIMD е фиксиран.
- Нови константи удължители цветово, които позволяват на приложенията да посочат, че неизползваният байт в 4-байтов RGB буфер трябва да се третира като алфа канал, когато декомпресиране бяха добавени.
- A въпрос регресия срещнали при изграждането на дявола с libjpeg-турбо е фиксиран.
- подкрепа IOS е добавен в libjpeg-турбо SDK за Mac на.
Какво ново във версия 1.1 Beta 1:
- libjpeg-турбо може да бъде построен, за да подражават на libjpeg v7 или v8b API / ABI.
- натрупване система Windows сега използва CMake.
- TurboJPEG / OSS сега може да компресира от / декомпресиране на сивото растерни изображения и конвертиране на RGB или JPEG изображения, за да YUV планарна изход.
- jpgtest може да се използва за тестване на производителност декомпресия със съществуващите JPEG изображения.
- е добавен незадължително аритметика кодиране и декодиране подкрепа.
- Допълнителни защити бяха добавени срещу невалидни кодове Huffman.
Какво ново във версия 1.0.0:.
- Допълнителна изгради подобрения на FreeBSD
- Unix / Linux пакети вече включват libjpeg навечерието време програми (cjpeg и т.н.) и човека страници.
- Налице е 32-битов допълнителен пакет за AMD64 Дебиан.
- Cygwin подкрепа.
- Пълна подкрепа за изграждане / тестване на не-x86 архитектури.
- 64-битова OS X бинарни файлове сега са обратно съвместими с OS X 10.4.
- Има различни Linux опаковъчни ощипвам.
Какво ново във версия 0.0.91:
- Добавен документация за .deb пакети
- Фиксирани данни при декомпресиране големи JPEG изображения и / или използване на буфериран I / O с декомпресора на libjpeg-турбо
проблемите с корупцията
Коментари не е намерена