您的位置:首页 > 移动开发 > Android开发

YUV420P的格式以及转换为RGB565的代码(Android摄像头的输出一般为YUV420P)

2013-10-29 20:04 387 查看


static void cvt_420p_to_rgb565(int width, int height, const unsigned char *src, unsigned short *dst)

{

int line, col, linewidth;

int y, u, v, yy, vr, ug, vg, ub;

int r, g, b;

const unsigned char *py, *pu, *pv;

linewidth = width >> 1;

py = src;

pu = py + (width * height);

pv = pu + (width * height) / 4;

y = *py++;

yy = y << 8;

u = *pu - 128;

ug = 88 * u;

ub = 454 * u;

v = *pv - 128;

vg = 183 * v;

vr = 359 * v;

for (line = 0; line < height; line++) {

for (col = 0; col < width; col++) {

r = (yy + vr) >> 8;

g = (yy - ug - vg) >> 8;

b = (yy + ub ) >> 8;

if (r < 0) r = 0;

if (r > 255) r = 255;

if (g < 0) g = 0;

if (g > 255) g = 255;

if (b < 0) b = 0;

if (b > 255) b = 255;

*dst++ = (((unsigned short)r>>3)<<11) | (((unsigned short)g>>2)<<5) | (((unsigned short)b>>3)<<0);



y = *py++;

yy = y << 8;

if (col & 1) {

pu++;

pv++;

u = *pu - 128;

ug = 88 * u;

ub = 454 * u;

v = *pv - 128;

vg = 183 * v;

vr = 359 * v;

}

}

if ((line & 1) == 0) {

pu -= linewidth;

pv -= linewidth;

}

}

}

转载于:http://blog.csdn.net/dotphoenix/article/details/6431351
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐