The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

31.07.2018 19:30

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


  1. Главная ссылка к новости (https://groups.google.com/foru...)
  2. OpenNews: Доступна библиотека libjpeg-turbo 1.5.0
  3. OpenNews: Доступен MozJPEG 3.0, высокоэффективный кодировщик JPEG-изображений от проекта Mozilla
  4. OpenNews: Релиз библиотеки Libjpeg 9 с поддержкой режима сжатия без потерь
  5. OpenNews: Уязвимость в OpenJPEG, которая может привести к выполнению кода атакующего
  6. OpenNews: Компания Google открыла код эффективного JPEG-кодировщика Guetzli
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49054-libjpeg-turbob
Ключевые слова: libjpeg-turbob, jpeg, libjpeg
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (29) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:06, 31/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Фиговенькое качество у него (соотношение качество/размер). Лучше использовать mozjpeg или imagemagick.
     
     
  • 2.2, Аноним (2), 23:08, 31/07/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сама мозилка рекомендует mozjpeg, libturbo-jpeg хуже однозначно.
     
     
  • 3.4, Аноним (4), 00:19, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > Сама мозилка рекомендует mozjpeg

    Быть такого не может! Ты еще скажи Microsoft рекомендует Windows.

     
  • 3.29, Аноним (29), 21:10, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    mozjpeg - это энкодер, а большинство пользователей libjpeg-turbo интересует исключительно декодирование
     
  • 2.12, Аноним (12), 10:14, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    imagemagick использует то, что предоставляет API libjpeg, т.е., внезапно, тот же libjpeg-turbo.
     
     
  • 3.19, Аноним (1), 13:30, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хотел поумничать, но мимо.
     
     
  • 4.20, Аноним (20), 13:46, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да нет, зачем. Можешь и здесь попробовать поумничать.
     
  • 2.27, Аноним (27), 11:47, 04/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Фиговенькое качество у него (соотношение качество/размер).

    Дерни матрицы квантизации с фотошопа и жми с ними, получишь и качество соответствующее.

     

  • 1.3, Vitaliy Blats (?), 23:25, 31/07/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А у меня еще и пиксели артефактит. Не нужно.
     
     
  • 2.5, Аноним (5), 01:10, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Зато быстро.
     
     
  • 3.7, Аноним (7), 01:24, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не быстрее mozjpeg
     
     
  • 4.22, Аноним (12), 10:41, 02/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Смешно.
     

  • 1.6, Аноним (6), 01:17, 01/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Товарищи выше не прочли зачем нужна эта либа и в чем ее отличие перед другими?
     
     
  • 2.8, Vitaliy Blats (?), 03:47, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Товарищи выше не прочли зачем нужна эта либа и в чем ее
    > отличие перед другими?

    Какая разница зачем нужна эта либа, если скомпиленный с ней motion, выдает разноцветную херню в mjpeg-стриме ?

    Я не знаю как оно работает внутри, да и не хочу знать, но такое впечатление что цвету каждого пикселя добавили какое-то значение, красный стал желтым, желтый стал зеленым, и так далее.
    Черно-белый поток обрабатывается нормально. Дело именно в либе, поскольку скомпилил рядышком с libjpeg - и работает отлично.

     
     
  • 3.9, имя (?), 05:04, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как вы этого добиваетесь? У меня zoneminder с любой из библиотек рисует одинаковый по качеству картинки mjpeg.
     
  • 3.15, freehck (ok), 11:32, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Дело именно в либе, поскольку скомпилил рядышком с libjpeg

    А ты компиль не из транка, а последнюю стабильную. Глядишь, чего путное получится.

     

  • 1.10, Anton (??), 06:13, 01/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Gueztli качественнее
     
  • 1.11, Аноним (11), 09:35, 01/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все это ускорение завезли еще в 1.5.90
     
     
  • 2.13, Аноним (12), 10:15, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    В 2.0.0 исправили ошибки, в т.ч. CVE.
     
  • 2.14, Mihail Zenkov (ok), 10:27, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    1.5.90 (2.0 beta1)
     

  • 1.16, Аноним (16), 11:44, 01/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Система сборки переведена с Autotools на использование CMake

    Господи, ну зачем им? Найти жабку и её хидеры? Проект катиться в какое-то гавно.

     
     
  • 2.17, X4asd (ok), 12:22, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Господи, ну зачем им?

    верно, нужно было на meson

    > Найти жабку

    найти кого?

    лол! эта штука использует java? зачем?

     
     
  • 3.18, Аноним84701 (ok), 12:52, 01/08/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > лол! эта штука использует 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
    --

     

  • 1.21, Аноним (21), 08:32, 02/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Новые оптимизации позволили ускорить сжатие на 70-100%

    На 100% - это как? За ноль микросекунд теперь сжимает?

     
     
  • 2.23, Аноним (12), 10:43, 02/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > На 100% - это как?

    Это вдвое.

     
  • 2.24, IRASoldier (?), 14:26, 02/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Трать лето на фигню, не учи математику, проваливай ЕГЭ, работай грузчиком.

    Пусть ранее процесс имел скорость 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 раза

    Не благодари.

     
     
  • 3.26, нах (?), 14:58, 02/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    "а вот если б меня тогда взяли на работу - я бы до сих пор оптимизировал jpeg"

     
  • 2.25, IRASoldier (?), 14:27, 02/08/2018 [^] [^^] [^^^] [ответить]  
  • +/
    опечатка: вместо v1 = v1 + 1 * v0 = 2 * v0  -> v1 = v0 + 1 * v0 = 2 * v0
     

  • 1.28, Аноним (28), 20:22, 11/08/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    test
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру