Как-то раз, вычитывая библиотеку для удаленного наблюдения за рабочим столом, я обратил внимание что куча ресурсов и времени занимает кодирование/декодирование JPEG. Изучив по ускорению этой процедуры сторонние решения, было решено использовать JpegTurbo.
Погуглив был найден проект delphi-jpeg-turbo, реализация которого мне не подошла по следующим причинам:
Просто пример JPEG файла |
Погуглив был найден проект delphi-jpeg-turbo, реализация которого мне не подошла по следующим причинам:
- Реализован в виде наследника от TBitmap, я же использую TFastDib для нормальной многопоточной работы;
- Устаревшие хидеры, автор использует декодирование в RGB формат, а потом попиксельно переводит его в требуемый Windows GDI GBR формат. Это занимает кучу времени, к тому же libjpeg-turbo умеет декодировать сразу в GBR, и в интернете не попалось ни одного примера где так сделано;
- Загрузка из памяти: libjpeg-turbo имеет функции jpeg_mem_src и jpeg_mem_dest, которые позволяют сразу кодировать/декодировать из буфера не создавая кучу промежуточного кода;