⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuvrgb24.c

📁 H.263编解码源代码 目录中存放的是H.263视频编码器和解码器的程序代码。 播放工具 目录中存放的是用于播放YUV格式视频的工具。 压缩视频 目录中存放的是笔者已压缩好了的263视频数据流文件
💻 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -