Может ли высокопроизводительная имплантация 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;

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

Другие вопросы по тегам