public static byte[] yuv422To420(byte[] yuv422, int width, int height) {
int len = width * height;
//yuv格式数组大小,y亮度占len长度,u,v各占len/4长度。
byte[] yuv = new byte[len * 3 / 2];
int y = 0;
int u = len;
int index_y = 0, index_u = 0;
boolean is_u = true;
for (int i = 0; i < height * 2; i++) {
for (int j = 0; j < width; j = j + 4) {
yuv[y + (index_y++)] = yuv422[width * i + j];
yuv[y + (index_y++)] = yuv422[width * i + j + 2];
}
}
for (int i = 0; i < height; i = i + 2) {
int base = i * width * 2;
for (int j = base + 1; j < base + width * 2; j = j + 2) {
if (is_u) {
yuv[u + (index_u++)] = yuv422[j];
is_u = false;
} else {
yuv[u + (index_u++)] = yuv422[j];
is_u = true;
}
}
}
return yuv;
}
网友评论