這兩周在閑暇時基于通用的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%。