前言
参考这篇文章:Jpeg 库的解码OpenCL优化
然后自己写了一个符合自己代码风格的demo,在这里分享一下
工程组织形式
.
├── .vscode // vscode的隐藏目录
├── CMakeLists.txt
├── prebuild.sh // 这个脚本用来编译libjpeg库的
├── bin // 生成执行文件的目录
├── inc
├── src
├── jpeg-opencl.c // 代码都在这一个文件里
├── main.c
├── lib // libjpeg库安装到这里
├── pic // 放图片的地方
├── spv
├── jpeg-decoder.cl // cl核函数
└── thirdparty
├── jpeg-9e
本人习惯用vscode,所以demo用vscode就可以运行调试,运行环境是mac
一些需要注意的地方
1.使用vscode调试需要依赖.vscode目录下的launch.json和tasks.json,一些关键的地方可以根据实际环境修改
2.OpenCL库是指定了mac系统的framework,其他环境根据实际情况指定
3.这个demo只支持idct scales size为8的图片,要是注释掉以下代码,也是可以运行的,但pic/1.jpeg这个图像解码出来是黑白的,应该跟idct的算法有关,不过本人么有去研究这么深奥的东西
4.Jpeg 库的解码OpenCL优化 提供的idct核函数,输出时会除以8,本人发现解码后的图片色彩非常淡,改为1就正常了,同样搞不懂具体原因
最后demo传送门