Am 09.02.2010 um 18:11 schrieb Sandijs Ribaks:
This is a patch for http://bugs.winehq.org/show_bug.cgi?id=21629 . It seems ok in concept, just a few points:
+static void convert_yuy2_x8r8g8b8(const BYTE *src, BYTE *dst, + DWORD pitch_in, DWORD pitch_out, unsigned int w, unsigned int h) ... + const BYTE *src_line = (const BYTE *)(src + y * pitch_in); The cast here is redundant
+ if (!(x & 1)) { /* for every even pixel, read new U and V */ The placement of the { is inconsistent with the rest of the patch.
+ dst_line[x] = 0xff000000 + | cliptobyte((c2 + r2) >> 8) << 16 /* red */ + | cliptobyte((c2 + g2) >> 8) << 8 /* green */ + | cliptobyte((c2 + b2) >> 8); /* blue */ I recommend to add a comment explaining that (x >> 8) << 8 is not redundant but in used to mask out lower bits.
Just to make sure I understand this correctly:
+ r2 = 409 * e + 128; + g2 = - 100 * d - 208 * e + 128; + b2 = 516 * d + 128; The +128 here is for proper rounding in the right shift step afterwards?