天天看点

Jpeg 库的解码OpenCL优化libJpeg库解码OpenCL优化

这两周在闲暇时基于通用的libjpeg库重新做了一个opencl解码实现。重新熟悉下算法。

<a href="https://github.com/jxt1234/platform_external_jpeg">https://github.com/jxt1234/platform_external_jpeg</a>

opencl文件夹目录下面的就是所有的修改。

用xcode开发的,没兴趣去整makefile了,代码独立,移植集成也很方便。

1.算法代码完全独立,不修改原来库中的代码。

2.支持各种yuv格式(411、422、444等等)。

3.霍夫曼解码仍然由cpu完成,采用opencl做idct和颜色转换,向量化实现,效率很高。(ps:当年移植那个坑爹的libjpeg-opencl时被坑死了)

4.只支持输出为rgb的格式,需要扩展的看下代码自己改,也不麻烦,这部分用simd实现比较好,因此没怎么写。

macbook上数据,仅供参考

opencl优化后数据:

time cost for 3200 * 2000, 177757 / 1000000s

mcu is 130001 / 1000000s

原cpu方式数据

time cost for 3200 * 2000, 363453 / 1000000s

idct和颜色转换的时间压缩到可以忽略不计了。几乎只剩下解霍夫曼编码的时间,总体性能是提升了100%。

继续阅读