Состоялся (https://groups.google.com/forum/#!topic/libjpeg-turbo-announ...) релиз libjpeg-turbo 2.0.0 (http://www.libjpeg-turbo.org/), высокопроизводительной библиотеки для кодирования и декодирования изображений в формате JPEG. Libjpeg-turbo представляет собой совместимый на уровне API/ABI форк классической библиотеки libjpeg (http://ijg.org/), нацеленный на обеспечение максимальной скорости кодирования и декодирования. Кроме стандартного libjpeg API библиотека предоставляет собственный TurboJPEG API и ряд расширений с моделями представления цвета, дающих возможность сжимать изображения в 32-разрядные пиксельные буферы (RGBX, XBGR) или декодировать из них. Код распространяется (https://github.com/libjpeg-turbo/libjpeg-turbo) под тремя BSD-подобными лицензиями IJG, модифицированой BSD и zlib, бинарные сборки подготовлены (https://sourceforge.net/projects/libjpeg-turbo/files/) для Linux (rpm, deb), macOS и Windows.
По сравнению с libjpeg библиотека libjpeg-turbo позволяет добиться ускорения операций кодирования и декодирования JPEG в 2-4 раза, благодаря использованию инструкций SIMD (MMX, SSE2, NEON, AltiVec VMX) на архитектурах x86, x86-64, PowerPC и ARM. На других архитектурах ускорение не столь значительное, но за счёт применения оптимизированных функций кодирования Хаффмана библиотека всё равно заметно быстрее libjpeg и близка по своим показателям к высококачественным проприетарным кодекам JPEG. Отдельно развивается mozjpeg (https://www.opennet.dev/opennews/art.shtml?num=41371), форк libjpeg-turbo, который движется в сторону оптимизации размера результирующих изображений.
Основные новшества (https://github.com/libjpeg-turbo/libjpeg-turbo/releases):- Обеспечено применение инструкций AVX2 для ускорения преобразований цветовых пространств, хроматического сэмплирования и целочисленного квантования, целочисленных алгоритмов DCT/IDCT. На системах с поддержкой AVX2 применение новых оптимизаций позволило увеличить производительность на 13-36% для 64-разрядных систем и на 11-21% для 32-разрядных;
- Система сборки переведена с Autotools на использование CMake- В API представлены новые функции jpeg_read_icc_profile() и jpeg_write_icc_profile() для извлечения данных ICC-профиля из JPEG-файла;
- Модернизирован код обработки ошибок в TurboJPEG API;- Задействованы SIMD-оптимизации с использованием инструкций MMI
для процессоров Loongson при выполнении преобразования цветовых пространств RGB-to-YCbCr и YCbCr-to-RGB, хроматическом преобразовании 4:2:0, целочисленном квантовании и целочисленных алгооритмах DCT/IDCT. Новые оптимизации позволили ускорить сжатие на 70-100%, а распаковку в
2-3.5x раза.- Реализовано SIMD-ускорение кодирования Хаффмана с использованием инструкций SSE2 для платформ x86 и x86-64, которое увеличило скорость сжатия полноцветных JPEG на 85-90%;
- Улучшен процесс распаковки изображений в цветовой схеме CMYK;URL: https://groups.google.com/forum/#!topic/libjpeg-turbo-announ...
Новость: https://www.opennet.dev/opennews/art.shtml?num=49054
Фиговенькое качество у него (соотношение качество/размер). Лучше использовать mozjpeg или imagemagick.
Сама мозилка рекомендует mozjpeg, libturbo-jpeg хуже однозначно.
> Сама мозилка рекомендует mozjpegБыть такого не может! Ты еще скажи Microsoft рекомендует Windows.
mozjpeg - это энкодер, а большинство пользователей libjpeg-turbo интересует исключительно декодирование
imagemagick использует то, что предоставляет API libjpeg, т.е., внезапно, тот же libjpeg-turbo.
Хотел поумничать, но мимо.
Да нет, зачем. Можешь и здесь попробовать поумничать.
> Фиговенькое качество у него (соотношение качество/размер).Дерни матрицы квантизации с фотошопа и жми с ними, получишь и качество соответствующее.
А у меня еще и пиксели артефактит. Не нужно.
Зато быстро.
Не быстрее mozjpeg
Смешно.
Товарищи выше не прочли зачем нужна эта либа и в чем ее отличие перед другими?
> Товарищи выше не прочли зачем нужна эта либа и в чем ее
> отличие перед другими?Какая разница зачем нужна эта либа, если скомпиленный с ней motion, выдает разноцветную херню в mjpeg-стриме ?
Я не знаю как оно работает внутри, да и не хочу знать, но такое впечатление что цвету каждого пикселя добавили какое-то значение, красный стал желтым, желтый стал зеленым, и так далее.
Черно-белый поток обрабатывается нормально. Дело именно в либе, поскольку скомпилил рядышком с libjpeg - и работает отлично.
Как вы этого добиваетесь? У меня zoneminder с любой из библиотек рисует одинаковый по качеству картинки mjpeg.
> Дело именно в либе, поскольку скомпилил рядышком с libjpegА ты компиль не из транка, а последнюю стабильную. Глядишь, чего путное получится.
Gueztli качественнее
Все это ускорение завезли еще в 1.5.90
В 2.0.0 исправили ошибки, в т.ч. CVE.
1.5.90 (2.0 beta1)
> Система сборки переведена с Autotools на использование CMakeГосподи, ну зачем им? Найти жабку и её хидеры? Проект катиться в какое-то гавно.
> Господи, ну зачем им?верно, нужно было на meson
> Найти жабку
найти кого?
лол! эта штука использует java? зачем?
> лол! эта штука использует java? зачем?JNI-биндинг, например:
--
TurboJPEG Java Wrapper
======================The TurboJPEG shared library can optionally be built with a Java Native
Interface wrapper, which allows the library to be loaded and used directly from
Java applications
--
> Новые оптимизации позволили ускорить сжатие на 70-100%На 100% - это как? За ноль микросекунд теперь сжимает?
> На 100% - это как?Это вдвое.
Трать лето на фигню, не учи математику, проваливай ЕГЭ, работай грузчиком.Пусть ранее процесс имел скорость v0, теперь он имеет скорость v1 и v1 > v0 на некоторое значение, которое есть N% от v0, т.е.
v1 = v0 + (N/100) * v0
и если N = 70, то
v1 = v0 + 0.7 * v0 = 1.7 * v0,
а если N = 100, то
v1 = v1 + 1 * v0 = 2 * v0
- т.е. новая скорость больше старой в 1.7 ~ 2 раза
Не благодари.
"а вот если б меня тогда взяли на работу - я бы до сих пор оптимизировал jpeg"
опечатка: вместо v1 = v1 + 1 * v0 = 2 * v0 -> v1 = v0 + 1 * v0 = 2 * v0
test