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);
    }
}