📄 ycbcr.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct YCbCr_Pixel_t{
unsigned char Cr;
unsigned char Cb;
unsigned char Y;
unsigned char dummy;
}YCBCR_PIXEL;
typedef struct RGB_Pixel_t{
unsigned char dummy;
unsigned char R;
unsigned char G;
unsigned char B;
}RGB_PIXEL;
#define PALETTE_MAX 256
int main(void)
{
int i,j,dataLen;
FILE *fp;
char fileName[256];
YCBCR_PIXEL YCbCrTbl[PALETTE_MAX];
RGB_PIXEL RGBTbl[PALETTE_MAX];
dataLen = PALETTE_MAX;
//Clean destination
memset((void *)&YCbCrTbl, 0x00, sizeof(YCbCrTbl));
//Creating RGB table
for(i=0;i<PALETTE_MAX/8/4;i++){
for(j=0;j<4*8;j++){
RGBTbl[(i*4*8)+j].R = (i*0x20)%PALETTE_MAX;
}
}
for(i=0;i<PALETTE_MAX/4;i++){
for(j=0;j<4;j++){
RGBTbl[(i*4)+j].G = (i*0x20)%PALETTE_MAX;
}
}
for(i=0;i<PALETTE_MAX;i++){
RGBTbl[i].B = (i*0x40)%PALETTE_MAX;
}
//Creating YCbCr table
for(i=0;i<PALETTE_MAX;i++){
double Y, Cb, Cr, R, G, B;
R=(double)RGBTbl[i].R;
G=(double)RGBTbl[i].G;
B=(double)RGBTbl[i].B;
Y=0.257*R+0.504*G+0.098*B+16;
Cb=-0.148*R-0.291*G+0.439*B+128;
Cr=0.439*R-0.368*G-0.071*B+128;
YCbCrTbl[i].Y = (unsigned char)Y;
YCbCrTbl[i].Cb = (unsigned char)Cb;
YCbCrTbl[i].Cr = (unsigned char)Cr;
}
/*Enter output profile*/
printf("Enter output file name:");
scanf("%s", fileName);
/*Output file operation*/
fp = fopen(fileName, "wb+");
if(fp == NULL) goto ABNORMAL_TERMINATE_WITHOUT_FILE_CLOSE;
fprintf(fp, "/* \n");
fprintf(fp, "** FILE : %s \n", fileName);
fprintf(fp, "** GENERATOR : %s build at %s %s \n", __FILE__, __DATE__, __TIME__);
fprintf(fp, "** AUTHOR : Louis Lee \n");
fprintf(fp, "*/ \n");
fprintf(fp, "const char stubData[]={");
fprintf(fp, "\n {");
i=0;
while(i<dataLen){
if(!(i % 16)){
fprintf(fp, "\n ");
}
fprintf(fp, "0x%08x", (unsigned int)*(unsigned int *)(&YCbCrTbl[i]));
if(i != dataLen - 1){
fprintf(fp, ",");
}
fprintf(fp, " ");
i++;
};
fprintf(fp, "}, %d\n", PALETTE_MAX);
fprintf(fp, "};\n");
printf("\nFile %s generated..\n", fileName);
fclose(fp);
ABNORMAL_TERMINATE_WITHOUT_FILE_CLOSE:
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -