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-турбо разуплотнения
порча
Комментарии не найдены