Created
October 9, 2013 00:41
-
-
Save crouchggj/6894292 to your computer and use it in GitHub Desktop.
yuv422 transfer rgb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int convert_yuv_to_rgb_pixel(int y, int u, int v) | |
{ | |
unsigned int pixel32 = 0; | |
unsigned char *pixel = (unsigned char *)&pixel32; | |
int r, g, b; | |
r = y + (1.370705 * (v-128)); | |
g = y - (0.698001 * (v-128)) - (0.337633 * (u-128)); | |
b = y + (1.732446 * (u-128)); | |
if(r > 255) r = 255; | |
if(g > 255) g = 255; | |
if(b > 255) b = 255; | |
if(r < 0) r = 0; | |
if(g < 0) g = 0; | |
if(b < 0) b = 0; | |
pixel[0] = r ; | |
pixel[1] = g ; | |
pixel[2] = b ; | |
return pixel32; | |
} | |
int convert_yuv_to_rgb_buffer(unsigned char *yuv, unsigned char *rgb, unsigned int width, unsigned int height) | |
{ | |
unsigned int in, out = 0; | |
unsigned int pixel_16; | |
unsigned char pixel_24[3]; | |
unsigned int pixel32; | |
int y0, u, y1, v; | |
for(in = 0; in < width * height * 2; in += 4) | |
{ | |
pixel_16 = | |
yuv[in + 3] << 24 | | |
yuv[in + 2] << 16 | | |
yuv[in + 1] << 8 | | |
yuv[in + 0]; | |
y0 = (pixel_16 & 0x000000ff); | |
u = (pixel_16 & 0x0000ff00) >> 8; | |
y1 = (pixel_16 & 0x00ff0000) >> 16; | |
v = (pixel_16 & 0xff000000) >> 24; | |
pixel32 = convert_yuv_to_rgb_pixel(y0, u, v); | |
pixel_24[0] = (pixel32 & 0x000000ff); | |
pixel_24[1] = (pixel32 & 0x0000ff00) >> 8; | |
pixel_24[2] = (pixel32 & 0x00ff0000) >> 16; | |
rgb[out++] = pixel_24[0]; | |
rgb[out++] = pixel_24[1]; | |
rgb[out++] = pixel_24[2]; | |
pixel32 = convert_yuv_to_rgb_pixel(y1, u, v); | |
pixel_24[0] = (pixel32 & 0x000000ff); | |
pixel_24[1] = (pixel32 & 0x0000ff00) >> 8; | |
pixel_24[2] = (pixel32 & 0x00ff0000) >> 16; | |
rgb[out++] = pixel_24[0]; | |
rgb[out++] = pixel_24[1]; | |
rgb[out++] = pixel_24[2]; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello bro, this code work good or not?
Thank you.