不对:
private byte[] NV21_rotate_to_90(byte[] nv21_data, int width, int height)
{
int y_size = width * height;
int buffser_size = y_size * 3 / 2;
byte[] nv21_rotated = new byte[buffser_size];
// Rotate the Y luma
int i = 0;
int startPos = (height - 1)*width;
for (int x = 0; x < width; x++)
{
int offset = startPos;
for (int y = height - 1; y >= 0; y--)
{
nv21_rotated[i] = nv21_data[offset + x];
i++;
offset -= width;
}
}
// Rotate the U and V color components
i = buffser_size - 1;
for (int x = width - 1; x > 0; x = x - 2)
{
int offset = y_size;
for (int y = 0; y < height / 2; y++)
{
nv21_rotated[i] = nv21_data[offset + x];
i--;
nv21_rotated[i] = nv21_data[offset + (x - 1)];
i--;
offset += width;
}
}
return nv21_rotated;
}
public byte[] rotateYUV420Degree90(byte[] data, int imageWidth, int imageHeight) {
byte[] yuv = new byte[imageWidth * imageHeight * 3 / 2];
int i = 0;
for (int x = 0; x < imageWidth; x++) {
for (int y = imageHeight - 1; y >= 0; y--) {
yuv[i] = data[y * imageWidth + x];
i++;
}
}
i = imageWidth * imageHeight * 3 / 2 - 1;
for (int x = imageWidth - 1; x > 0; x = x - 2) {
for (int y = 0; y < imageHeight / 2; y++) {
yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth) + x];
i--;
yuv[i] = data[(imageWidth * imageHeight) + (y * imageWidth)
+ (x - 1)];
i--;
}
}
return yuv;
}