1 2 3 4 5 6 7 8 9 10 11 12 13 14
| float Y, U, V;
uchar* rgbIterator = rgbBuffer;
for(int y = 0; y < size.y ; ++y)
for(int x = 0; x < size.x ; ++x)
{
Y = *(yuvBuffer[0].data + x + (yuvBuffer[0].stride * (size.y - 1 - y) ));
U = *(yuvBuffer[2].data + x / 2 + (yuvBuffer[2].stride * ((size.y - 1 - y) / 2)));
V = *(yuvBuffer[1].data + x / 2 + (yuvBuffer[1].stride * ((size.y - 1 - y) / 2)));
*rgbIterator++ = (uchar) clamp((int) (1.164f * Y + 2.03211f * (U - 128)) , 0, 255);
*rgbIterator++ = (uchar) clamp((int) (1.164f * Y - 0.39465f * (U - 128) - 0.58060f * (V - 128)) , 0, 255);
*rgbIterator++ = (uchar) clamp((int) (1.164f * Y + 1.13983f * (V - 128)) , 0, 255);
} |
Partager