Выпуск библиотеки libjpeg-turbo 1.4.0
Благодаря использованию инструкций 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.
Источник: http://www.opennet.ru/opennews/art.shtml?num=41421
|
0 | Tweet | Нравится |
|