J'essaye de traduire cette fonction vers delphi.Quelqu'un peut m'aider?
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 void ClassImg::RGBtoYUV(LPBYTE pdest, LPBYTE psrc, DWORD w, LPBYTE m_AChannel) { LPBYTE dst = pdest; LPBYTE src = psrc; LPBYTE Ach = m_AChannel; DWORD w2 = w >> 1; while (w2--) { int B = *src++; int G = *src++; int R = *src++; if (Ach) *Ach++ = *src++; int Y = ((long)(219l* 77*R + 219l*150*G + 219l* 29*B)>>16)+16; int U = ((long)(219l*131*B - 219l* 87*G - 219l* 44*R)>>16)+128; #define clip(x) (((x) & 0xffffff00) ? ((x) & 0x80000000) ? 0 : 255 : (x)) *dst++ = clip(U); *dst++ = clip(Y); B = *src++; G = *src++; R = *src++; if (Ach) *Ach++ = *src++; Y = ((long)(219l* 77*R + 219l*150*G + 219l* 29*B)>>16)+16; int V = ((long)(219l*131*R - 219l*110*G - 219l* 21*B)>>16)+128; *dst++ = clip(V); *dst++ = clip(Y); } }
Partager