我正在尝试从 YUYV 格式排序和排列为 YUV422p 格式。该数组当前看起来像:
[y1][cb1][y2][cr1][y3][cb2][y4][cr2][y5][cb3][y6][cr3][y7][cb4][y8][cr4] .. .[yn][cbn+1/2][yn+1][crn+1/2]
我需要将其排序为:
[y1][y2][y3][y4][y5][y6][y7][y8][yn][yn+1]..[cb1][cb2][cb3][cb4][cbn+1 /2]..[cr1][cr2][cr3][cr4][crn+1/2]
所有 y 需要在一起,所有 cb 在一起,所有 cr 在一起。
我正在努力使这部分尽可能高效并花费最少的时间。
这是我到目前为止所做的:
inline const void YUYV_to_YUV422P_1280x960( char* yuyv, char* yuv422p)
{
const unsigned int height = 960;
const unsigned int width = 1280;
int loopCount1 = height*width/2;
int loopCount2 = height*width;
char* yComponent = yuv422p;
char* cbComponent = yuv422p + loopCount2;
char* crComponent = yuv422p + loopCount1 + loopCount2;
int i;
for( i = (loopCount1 - 1); i != 0; --i )
{
cbComponent[ i ] = yuyv[ i*4 + 1 ];
crComponent[ i ] = yuyv[ i*4 + 3 ];
}
for( i = (loopCount2 -1); i != 0; --i )
{
yComponent[ i ] = yuyv[ i*2 ];
}
}
有关如何使这更有效和更快的任何想法,请告诉我。