【发布时间】:2014-03-26 16:36:15
【问题描述】:
我们在我们的小型嵌入式平台上使用 libjpeg 进行 JPEG 解码。当我们解码大图像时,我们遇到了速度问题。例如,大小为 20 MB 且尺寸为 5000x3000 像素的图像需要 10 秒才能加载。
我需要一些关于如何提高解码速度的提示。在其他性能相似的平台上,我在两秒钟内就可以加载相同的图像。
通过使用更大的读取缓冲区(64 kB 而不是默认的 4 kB),我们获得了从 14 秒到 10 秒的最佳减少。但没有其他帮助。
我们不需要以全分辨率显示图像,因此我们使用 scale_num 和 scale_denom 以较小的尺寸显示它。但我想有更多的表现。是否可以使用某种多线程等?不同的解码设置?任何事情,我都有想法。
【问题讨论】:
-
对目标硬件和操作环境如此谨慎可能不利于一个好的答案。处理器架构、操作系统、内存大小、内存带宽等信息可能都密切相关。你从什么加载图像?你确定这不是瓶颈吗?例如,SD 卡的性能差异很大,尤其是通过 SPI 读取。
-
目标图片尺寸是多少?如果您愿意获得 1/8 x 1/8 的缩放图像 (625x325),您只需解码 DC 值即可获得巨大的速度提升(无需逆变换)。
标签: performance embedded jpeg libjpeg decoder