资源简介
C++视频聊天,MFC程序,有运行文件和说明,代码文件,齐全。
代码片段和文件信息
//Download by http://www.NewXing.com
////////////////////////////////////////////////////////////////////////////
//
//
// Project : VideoNet version 1.1.
// Description : Peer to Peer Video Conferencing over the LAN.
// Author : Nagareshwar Y Talekar ( nsry2002@yahoo.co.in)
// Date : 15-6-2004.
//
//
// File description :
// Name : convert.cpp
// Details : Conversion routine from RGB24 to YUV420 & YUV420 to RGB24.
//
/////////////////////////////////////////////////////////////////////////////
#include “convert.h“
// Conversion from RGB to YUV420
int RGB2YUV_YR[256] RGB2YUV_YG[256] RGB2YUV_YB[256];
int RGB2YUV_UR[256] RGB2YUV_UG[256] RGB2YUV_UBVR[256];
int RGB2YUV_VG[256] RGB2YUV_VB[256];
// Conversion from YUV420 to RGB24
static long int crv_tab[256];
static long int cbu_tab[256];
static long int cgu_tab[256];
static long int cgv_tab[256];
static long int tab_76309[256];
static unsigned char clp[1024]; //for clip in CCIR601
//
// Table used for RGB to YUV420 conversion
//
void InitLookupTable()
{
int i;
for (i = 0; i < 256; i++) RGB2YUV_YR[i] = (float)65.481 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_YG[i] = (float)128.553 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_YB[i] = (float)24.966 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_UR[i] = (float)37.797 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_UG[i] = (float)74.203 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_VG[i] = (float)93.786 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_VB[i] = (float)18.214 * (i<<8);
for (i = 0; i < 256; i++) RGB2YUV_UBVR[i] = (float)112 * (i<<8);
}
//
// Convert from RGB24 to YUV420
//
int ConvertRGB2YUV(int wint hunsigned char *bmpunsigned int *yuv)
{
unsigned int *u*v*y*uu*vv;
unsigned int *pu1*pu2*pu3*pu4;
unsigned int *pv1*pv2*pv3*pv4;
unsigned char *r*g*b;
int ij;
uu=new unsigned int[w*h];
vv=new unsigned int[w*h];
if(uu==NULL || vv==NULL)
return 0;
y=yuv;
u=uu;
v=vv;
// Get rgb pointers from bmp image data....
r=bmp;
g=bmp+1;
b=bmp+2;
//Get YUV values for rgb values...
for(i=0;i {
for(j=0;j {
*y++=( RGB2YUV_YR[*r] +RGB2YUV_YG[*g]+RGB2YUV_YB[*b]+1048576)>>16;
*u++=(-RGB2YUV_UR[*r] -RGB2YUV_UG[*g]+RGB2YUV_UBVR[*b]+8388608)>>16;
*v++=( RGB2YUV_UBVR[*r]-RGB2YUV_VG[*g]-RGB2YUV_VB[*b]+8388608)>>16;
r+=3;
g+=3;
b+=3;
}
}
// Now sample the U & V to obtain YUV 4:2:0 format
// Sampling mechanism...
/* @ -> Y
# -> U or V
@ @ @ @
# #
@ @ @ @
@ @ @ @
# #
@ @ @ @
*/
// Get the right pointers...
u=yuv+w*h;
v=u+(w*h)/4;
// For U
pu1=uu;
pu2=pu1+1;
pu3=pu1+w;
pu4=pu3+1;
// For V
pv1=vv;
pv2=pv1+1;
pv3=pv1+w;
pv4=pv3+1;
// Do sampling....
for(i=0;i {
for(j=0;j {
*u++=(*pu1+*pu2+*pu3+*pu4)>>2;
*v++
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-30 10:57 TestVideo\
目录 0 2018-03-30 10:58 TestVideo\exe程序\
文件 114688 2009-06-23 09:06 TestVideo\exe程序\TestVideo.exe
文件 0 2018-03-31 19:47 TestVideo\exe程序\decoder.log
文件 1107200 2009-01-15 18:04 TestVideo\exe程序\mfc80.dll
文件 632064 2009-01-15 18:04 TestVideo\exe程序\msvcr80.dll
文件 96 2009-06-23 09:13 TestVideo\exe程序\说明.txt
目录 0 2009-06-23 09:14 TestVideo\源代码\
目录 0 2009-06-23 09:14 TestVideo\源代码\Decoder\
文件 7734 2012-11-25 11:10 TestVideo\源代码\Decoder\DGlobal.cpp
文件 3738 2012-11-25 11:10 TestVideo\源代码\Decoder\DGlobal.h
文件 5312 2009-06-17 11:12 TestVideo\源代码\Decoder\Decoder.vcproj
文件 1381 2009-06-23 09:13 TestVideo\源代码\Decoder\Decoder.vcproj.LIUBO.刘波.user
文件 6056 2012-11-25 11:10 TestVideo\源代码\Decoder\GetBits.cpp
文件 1665 2012-11-25 11:10 TestVideo\源代码\Decoder\GetBits.h
文件 10594 2012-11-25 11:10 TestVideo\源代码\Decoder\GetBlk.cpp
文件 1767 2012-11-25 11:10 TestVideo\源代码\Decoder\GetBlk.h
文件 5489 2012-11-25 11:10 TestVideo\源代码\Decoder\GetHdr.cpp
文件 1566 2012-11-25 11:10 TestVideo\源代码\Decoder\GetHdr.h
文件 32565 2012-11-25 11:10 TestVideo\源代码\Decoder\GetPic.cpp
文件 2296 2012-11-25 11:10 TestVideo\源代码\Decoder\GetPic.h
文件 11223 2012-11-25 11:10 TestVideo\源代码\Decoder\GetVlc.cpp
文件 1741 2012-11-25 11:10 TestVideo\源代码\Decoder\GetVlc.h
文件 6845 2012-11-25 11:10 TestVideo\源代码\Decoder\Idct.cpp
文件 1963 2012-11-25 11:10 TestVideo\源代码\Decoder\Idct.h
文件 4458 2012-11-25 11:10 TestVideo\源代码\Decoder\Idctref.cpp
文件 1475 2012-11-25 11:10 TestVideo\源代码\Decoder\Idctref.h
文件 4354 2012-11-25 11:10 TestVideo\源代码\Decoder\Indices.cpp
文件 1821 2012-11-25 11:10 TestVideo\源代码\Decoder\Indices.h
文件 22253 2012-11-25 11:10 TestVideo\源代码\Decoder\Recon.cpp
文件 2798 2012-11-25 11:10 TestVideo\源代码\Decoder\Recon.h
............此处省略70个文件信息
- 上一篇:Pt100温度报警 电路图程序
- 下一篇:C++基础与提高-王桂林(第二版)
相关资源
- C++基础与提高-王桂林(第二版)
- MFC_学生管理系统104735
- 数据结构与程序设计--C++描述影印版
- C++ 药品管理系统
- c++和sql的客房管理系统
- MFC制作的风车可以控制叶片大小和旋
- VC++实现WORD事件处理与报表输出功能
- VC++实现的车牌定位与识别系统
- MFC画图,温度和湿度曲线含源码
- MFC+SQL实现资源管理系统
- RSA加密算法用MFC实现
- DES原理及实现步骤,以及VC++关于DES加
- 九宫格程序c++人工智能
- 基于MFC的计算器
- MFC入门绘图程序,可以实现Window环境
- 多人聊天室 C++
- GDI+教程C++中文版.pdf
- c++图书管理系统带课程设计论文
- vc++图像处理程序设计104124
- VC++和OpenGL读取3DS文件并显示的完整源
- 考勤管理系统 mfc C++课程设计(附数据
- 人事管理系统 mfc C++课程设计(附数据
- vc计算器源代码支持各种进制正余弦的
- VC++ 实现Diffie-Hellman密钥交换算法
- C++实现用Hopfiled网络解决TSP问题
- CURL C++封装
- 简单的学生管理系统源码MFC
- C++程序设计_打飞碟
- DH加密C++演示
- Effective Modern C++.mobi
评论
共有 条评论