本代码只是为了生成YUV数据用于测试. 以下代码有多处可以再优化
uint8_t* yuvArray(uint8_t* rgb, int w, int h)
//+ (unsigned char*)yuvArray: (uint8_t*) rgb width:(int) w height:(int) h //这是objective-c的写法
{
int pixelCount = w*h;
uint8_t* yuv888 = malloc(pixelCount*3);
uint8_t R,G,B,Y,U,V;
int n = 0;
int yuv888bytes = pixelCount*3;
for(int i=0; i<yuv888bytes; ){
R = rgb[i++];
G = rgb[i++];
B = rgb[i++];
Y = (int) ((0.257 * R) + (0.504 * G) + (0.098 * B) + 16);
U = (int) (-(0.148 * R) - (0.291 * G) + (0.439 * B) + 128);
V = (int) ((0.439 * R) - (0.368 * G) - (0.071 * B) + 128);
yuv888[n++] = Y;
yuv888[n++] = U;
yuv888[n++] = V;
}
uint8_t* yuv420 = malloc(pixelCount*3/2);
uint8_t* y = yuv420;
uint8_t* ptr;
n = 0;
/** 生成Y数据 */