如何使用arm NEON将yuv444转换为yuyv422?

时间:2015-01-27 08:46:51

标签: arm simd neon yuv

我想将颜色模式从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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

试试这个:

vld3.8      {d16, d18, d20}, [pSrc]!
vld3.8      {d17, d19, d21}, [pSrc]!

vtrn.8      q9, q10

vrhadd.u8   q9, q10, q9

vst2.8      {q8, q9}, [pDst]!

以上就是我在主循环中放入的内容。其余的由你决定。