Доступна библиотека libjpeg-turbo 2.0
Как сообщает opennet.ru Состоялся релиз libjpeg-turbo 2.0.0, высокопроизводительной библиотеки для кодирования и декодирования изображений в формате JPEG. Libjpeg-turbo представляет собой совместимый на уровне API/ABI форк классической библиотеки libjpeg, нацеленный на обеспечение максимальной скорости кодирования и декодирования. Кроме стандартного libjpeg API библиотека предоставляет собственный TurboJPEG API и ряд расширений с моделями представления цвета, дающих возможность сжимать изображения в 32-разрядные пиксельные буферы (RGBX, XBGR) или декодировать из них. Код распространяется под тремя BSD-подобными лицензиями IJG, модифицированной BSD и zlib, бинарные сборки подготовлены для 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, форк libjpeg-turbo, который движется в сторону оптимизации размера результирующих изображений.
- Обеспечено применение инструкций 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;