【发布时间】:2015-01-27 08:46:50
【问题描述】:
我想将颜色模式从yuv444 转换为yuyv422。
目前,我正在使用c 来转换速度较慢的。
有谁知道如何使用 arm NEON 转换颜色模式?
下面是我使用c的代码:
{
unsigned int i, j;
unsigned int y1, y2, cb, cr, i_rows;
const unsigned char *p;
p = src;
for (i = 0; i < height; i++) {
i_rows = i*2*width;
for (j = 0; j < 2*width; j += 4) {
y1 = p[0];
cb = (p[1] + p[4] + 1) >> 1;
y2 = p[3];
cr = (p[2] + p[5] + 1) >> 1;
*(dst + i_rows + j ) = y1;
*(dst + i_rows + j+1) = cb;
*(dst + i_rows + j+2) = y2;
*(dst + i_rows + j+3) = cr;
p += 6;
}
}
}
【问题讨论】:
-
您可能需要自己尝试实现它,如果遇到任何问题,您可能会遇到具体问题。
-
看起来它应该可以相当简单地向量化(元素之间没有讨厌的依赖关系),尽管 6 字节的长度意味着您可能希望在一次以保持加载/存储对齐,最后需要进行一些非矢量化清理。 NEON programmer's guide 可能是一个不错的起点。
-
我想看看 OpenCV 是否对此进行了优化。