Есть ли какое-либо бесплатное или коммерческое декодирование jpeg, которое действительно быстро

Я использую С++, libjpeg для декодирования файла jpeg. Я считаю, что это недостаточно быстро, есть ли способ сделать это быстрее, установив какой-либо параметр компиляции? или есть ли другая библиотека, которая может быстрее открывать файлы jpeg?

теперь для открытия изображения 4368 * 2912 4m jpeg требуется около 750 мс. Я хочу, чтобы это можно было уменьшить до 150 мс. Большое спасибо!

Добавлено: IJL кажется быстрее, чем libjpeg :)


person user25749    schedule 20.10.2009    source источник
comment
Нет параметров компилятора, которые могут ускорить программу в 6 раз.   -  person n0rd    schedule 20.10.2009
comment
Поскольку 4 МБ / 150 мс = 27 МБ/с, чистая скорость ввода-вывода уже становится актуальной.   -  person MSalters    schedule 20.10.2009
comment
менее секунды для 12,7-мегапиксельного изображения действительно неплохо...   -  person Kip    schedule 20.10.2009


Ответы (5)


Самый быстрый способ — вообще не расшифровывать. Обычно вы можете сначала использовать предварительный просмотр с низким разрешением; для этого нужны только низкие частоты. Для предварительного просмотра 546 x 289 пикселей вам фактически нужен только компонент (0,0) (DC).

person MSalters    schedule 20.10.2009

Существуют Intel Performance Primitives, которые содержат реализации кодирования/декодирования JPEG.

person the_mandrill    schedule 20.10.2009
comment
@Shay: хорошо, но sxingfeng запросил бесплатное или коммерческое программное обеспечение, поэтому «оно должно быть бесплатным» не было требованием. - person Jesper; 20.10.2009
comment
огромное спасибо! jesper, я попробую. - person user25749; 21.10.2009

Также см. http://sourceforge.net/projects/libjpeg-turbo/. вместо libjpeg, который использует SIMD-инструкции для значительного повышения производительности.

person adzm    schedule 01.10.2010

Я использую libjpeg из ijg. Документировано, как модифицировать для ваших целей, например кодирование/декодирование в памяти.

person coelhudo    schedule 20.10.2009
comment
огромное спасибо! Я также пытался ijl, это занимает всего 600 мс на моем компьютере AMD, может быть, быстрее на процессоре Intel. Я думаю, что многие могут занять менее 400 мс. - person user25749; 21.10.2009

Я думаю, что DirectX и libSDL могут декодировать jpeg, хотя libSDL может использовать libjpeg для декодирования.

person Tobias Langner    schedule 20.10.2009