是否有一个易于使用的JPEG转换器(源代码)为Delphi 6,将在内存缓冲区中的JPEG帧转换为DirectShow兼容位图快速,没有恒定的内存重新分配?我试图避免与TBitmap一起使用默认的JPEG单元,因为它为每次转换分配一个新的位图,并且每个操作也涉及一些其他初始化/拆除操作。
我将从RTP服务器接收JPEG帧,我需要将其转换为位图并通过DirectShow过滤器的FillBuffer()调用推出。每一帧都是完全相同的大小和格式,因为它们是使用预设设置从视频捕获设备流式传输的。因此,如果我可以只分配一次位图,然后将每个传入的JPEG帧转换为现有的位图内存区域,我就可以避免每秒25次重新分配内存块,并且避免在JPEG单元中使用的转换过程中Delphi涉及的任何其他辅助数据对象的开销。
从CPU使用的角度来看,它不必是闪电般的快。足够快,可以在不到1/25秒的时间内处理640 x 480的JPEG帧转换(安全起见是1/15)。
不确定内存使用情况,但有一个非常小的jpeg解码器,您可以轻松地修改自己的源代码是NanoJPEG: http://keyj.emphy.de/nanojpeg/
Delphi转换:http://www.emix8.org/static.php?page=nanoJpeg