📄 var.c
字号:
// DENGZOUPING
typedef unsigned short word_t;
// replace orig "WORD" by "word_t"
//
void YUV411toRGB555()
//convert YUV411 in YUVBuffer2 to RGB555 in DecodeDest
{
word_t yPos=0,uvPos=0;
static int y,u,v,r,g,b;
int i , j ;
int DecodeImageH = 144 ;
int DecodeImageW = 176 ;
unsigned char * yrec , * urec , * vrec ;
word_t * DecodeDest ;
yrec = InternalDecoderOutputYUV ;
urec = InternalDecoderOutputYUV + lsize;
vrec = urec + lsize/4L;
DecodeDest = ( word_t * ) InternalDecoderOutputRGB ;
for(int i=0;i<DecodeImageH;i+=2)
{
for(int j=0;j<DecodeImageW;j+=2) //4 pixels every time
{
//1
yPos = i * 176 + j ;
uvPos = i * 44 + j/2 ;
y = yrec[yPos];
u = urec[uvPos] - 0x7f;
v = vrec[uvPos] - 0x7f;
u = (u*1865970)>>20; //226.0/127.0
v = (v*1477914)>>20; //179.0/127.0;
r = v+y;
b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
if(r<0) r=0;
if(r>255) r=255;
if(g<0) g=0;
if(g>255) g=255;
if(b<0) b=0;
if(b>255) b=255;
DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));
//2
yPos ++ ;
y = yrec[yPos++];
r = v+y;
b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
if(r<0) r=0;
if(r>255) r=255;
if(g<0) g=0;
if(g>255) g=255;
if(b<0) b=0;
if(b>255) b=255;
DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));
//3
yPos += 175 ;
y = yrec[yPos++];
r = v+y;
b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
if(r<0) r=0;
if(r>255) r=255;
if(g<0) g=0;
if(g>255) g=255;
if(b<0) b=0;
if(b>255) b=255;
DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));
//4
yPos ++ ;
y = yrec[yPos];
r = v+y;
b = u+y;
//g = 1.706*y-0.509*r-0.194*b;
g = ((y*1788871)>>20) - ((r*533725)>>20) - ((b*203424)>>20);
if(r<0) r=0;
if(r>255) r=255;
if(g<0) g=0;
if(g>255) g=255;
if(b<0) b=0;
if(b>255) b=255;
DecodeDest[yPos] = (word_t)((b>>3)+((g>>3)<<5)+((r>>3)<<10));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -