stb_image simd 支持是不是存在?

Posted

技术标签:

【中文标题】stb_image simd 支持是不是存在?【英文标题】:Does stb_image simd support exist?stb_image simd 支持是否存在? 【发布时间】:2013-12-28 16:57:12 【问题描述】:

stb_image 似乎支持 idct 和 ycbcr->rgb 转换操作的插件 SIMD 实现,这在加载 jpeg 文件时需要大部分时间。查看 STBI_SIMD 背后的代码,很明显该代码实际上已在某处使用。

但是,要么实现是专有的,要么我的 google-fu 失败了,因为我没有找到任何使用此接口的公共代码。

我的需求仅适用于 x86 平台(目前)。

有没有开源使用这个接口的?

【问题讨论】:

如果是他的代码,他无疑会包含它(或链接,如果使用不同的许可证)。 【参考方案1】:

我记得在 Twitter 上看到过你的问题,今天碰巧有人提到 libjpeg-turbo 在 BSD 许可下获得许可。希望对您有所帮助。

【讨论】:

【参考方案2】:

它似乎属于 Horde3D 引擎(GNU LGPL)

http://open-projects.net/~shahn/darcs/old/Horde3D_Linux_64bit/Horde3D/Source/Horde3D%20Engine/utImage.cpp

虽然我期待 SSE,但最纯粹的 SIMD..

【讨论】:

utImage.cpp 似乎只包含 stb_image 源的副本,而不是任何 simd 代码;我在 horde3d 项目中也没有看到任何东西,而且 makefile 似乎没有定义 STBI_SIMD 宏。 SIMD = 单指令多数据,从字面上理解也可能意味着对数据/数组向量执行相同的按位指令。它与 SSE 扩展(英特尔)没有严格的关系。此外,idct_block 的签名与您正在搜索的签名匹配,可能是一个好地方。 我都知道。如果您阅读原始问题,则 stb_image 具有用于优化版本的插件接口(可能使用一些 simd 指令集进行汇编,例如 mmx、sse 或非英特尔硬件上的类似矢量操作)。您指向的代码只是 stb_image 的普通副本,没有使用此类优化。 所以您正在搜索 SSE 版本或类似版本,对吧? 不,我正在搜索专门为该插件接口编写的代码。

以上是关于stb_image simd 支持是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章

为啥不存在更广泛版本的 VDPPD / VDPPS,例如 512 位?

MySQL 是不是支持“如果存在”?

为啥 C++ 标准库中没有 SIMD 功能?

在 tomcat 中是不是存在对接受盐的 JDBCRealm 的支持?

从 cmake 测试是不是存在支持 cuda 的 GPU 的最简单方法是啥?

如何获得英特尔架构 SIMD __m128 的标志