相关疑难解决方法(0)

使用 SSE2 优化 RGB565 到 RGB888 的转换

我正在尝试使用 SSE2 和基本公式来优化从 565 到 888 的像素深度转换:

col8 = col5 << 3 | col5 >> 2
col8 = col6 << 2 | col6 >> 4
Run Code Online (Sandbox Code Playgroud)

我取了两个 2x565 128 位向量,我输出了 3x888 128 位向量。

经过一些掩码、移位和 OR'ing 之后,我有两个向量 ((blue << 8) | red)* 8 位颜色存储在 16 位字中,而类似的向量具有零绿色值. 现在我需要将它们组合成 888 输出。

    BR: BR7-BR6-...-BR1-BR0
    0G: 0G7-0G7-...-0G1-0G0
                 |
                 v
  OUT1: R5-BGR4-...-BGR1-BGR0
Run Code Online (Sandbox Code Playgroud)

在 SSSE3 中有一个 _mm_shuffle_epi8() 可以解决我的需求,但由于我需要支持的硬件范围,我想将自己限制在 SSE2 上。

  • 它是小端

c++ rgb sse2

3
推荐指数
1
解决办法
569
查看次数

标签 统计

c++ ×1

rgb ×1

sse2 ×1