libjpeg-турбо є відкритим вихідним кодом, крос-платформний і повністю вільне програмне забезпечення розроблені для забезпечення версії високошвидкісний оригінального програмного забезпечення бібліотеки libjpeg, спеціально створений для x86 і x86-64 процесорів, які використовують SIMD ( Single Instruction, Multiple Data) інструкції, такі як SSE2, MMX і неон, для прискорення базової декомпресії JPEG і стиснення.
Дуже швидкий кодек зображення JPEG
Програмне забезпечення є надзвичайно швидкий JPEG зображення кодек, який, як правило, 2-4x швидше, ніж не модифікований версії libjpeg. Проект був спочатку заснований на libjpeg / проекту SIMD, створеного Міясака Масару.
Реалізує традиційну 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, витягти його вміст за допомогою утиліти менеджер архіву, відкрийте термінал додаток і перейдіть в папку витягнутого файлу архіву (наприклад, CD / головна / softoware / libjpeg-турбо).
Потім запустіть & lsquo; ./ Configure && зробити & Rsquo; Команда для настройки та компіляції програми, з подальшим & lsquo; Sudo зробити установку & Rsquo; commad встановити у всій системі і зробити його доступним для всіх додатків
Що нового в цьому випуску :.
- < li> Виправлена проблема збірки на OS X PowerPC платформах (md5cmp не вдалося побудувати, тому що OS X не надає le32toh () і htole32 () функції.).
- Код перетворення RGB565 колір без SIMD некоректно працювати на великих машинах зворотним порядком байтів. Це було виправлено.
- Виправлена проблема в tjPlaneSizeYUV (), в якому було б помилково повертати 1 замість -1, якщо ComponentID був & GT; 0 і subsamp був TJSAMP_GRAY.
- Виправлена помилка в tjBufSizeYUV2 () wherby було б помилково повертати 0 замість -1, якщо ширина була & л; 1.
- кодер Хаффмана тепер використовує CLZ і BSR інструкції для біт в розрахунку на ARM64 платформ.
- Спосіб закриття () в класах TJCompressor і TJDecompressor Java тепер ідемпотентна. Раніше цей метод буде викликати функцію рідної tjDestroy (), навіть якщо екземпляр TurboJPEG вже знищений. Це викликало виключення бути викинутий під час завершення, якщо метод Close () вже була викликана. Винятком був спійманий, але це було до цих пір дорогою операцією.
- cjpeg, djpeg і jpegtran тепер приймають аргумент -версії, який буде друкувати версію бібліотеки і завершити роботу.
- Посилаючись на 1,4 бета1 [15], ще вкрай рідко обставина було виявлено, при яких локальний буфер кодера Хаффмана може бути захоплений, коли використовується буферний менеджер призначення і надзвичайно високої частоти блок (в основному небажані дані зображення) є кодуються. Навіть незважаючи на те локальний буфер Хаффман був збільшений з 128 байт до 136 байт для вирішення попередньої проблеми, новий випуск викликало ще більший буфер буде перевитрата. Подальший аналіз показує, що, в абсолютному гіршому випадку (наприклад, установка чергуються коефіцієнти змінного струму до 32767 і -32768 в порядку сканування JPEG), кодер Хаффмана може виробляти кодовані блоки, які наближаються до подвійний розмір некодованих блоків. Таким чином, локальний буфер Хаффмана був збільшений до 256 байт, що має запобігати будь таке питання від повторного відбуваються в майбутньому.
- Новий tjPlaneSizeYUV (), tjPlaneWidth () і tjPlaneHeight () функції не були насправді можна використовувати на будь-якій платформі, крім OS X і Windows, тому що ці функції не були включені в libturbojpeg файлі проекту. Це було виправлено.
- відновив JPP (), JMETHOD () і FAR макроси в файлах заголовків libjpeg-турбо. Макроси JPP () і JMETHOD () спочатку були реалізовані в libjpeg як спосіб підтримки компіляторів, які не ANSI, що не вистачало підтримки параметрів прототипу. libjpeg-турбо ніколи не підтримував таких компіляторів, але деякі пакети програмного забезпечення до цих пір використовують макроси, щоб визначити свої власні прототипи. Точно так же, libjpeg-турбо ніколи не підтримував MS-DOS і інших платформ, які мають далеко символи, але деякі пакети програмного забезпечення до цих пір використовують макрос FAR. Дуже хороший аргумент може бути зроблено, що це погана практика на частини програмного забезпечення про який йде мова, але так як це зачіпає більш ніж один пакет, це просто простіше виправити його тут.
- Виправлені проблеми, які були запобігають ARM 64-бітний SIMD код з компіляції для IOS, і включав в себе архітектуру ARMv8 у всіх бінарних файлів встановлюються по & Quot; офіційний & Quot; libjpeg-турбо SDK для OS X.
<Літій> The TurboJPEG API раніше видала помилку (& Quot; Неможливо визначити тип Субдіскретізація для JPEG зображення & Quot;) при спробі розпакувати чорно-білих зображень JPEG, які були стиснуті з коефіцієнтом вибірки інший, ніж 1 (наприклад, з 'cjpeg -grayscale - зразок 2х2 '). Проріджуванням технічно не має ніякого значення з напівтонових JPEGs, і, таким чином, горизонтальні і вертикальні фактори відбору проб для таких зображень ігноруються декомпресора. Проте, TurboJPEG API був занадто жорстким і очікував факторів вибірки рівним 1, перш ніж розглядати це зображення як чорно-біле JPEG.
Що нового у версії 1.4.2:
- Виправлена проблема збірки на OS X PowerPC платформах ( md5cmp не вдалося побудувати, тому що OS X не забезпечує le32toh () і htole32 () функції.).
- Код перетворення RGB565 колір без SIMD некоректно працювати на великих машинах зворотним порядком байтів. Це було виправлено.
- Виправлена проблема в tjPlaneSizeYUV (), в якому було б помилково повертати 1 замість -1, якщо ComponentID був & GT; 0 і subsamp був TJSAMP_GRAY.
- Виправлена помилка в tjBufSizeYUV2 () wherby було б помилково повертати 0 замість -1, якщо ширина була & л; 1.
- кодер Хаффмана тепер використовує CLZ і BSR інструкції для біт в розрахунку на ARM64 платформ.
- Спосіб закриття () в класах TJCompressor і TJDecompressor Java тепер ідемпотентна. Раніше цей метод буде викликати функцію рідної tjDestroy (), навіть якщо екземпляр TurboJPEG вже знищений. Це викликало виключення бути викинутий під час завершення, якщо метод Close () вже була викликана. Винятком був спійманий, але це було до цих пір дорогою операцією.
- cjpeg, djpeg і jpegtran тепер приймають аргумент -версії, який буде друкувати версію бібліотеки і завершити роботу.
- Посилаючись на 1,4 бета1 [15], ще вкрай рідко обставина було виявлено, при яких локальний буфер кодера Хаффмана може бути захоплений, коли використовується буферний менеджер призначення і надзвичайно високої частоти блок (в основному небажані дані зображення) є кодуються. Навіть незважаючи на те локальний буфер Хаффман був збільшений з 128 байт до 136 байт для вирішення попередньої проблеми, новий випуск викликало ще більший буфер буде перевитрата. Подальший аналіз показує, що, в абсолютному гіршому випадку (наприклад, установка чергуються коефіцієнти змінного струму до 32767 і -32768 в порядку сканування JPEG), кодер Хаффмана може виробляти кодовані блоки, які наближаються до подвійний розмір некодованих блоків. Таким чином, локальний буфер Хаффмана був збільшений до 256 байт, що має запобігати будь таке питання від повторного відбуваються в майбутньому.
- Новий tjPlaneSizeYUV (), tjPlaneWidth () і tjPlaneHeight () функції не були насправді можна використовувати на будь-якій платформі, крім OS X і Windows, тому що ці функції не були включені в libturbojpeg файлі проекту. Це було виправлено.
- відновив JPP (), JMETHOD () і FAR макроси в файлах заголовків libjpeg-турбо. Макроси JPP () і JMETHOD () спочатку були реалізовані в libjpeg як спосіб підтримки компіляторів, які не ANSI, що не вистачало підтримки параметрів прототипу. libjpeg-турбо ніколи не підтримував таких компіляторів, але деякі пакети програмного забезпечення до цих пір використовують макроси, щоб визначити свої власні прототипи. Точно так же, libjpeg-турбо ніколи не підтримував MS-DOS і інших платформ, які мають далеко символи, але деякі пакети програмного забезпечення до цих пір використовують макрос FAR. Дуже хороший аргумент може бути зроблено, що це погана практика на частини програмного забезпечення про який йде мова, але так як це зачіпає більш ніж один пакет, це просто простіше виправити його тут.
- Виправлені проблеми, які були запобігають ARM 64-бітний SIMD код з компіляції для IOS, і включав в себе архітектуру ARMv8 у всіх бінарних файлів встановлюються по & Quot; офіційний & Quot; libjpeg-турбо SDK для OS X.
<Літій> The TurboJPEG API раніше видала помилку (& Quot; Неможливо визначити тип Субдіскретізація для JPEG зображення & Quot;) при спробі розпакувати чорно-білих зображень JPEG, які були стиснуті з коефіцієнтом вибірки інший, ніж 1 (наприклад, з 'cjpeg -grayscale - зразок 2х2 '). Проріджуванням технічно не має ніякого значення з напівтонових JPEGs, і, таким чином, горизонтальні і вертикальні фактори відбору проб для таких зображень ігноруються декомпресора. Проте, TurboJPEG API був занадто жорстким і очікував факторів вибірки рівним 1, перш ніж розглядати це зображення як чорно-біле JPEG.
Що нового у версії 1.4.0:
- Виправлена проблема збірки на OS X PowerPC платформах ( md5cmp не вдалося побудувати, тому що OS X не забезпечує le32toh () і htole32 () функції.).
- Код перетворення RGB565 колір без SIMD некоректно працювати на великих машинах зворотним порядком байтів. Це було виправлено.
- Виправлена проблема в tjPlaneSizeYUV (), в якому було б помилково повертати 1 замість -1, якщо ComponentID був & GT; 0 і subsamp був TJSAMP_GRAY.
- Виправлена помилка в tjBufSizeYUV2 () wherby було б помилково повертати 0 замість -1, якщо ширина була & л; 1.
- кодер Хаффмана тепер використовує CLZ і BSR інструкції для біт в розрахунку на ARM64 платформ.
- Спосіб закриття () в класах TJCompressor і TJDecompressor Java тепер ідемпотентна. Раніше цей метод буде викликати функцію рідної tjDestroy (), навіть якщо екземпляр TurboJPEG вже знищений. Це викликало виключення бути викинутий під час завершення, якщо метод Close () вже була викликана. Винятком був спійманий, але це було до цих пір дорогою операцією.
- cjpeg, djpeg і jpegtran тепер приймають аргумент -версії, який буде друкувати версію бібліотеки і завершити роботу.
- Посилаючись на 1,4 бета1 [15], ще вкрай рідко обставина було виявлено, при яких локальний буфер кодера Хаффмана може бути захоплений, коли використовується буферний менеджер призначення і надзвичайно високої частоти блок (в основному небажані дані зображення) є кодуються. Навіть незважаючи на те локальний буфер Хаффман був збільшений з 128 байт до 136 байт для вирішення попередньої проблеми, новий випуск викликало ще більший буфер буде перевитрата. Подальший аналіз показує, що, в абсолютному гіршому випадку (наприклад, установка чергуються коефіцієнти змінного струму до 32767 і -32768 в порядку сканування JPEG), кодер Хаффмана може виробляти кодовані блоки, які наближаються до подвійний розмір некодованих блоків. Таким чином, локальний буфер Хаффмана був збільшений до 256 байт, що має запобігати будь таке питання від повторного відбуваються в майбутньому.
- Новий tjPlaneSizeYUV (), tjPlaneWidth () і tjPlaneHeight () функції не були насправді можна використовувати на будь-якій платформі, крім OS X і Windows, тому що ці функції не були включені в libturbojpeg файлі проекту. Це було виправлено.
- відновив JPP (), JMETHOD () і FAR макроси в файлах заголовків libjpeg-турбо. Макроси JPP () і JMETHOD () спочатку були реалізовані в libjpeg як спосіб підтримки компіляторів, які не ANSI, що не вистачало підтримки параметрів прототипу. libjpeg-турбо ніколи не підтримував таких компіляторів, але деякі пакети програмного забезпечення до цих пір використовують макроси, щоб визначити свої власні прототипи. Точно так же, libjpeg-турбо ніколи не підтримував MS-DOS і інших платформ, які мають далеко символи, але деякі пакети програмного забезпечення до цих пір використовують макрос FAR. Дуже хороший аргумент може бути зроблено, що це погана практика на частини програмного забезпечення про який йде мова, але так як це зачіпає більш ніж один пакет, це просто простіше виправити його тут.
- Виправлені проблеми, які були запобігають ARM 64-бітний SIMD код з компіляції для IOS, і включав в себе архітектуру ARMv8 у всіх бінарних файлів встановлюються по & Quot; офіційний & Quot; libjpeg-турбо SDK для OS X.
<Літій> The TurboJPEG API раніше видала помилку (& Quot; Неможливо визначити тип Субдіскретізація для JPEG зображення & Quot;) при спробі розпакувати чорно-білих зображень JPEG, які були стиснуті з коефіцієнтом вибірки інший, ніж 1 (наприклад, з 'cjpeg -grayscale - зразок 2х2 '). Проріджуванням технічно не має ніякого значення з напівтонових JPEGs, і, таким чином, горизонтальні і вертикальні фактори відбору проб для таких зображень ігноруються декомпресора. Проте, TurboJPEG API був занадто жорстким і очікував факторів вибірки рівним 1, перш ніж розглядати це зображення як чорно-біле JPEG.
Що нового у версії 1.3.0:
- [1] "зробити тест" тепер працює належним чином не так на FreeBSD, і він більше не потребує md5sum виконуваний файл, щоб бути присутнім на інших Un * х платформ.
- [2] переробили систему упаковки: - Для того, щоб уникнути конфлікту з постачальниками поставляються libjpeg-турбо пакетів, офіційні РПМ і якоже для libjpeg-турбо був перейменований в & Quot; libjpeg-турбо офіційний & Quot;. - Бібліотеки TurboJPEG тепер знаходяться в каталозі / Opt / libjpeg-турбо в офіційних Linux і Mac пакети, щоб уникнути конфліктів з постачальниками поставляються пакетів, а також впорядкувати систему упаковки. - Пакети Release тепер створюються зі структурою каталогів, яка визначається конфігураційними змінними & Quot; префікс & Quot;, & Quot; BINDIR & Quot;, & Quot; LIBDIR & Quot;, і т.д. (Un * х) або змінною CMAKE_INSTALL_PREFIX (Windows.) Виняток становить що документи завжди знаходяться в директорії документації системи за умовчанням на Un * х і системах Mac, так і на вікна, TurboJPEG DLL завжди знаходиться в системному каталозі Windows. - Щоб уникнути плутанини, офіційні libjpeg-турбо пакетів на Linux / Unix платформах (Mac за винятком) завжди буде встановлювати 32-розрядні бібліотеки в / Opt / libjpeg-турбо / lib32 і 64-бітові бібліотеки в / Opt / libjpeg- турбо / lib64. - Виправлена помилка, в результаті чого, в деяких випадках libjpeg-турбо виконувані файли на Un * х систем не були належним чином зв'язок з розділяються бібліотеками, встановленими в одному пакеті. - Виправлена помилка, в результаті чого будівництво & Quot; установника & Quot; таргетинг на Windows, коли WITH_JAVA = 1 зазнає невдачі, якщо JAR TurboJPEG раніше не були побудовані. - Побудова & Quot; встановити & Quot; Мішень, на Windows, в даний час встановлює файли в тих же місцях, що програма установки робить.
- [3] Виправлена помилка кодера Хаффмана, яка перешкоджала підвіска I / O працювати належним чином.
Що нового у версії 1.2.0:
- проблема збірки, що виникають при використанні Yasm на системах Unix була виправлена.
- An кордону через через читання в коді SSE2 SIMD була виправлена.
- Нові постійні розширення колірному, які дозволяють додаткам вказувати, що невикористаний байт в 4 байта RGB буфер слід розглядати як альфа-канал при розпакуванні були додані.
- Виявлено проблему регресії, що виникають при побудові диявол з libjpeg-турбо був встановлений.
- Підтримка ОС IOS була додана до libjpeg-турбо SDK для Mac.
Що нового у версії 1.1 Beta 1:
- libjpeg-турбо можуть бути побудовані для емуляції libjpeg v7 або v8b API / ABI.
- Система збірки для Windows тепер використовує CMake.
- TurboJPEG / OSS тепер може стискати с / розпаковувати в відтінках сірого растрових зображень і конвертувати RGB або JPEG зображення в YUV планарного виводу.
- jpgtest може бути використаний для тестування продуктивності декомпресії з існуючими зображень JPEG.
- Додатково був доданий арифметичне кодування і декодування підтримки.
- Додаткові засоби захисту були додані проти неправильних кодів Хаффмана.
Що нового у версії 1.0.0 :.
- У подальшому будувати поліпшення на FreeBSD
- пакети Unix / Linux тепер включають libjpeg під час виконання програми (cjpeg і т.д.) і сторінки людини.
- Існує 32-розрядний додатковий пакет для amd64 систем Debian.
- підтримка Cygwin.
- Повна підтримка для будівництва / тестування на НЕ-x86 архітектур.
- 64-розрядні двійкові файли OS X тепер назад сумісні з OS X 10.4.
- Існують різні Linux пакувальні щипки.
Що нового у версії 0.0.91:
- Додана документація до .deb пакетів
- Виправлені дані при розпакуванні великих зображень JPEG та / або з використанням забуференной введення / виведення з libjpeg-турбо разуплотнения
псування
Коментар не знайдено