Доступна библиотека libjpeg-turbo 2.0

31 июля 2018 года

Wikinews-logo-ru.svg

Состоялся релиз 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;
 

ИсточникиПравить


Эта статья содержит материалы из статьи «Доступна библиотека libjpeg-turbo 2.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:Доступна библиотека libjpeg-turbo 2.0