?? yuvrgb24.c
字號:
#include "config.h"#include "tmndec.h"#include "global.h"/* Data for ConvertYUVtoRGB*/#if (defined DISPLAY || defined WINDOWS)long int crv_tab[256];long int cbu_tab[256];long int cgu_tab[256];long int cgv_tab[256];long int tab_76309[256];void init_dither_tab(){ long int crv,cbu,cgu,cgv; int i; crv = 104597; cbu = 132201; /* fra matrise i global.h */ cgu = 25675; cgv = 53279; for (i = 0; i < 256; i++) { crv_tab[i] = (i-128) * crv; cbu_tab[i] = (i-128) * cbu; cgu_tab[i] = (i-128) * cgu; cgv_tab[i] = (i-128) * cgv; tab_76309[i] = 76309*(i-16); }} /********************************************************************** * * Name: ConvertYUVtoRGB * Description: Converts YUV image to RGB (packed mode) * * Input: pointer to source luma, Cr, Cb, destination, * image width and height * Returns: * Side effects: * * Date: 951208 Author: Karl.Lillevold@nta.no * ***********************************************************************/void ConvertYUVtoRGB(src0,src1,src2,dst_ori,width,height)unsigned char *src0, *src1, *src2;unsigned char *dst_ori;int width, height;{ extern long int crv_tab[]; extern long int cbu_tab[]; extern long int cgu_tab[]; extern long int cgv_tab[]; extern long int tab_76309[]; int y11,y21; int y12,y22; int y13,y23; int y14,y24; int u,v; int i,j; int c11, c21, c31, c41; int c12, c22, c32, c42; unsigned int DW; unsigned int *id1, *id2; unsigned char *py1,*py2,*pu,*pv; unsigned char *d1, *d2; d1 = dst_ori; d1 += width*height*3 - width*3; d2 = d1 - width*3; py1 = src0; pu = src1; pv = src2; py2 = py1 + width; id1 = (unsigned int *)d1; id2 = (unsigned int *)d2; for (j = 0; j < height; j += 2) { /* line j + 0 */ for (i = 0; i < width; i += 4) { u = *pu++; v = *pv++; c11 = crv_tab[v]; c21 = cgu_tab[u]; c31 = cgv_tab[v]; c41 = cbu_tab[u]; u = *pu++; v = *pv++; c12 = crv_tab[v]; c22 = cgu_tab[u]; c32 = cgv_tab[v]; c42 = cbu_tab[u]; y11 = tab_76309[*py1++]; /* (255/219)*65536 */ y12 = tab_76309[*py1++]; y13 = tab_76309[*py1++]; /* (255/219)*65536 */ y14 = tab_76309[*py1++]; y21 = tab_76309[*py2++]; y22 = tab_76309[*py2++]; y23 = tab_76309[*py2++]; y24 = tab_76309[*py2++]; /* RGBR*/ DW = ((clp[(y11 + c41)>>16])) | ((clp[(y11 - c21 - c31)>>16])<<8) | ((clp[(y11 + c11)>>16])<<16) | ((clp[(y12 + c41)>>16])<<24); *id1++ = DW; /* GBRG*/ DW = ((clp[(y12 - c21 - c31)>>16])) | ((clp[(y12 + c11)>>16])<<8) | ((clp[(y13 + c42)>>16])<<16) | ((clp[(y13 - c22 - c32)>>16])<<24); *id1++ = DW; /* BRGB*/ DW = ((clp[(y13 + c12)>>16])) | ((clp[(y14 + c42)>>16])<<8) | ((clp[(y14 - c22 - c32)>>16])<<16) | ((clp[(y14 + c12)>>16])<<24); *id1++ = DW; /* RGBR*/ DW = ((clp[(y21 + c41)>>16])) | ((clp[(y21 - c21 - c31)>>16])<<8) | ((clp[(y21 + c11)>>16])<<16) | ((clp[(y22 + c41)>>16])<<24); *id2++ = DW; /* GBRG*/ DW = ((clp[(y22 - c21 - c31)>>16])) | ((clp[(y22 + c11)>>16])<<8) | ((clp[(y23 + c42)>>16])<<16) | ((clp[(y23 - c22 - c32)>>16])<<24); *id2++ = DW; /* BRGB*/ DW = ((clp[(y23 + c12)>>16])) | ((clp[(y24 + c42)>>16])<<8) | ((clp[(y24 - c22 - c32)>>16])<<16) | ((clp[(y24 + c12)>>16])<<24); *id2++ = DW; } id1 -= (9 * width)>>2; id2 -= (9 * width)>>2; py1 += width; py2 += width; } } #endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -