Может ли высокопроизводительная имплантация jpeglib-turbo распаковать / сжать <100 мс?
В настоящее время я реализую jpeg resizer в C++, используя библиотеку jpeglib-turbo.
Мне дали цель 100 миллисекунд для распаковки и повторного сжатия JPEG с использованием библиотеки. Лучшее, что я могу придумать, используя рекомендуемые настройки оптимизации (задокументированные в jpeglib-turbo using.txt), составляет около 320 мс, поэтому мне интересно, возможно ли 100 мс / реально? Это будет для распаковки / повторного сжатия изображения размером 3000x4000 пикселей размером от 6 МБ до 130 КБ.
Код, который я использую для быстрой распаковки:
dinfo.dct_method = JDCT_IFAST;
dinfo.do_fancy_upsampling = FALSE;
dinfo.two_pass_quantize = FALSE;
dinfo.dither_mode = JDITHER_ORDERED;
dinfo.scale_num = 1/8;
1 ответ
Спасибо за ответы.
На самом деле можно распаковать и снова сжать примерно за 100 мс. После обращения к автору libjpeg-turbo он сказал мне, что используемое мной свойство dinfo.scale_num неверно. Это свойство является числителем шкалы - мне также нужно было установить свойство scale_denom (denominator).
Таким образом, хороший код будет:
dinfo.dct_method = JDCT_IFAST;
dinfo.do_fancy_upsampling = FALSE;
dinfo.two_pass_quantize = FALSE;
dinfo.dither_mode = JDITHER_ORDERED;
dinfo.scale_num = 1;
dinfo.scale_denom = 8;
Я хочу, чтобы код был настолько быстрым, так как масштабирование изображения должно быть незаметным для пользователя, так как оно находится в клиентском приложении, где скорость / удобство для пользователя является наиболее важной вещью.