The OpenNET Project / Index page

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

Выпуск библиотеки libjpeg-turbo 1.4.0

09.01.2015 20:51

Анонсирован выпуск проекта libjpeg-turbo 1.4.0, в рамках которого развивается высокопроизводительная библиотека кодирования и декодирования изображений в формате JPEG. Libjpeg-turbo представляет собой совместимый на уровне API/ABI форк классической библиотеки libjpeg, нацеленный на обеспечение максимальной скорости кодирования и декодирования. В свою очередь, от libjpeg-turbo ответвилась библиотека mozjpeg, которая движется в сторону оптимизации размера результирующих изображений.

Благодаря использованию инструкций SIMD (MMX, SSE2, NEON) на архитектурах x86, x86-64 и ARM, libjpeg-turbo позволяет добиться ускорения операций кодирования и декодирования JPEG в 2-4 раза, по сравнению с libjpeg. На других архитектурах ускорение не столь значительное, но за счёт применения оптимизированных функций кодирования Хаффмана библиотека всё равно заметно быстрее libjpeg и близка по своим показателям к высококачественным проприетарным кодекам JPEG. Кроме стандартного libjpeg API библиотека также предоставляет расширенный TurboJPEG API и ряд расширений с моделями представления цвета, дающих возможность сжимать изображения в 32-разрядные пиксельные буферы (RGBX, XBGR) или декодировать из них.

Основные новшества:

  • Для ускорения на платформах MIPS задействованы DSPr2-совместимые SIMD-инструкции, что на 70-80% ускорило сжатие полноцветных JPEG и на 25-35% ускорило декодирование;
  • В коде кодирования Хаффмана для подсчёта битов на платформах ARM и ARM64 задействованы инструкции clz и bsr, что позволило на 64 Кб сократить потребление памяти. На двух протестированных Android-устройствах наблюдался рост производительности на 10-20%, при этом ещё на двух наблюдалось падение производительности на 3-4% при использовании кода ARMv6 и рост производительности на 3-4% для кода ARMv7. Добавлено использование 64-разрядных SIMD-инструкций ARM для ускорения преобразования цветов YCC-to-RGB и применения алгоритмов IDCT;
  • Для закодированных с использованием таблиц Хаффмана JPEG-изображений добавлена возможность подстановки таблиц по умолчанию, если данные таблицы отсутствуют в заголовке файла с изображением. Например, для экономии места в видео в формате Motion JPEG кадры часто не содержат подобных таблиц;
  • Улучшена точность и производительность реализации алгоритма инвертирования DCT с плавающей точкой, не применяющего SIMD-инструкции.
  • В libjpeg API добавлена поддержка цветовой модели JCS_RGB565, что позволяет декодировать изображения JPEG в пиксельный формат RGB565 (16-bit).
  • Расширен TurboJPEG API: добавлена поддержка CMYK, поддержка операции масштабирования в функции decompress-to-YUV, поддержка задания произвольного заполнения строк при генерации плоских YUV-изображений (YUV planar), возможность сжатия JPEG-изображений на основе исходного YUV-изображения, поддержка цветовой субдискретизации 4:1:1. Значительно переработан Java API для работы с YUV-изображениями, добавлена поддержка кодирования YUV-изображения из произвольной позиции в буфере;
  • Удалены устаревшие возможности, такие как поддержка не-ANSI компиляторов и модель памяти MS-DOS;
  • Возобновлена поддержка JPEG с 12-ю битами на компонент (при сборке необходимо указать --with-12bit), при включении которой будут отключены все специфичные libjpeg-turbo оптимизации и станет недоступен TurboJPEG API (но останутся доступны расширения, такие как модели представления цвета);
  • Пакет для OS X теперь собирается с использованием pkgbuild и productbuild вместо PackageMaker.


  1. Главная ссылка к новости (http://sourceforge.net/p/libjp...)
  2. OpenNews: Релиз библиотеки Libjpeg 9 с поддержкой режима сжатия без потерь
  3. OpenNews: Продемонстрирован JPEG-файл, превращающийся в PNG при AES-шифровании и в PDF после 3DES-дешифровки
  4. OpenNews: Доступен MozJPEG 3.0, высокоэффективный кодировщик JPEG-изображений от проекта Mozilla
  5. OpenNews: Создатель QEMU и FFmpeg предложил новый формат изображений BPG
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41421-jpeg
Ключевые слова: jpeg, libjpeg-turbo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (13) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pavlinux (ok), 20:54, 09/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > и близка по своим показателям к высококачественным проприетарным кодекам JPEG.

    99% которых спи... код у libjpeg

     
     
  • 2.5, Аноним (-), 22:47, 09/01/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Есть доказательства? Пиши Столлману в FSF, ибо нарушение лицензии. Они тебе спасибо скажут, может даже процент от иска перечислят.
     
     
  • 3.6, Аноним (-), 23:10, 09/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И откуда вы такие дэбилы лезете LEGAL ISSUES ... большой текст свёрнут, показать
     
  • 2.8, Аноним (-), 23:43, 09/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > 99% которых спи... код у libjpeg

    Э, Павлин! Перестань нести смуту в неокрепшие умы молодых столманоидов

    1. Проприерасты имеют точно такое-же юридическое и моральное право пользоваться libjpeg как и сообщество т.к. это референсный код от Independent JPEG Group, спонсируемой этими самыми проприерастами, а не творчество кулибиных. Причем код распространяется под пермиссивной лицензии, аналогичной MIT/BSD.

    2. "высококачественные проприетарные кодеки" высококачественны не от того что имеют некие навороты в коде, которые тщательно прячутся от сообщества, а от того что имеют хорошо подобранные матрицы квантизации в своем составе. Кстати, эти матрицы сохраняются в самом жпеге и легко выдираются оттуда, по этому, если хочешь чтобы libjpeg кодировал не так хреново, как это он делает "иcкаропки", а как фотошоп, то просто выдираешь матрицу из произведенного последним jpeg-а и скармливаешь ее libjpeg-у параметром. И все. Результат - аналогичен

     
     
  • 3.9, ананим (?), 00:01, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Э, Павлин! Перестань нести смуту в неокрепшие умы молодых столманоидов

    Зато сколько окрепших дэбилов срефлекировало целыми простынями в коментах. Всё гадкое нутро в них.
    Ну вот сколькими проприетарными либджпегами ты пользовался при разработке?
    И не будешь. И даже сабжем (с вероятностью 99%) не будешь.
    Зато своё "авторитетное" мнение оставил — а то как же! Вдруг буизнесменом станешь, а код спи3дить будет низя.

     
     
  • 4.10, anonymous (??), 00:36, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А Вы, дайте угадаю, в нашу доблестную полицию метите - искать правонарушения там, где их нет? Побуду кэпом. Если лицензия на код не запрещает использовать его в проприетарщине, то использование оного в проприетарщине не является воровством
    http://www.libjpeg-turbo.org/About/License
     
     
  • 5.11, ананим (?), 02:50, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вот только гадалок тут и не хватало.
    Алё?
    "Можно или нельзя" — даже не предмет обсуждения.
    А вот оценка содержимого этих проприетарных решений — вполне себе.
    По поводу чего и кило-тонны опа-больных комментов даже не у проприетарных разрабов, а у ПОТЕНЦИАЛЬНО-проприетарных (у пока только примазывающихся).

    Зыж
    > Побуду кэпом.

    Ы-ы-ы???
    Не, пока просто — побудешь. :D

     
     
  • 6.17, anonymous (??), 16:37, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Похоже, что не "Алё".
    Мое нелепое угадывание было намеком на то, что Ваши собственные, так сказать, предположения по поводу использования/неиспользования либ, мотивов написания комментария предыдущего оратора и "буизнесменов" "ворующих" код - совершенно не к месту.
    Посыл не дошел до получателя и вернулся к отправителю. Чтож, ладно.

    >99% которых спи... код у libjpeg
    >оценка содержимого этих проприетарных решений

    Хорошая оценка, нечего сказать. Больше похоже на голословное утверждение. А указание на то, что лицензия на код libjpeg пермиссивная и, соответственно, использовать его не выполняя условия лицензии (упомянуть авторов где либо в документации) смысла особо нет - это не иначе как "кило-тонны опа-больных комментов". Если же упоминания авторов действительно нигде нет и есть уверенность что код тот же самый, то, без сомнения, надо писать в FSF или куда еще.

    >Не, пока просто — побудешь. :D

    Что сказать то хотели?

     
  • 3.12, pavlinux (ok), 02:53, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > ... Проприерасты имеют точно ...

    Так некоторые не пишут лицензию, кто-то статиком копмилит нужные функции, кто-то код выдирает, - я, например.  

     
     
  • 4.13, anonymous (??), 11:13, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и молодец, сразу видно культуру программирования. Тебе что, индульгенцию за публичное покаяние выписывать за это?
     
     
  • 5.15, pavlinux (ok), 13:58, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну и молодец, сразу видно культуру программирования.

    Вы когда смартфон включаете, здороваетесь с ним?
    GCC, после успешной компиляции, спасибо говорите?

     
     
  • 6.16, anonymous (??), 15:09, 10/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Когда ты тыришь код, к Столлману ходишь на исповедание?

    Когда твоя программа в списке CVE из-за вкомпиленного кода openssl, воздаешь ли ты покаяние богам жадности, глупости и недальновидности?

     
  • 3.19, Zenitur (ok), 14:15, 12/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Никто и не спорит что "имеют право", вопрос стоял в "приближении по скорости работы к проприетарным аналогам". Не такие уж они и крутые, эти аналоги.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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