资源简介
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++基础与提高-王桂林(第二版)
相关资源
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
评论
共有 条评论