interlaced images

Hi, i´m using the yuv colorspace to implement a video codec. In the player part, I had to do a yuv-rgb converter, which algorithm i got from the internet. But when i show it on the screen using opengl the image appears wrong. I tried to open the image in the adobe photoshop, and the image appears correct just when i select the interlaced option, otherwise the image apears wrong too. The converter algorithm save the r,g and b components sequentially, each one with 8 bits, as the follows:
unsigned char *yb,*ub,*vb,*ptr;
int Y,U,V,r,g,b,x,y;
yb = Ycomponent;
ub = Ucomponent;
vb = Vcomponent;
for (y=0; y<height; y++){
for (x=0; x<width; x++){
Y = yb++;
U = (unsigned char)ub++;
V = (unsigned char)vb++;
U -= 128;
V -= 128;
r = clip(Y+V); //between 0…255
b = clip(Y+U); //between 0…255
g = clip(((Y
436L) >> 8) - ((r
130U) >> 8) - ((b
50U) >> 8)); //between 0…255
*ptr++ = r;
*ptr++ = g;
*ptr++ = b;
does anybody know how to change this algorithm to the data becomes non-interlaced, or whatever the problem?

thanks a lot