作为一个简单的问题:有没有办法在 Java 中将每个其他字节从一个数组快速复制到另一个数组?
免责声明:我的代码已经足够快了,但我发现自己想知道是否有任何本机方法比简单的 for 循环更快。
问题详细信息(对于那些感兴趣的人):我将 YUV 字节数组拆分为三个单独的字节数组(Y、U 和 V)。如果您之前没有见过 YUV 数组(在 Android 标准 NV21 格式中),则结构是 Y 的高度*宽度字节,后跟(高度*宽度)/2 字节的 UV 数据(我们的眼睛对色度分辨率不太敏感)交错. 可以使用arraycopy
以下方法优化将 Y 字节传输到专用数组中:
System.arraycopy(yuvs, 0, yArray, 0, imgSize.width*imgSize.height);
但是,我将 UV 部分复制到专用数组中,如下所示:
for (bt_y = 544; bt_y < previewSize.height*(3.0/2.0); bt_y++) {
for (bt_x = 0; bt_x < 960;) {
uArray[UVIndex] = yuvs[bt_y*960+bt_x++];
vArray[UVIndex++] = yuvs[bt_y*960+bt_x++];
}
}
有没有一种方法可以以某种方式接受“步幅”变量或可以允许以已知间隔选择元素的方法?