Простой в использовании конвертер JPEG в Bitmap для Delphi 6, эффективный с использованием памяти?
Существует ли простой в использовании конвертер JPEG (исходный код) для Delphi 6, который преобразует кадр JPEG в буфере памяти в совместимое с DirectShow растровое изображение быстро и без постоянного перераспределения памяти? Я пытаюсь избежать стандартного модуля JPEG в сочетании с TBitmap, потому что он выделяет новое растровое изображение при каждом преобразовании, а также имеет некоторые другие операции инициализации / разрыва, связанные с каждой операцией.
Я буду получать кадры JPEG с RTP-сервера, которые мне нужно преобразовать в растровые изображения и выдать через вызов FillBuffer() моего фильтра DirectShow. Каждый кадр будет иметь одинаковый размер и формат, поскольку они передаются с устройства захвата видео с использованием предустановленных настроек. Поэтому, если бы я мог выделить растровое изображение только один раз, а затем преобразовать каждый входящий кадр JPEG в существующую область памяти растрового изображения, я мог бы избежать перераспределения фрагмента памяти 25 раз в секунду, а издержки на любые другие объекты вспомогательных данных связаны с Delphi. в процессе преобразования, используемом в модуле JPEG вместе с TBitmap.
Это не должно быть молниеносно с точки зрения использования процессора. Просто достаточно быстро, чтобы обработать 640 x 480 JPEG конвертацию кадра менее чем за 1/25 секунды (1/15 для безопасности).
1 ответ
Не уверен насчет использования памяти, но очень маленький JPEG-декодер с источником, который вы можете легко изменить самостоятельно, - это NanoJPEG: http://keyj.emphy.de/nanojpeg/
Конвертация Delphi здесь: http://www.emix8.org/static.php?page=nanoJpeg