Here is small sample if somebody not want to dig it.
void yuv2rgb() {
// This code partially based on code from
http://www.mikekohn.net/stuff/image_processing.php#download unsigned char *frameBuffer;
unsigned int idxFrame, xx, yy;
int y, u, v, r, g, b, u1, uv1, v1, y1;
// Current frame buffer
frameBuffer = (unsigned char *)FRAME_BUF;
// Format is U Y1 V Y2, where Y1 and Y2 is brightness for pixels #1 and #2.
// U and V are common for both pixels.
for(yy = 0; yy < imgHeight; yy++) {
// Step each two pixels
for(xx = 0; xx < imgWidth; xx += 2) {
idxFrame = index(xx, yy);
// Common part for both pixels
u = frameBuffer[idxFrame]; // U component
v = frameBuffer[idxFrame + 2]; // V component
// Start YUV -> RGB conversion
u -= 128;
v -= 128;
v1 = (5727 * v);
uv1 = -(1617 * u) - (2378 * v);
u1 = (8324 * u);
// Pixel #1
y = frameBuffer[idxFrame + 1];
y1 = y << 12;
r = (y1 + v1) >> 12;
g = (y1 + uv1) >> 12;
b = (y1 + u1) >> 12;
if (r > 255) r = 255;
else if (r < 0) r = 0;
if (g > 255) g = 255;
else if (g < 0) g = 0;
if (b > 255) b = 255;
else if (b < 0) b = 0;
// Use (rgb) for pixel #1
//putchar(r); putchar(g); putchar(b);
// Pixel #2
y = frameBuffer[idxFrame + 3];
y1 = y << 12;
r = (y1 + v1) >> 12;
g = (y1 + uv1) >> 12;
b = (y1 + u1) >> 12;
if (r > 255) r = 255;
else if (r < 0) r = 0;
if (g > 255) g = 255;
else if (g < 0) g = 0;
if (b > 255) b = 255;
else if (b < 0) b = 0;
// Use (rgb) for pixel #2
//putchar(r); putchar(g); putchar(b);
}
}
}