自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 一个开源的声学回声消除器

  前段时间,搞了一阵声学回声消除,非常郁闷,因为没有成功,但可以说学到一点东西吧,至少理论上懂了一点。  为什么需要声学回声消除呢?在一般的VOIP软件或视频会议系统中,假设我们只有A和B两个人在通话,首先,A的声音传给B,B然后用喇叭放出来,而这时B的MIC呢则会采集到喇叭放出来的声音,然后传回给A,如果这个传输的过程中时延足够大,A就会听到一个和自己刚才说过的话一样的声音,这就是回声,声学回

2005-07-06 11:48:00 10507 6

原创 我的书架

 书名 作者 出版社 Windows核心编程 Jeffrey Richter 机械工业出版社C++ 沉思录 Andrew Koenig Barbara Moo  人民邮电出版社 Windows网络编程(第2版) Anthony Jones,Jim Ohlund  清华大学出版社 C++面向对象程序设计——使用STL编程 Nicholas J.De Lillo  清华大学出版社 COM原理与应用 潘

2005-07-04 11:45:00 2016

原创 基数排序

描述:将数依次按个位,十位,百位。。。排序// support function for radixSort()// distribute vector elements into one of 10 queues// using the digit corresponding to power//   power = 1    ==> 1s digit//   power = 10   ==>

2005-06-28 11:00:00 1240

原创 插入排序

描述:遍历向量,为每个元素找到它应该在的位置,插入。template void insertionSort(vector& v){   int i, j, n = v.size();   T target; // place v[i] into the sublist //   v[0] ... v[i-1], 1  // so it is in the correct position   fo

2005-06-28 10:51:00 1193

原创 选择排序

描述:从向量头部开始,找出第一小的放到前面,第二小的放到第二个位置。。。。。。template void selectionSort(vector& v){   // index of smallest item in each pass int smallIndex; // save the vector size in n int pass, j, n = v.size(); T temp; 

2005-06-28 10:47:00 1161

原创 二分搜索

template int binSearch(const T arr[], int first, int last, const T& target){ int mid;                     // index of the midpoint T midValue;             // object that is assigned arr[mid] int origL

2005-06-28 10:40:00 1302

原创 与二叉树有关的一些操作:先序,中序,后序,层次遍历,计算深度,叶结点数

//先序遍历template void preorderOutput(tnode *t, const string& separator = "  "){   // the recursive scan terminates on a empty subtree   if (t != NULL)   {      cout nodeValue        inorderOutput(t->lef

2005-06-23 11:08:00 2687

原创 二叉树结点定义

#ifndef TREENODE#define TREENODE// 表示二叉树的一个结点template class tnode{   public:  // tnode is a class implementation structure. making the  // data public simplifies building class functions  T nodeValue;

2005-06-23 10:56:00 2711

转载 Demystifying Echo Cancellation: Part 2(回声消除揭秘2)

 Demystifying Echo Cancellation: Part 2Building an echo canceller is only half the challenge. Mishaps can also occur during the implementation stage. Heres a look at some of the implementation challe

2005-05-16 15:15:00 2089

原创 ACTIVEX控件永久化的一些经验

  最近,完成了一个和QQ一样的能显示动态表情的ACTIVEX控件,效果还不错,和QQ的控件相比,也可以插入到RICHEDIT中,并且不闪烁(QQ的会闪烁),效率也比QQ的高。就拿QQ那个流泪的表情来说吧,同一张图片,在我的电脑上,我的控件能在RICHEDIT中插入49张,而QQ的插到30张CPU占用率就到100%了。当时觉得很高兴,但是也有不足,QQ的控件在RICHEDIT中可以实现复制粘贴,我

2005-03-26 14:07:00 1990 1

原创 RichEdit中支持超链接的实现

  现在很多IM软件的聊天对话框在接收到网站URL的时候,都能够显示成大家熟悉的蓝色,鼠标移到链接上,还会出现手样的鼠标指针,用户点击后就可以直接打开相应的URL,这对IM软件确实很有用吧,这么方便,实现起来难吗?其实一点也不难,只要设置让你的RICHEDIT支持链接,自动检测URL就行了,再实现一个对连接点击的响应函数就行了。总的来说就几行代码,看看吧。  我用一个对话框工程来说明一下吧。  首

2005-03-26 12:05:00 6872

转载 在ACTIVEX控件中实现菜单(转载)

2005-03-18 11:18:00 1392

转载 UDP穿越NAT原理(转载)

P2P 之 UDP穿透NAT的原理与实现(附源代码)原创:shootingstars参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt论坛上经常有对P2P原理的讨论,但是讨论归讨论,很少有实质的东西产生(源代码)。呵呵,在这里我就用自己实现的一个源代码来说明UDP穿越NAT的原理。首先先介绍一些基本概念:    NAT

2005-03-12 16:10:00 1360

原创 在ATL无窗口ACTIVEX控件中响应timer消息

  最近,在尝试着写一个能够显示静态和动态图片的ACTIVEX控件,就像QQ的一样,能插入到RICHEDIT控件中。由于只是在尝试,很多功能都没有实现,只实现显示。如果单单显示静态图片,是很简单的。但要是显示动态GIF图片,就有一定的难度,首先要分析图片的帧数,还要控件图片按顺序显示。如果写成控件,还要保证插入到RICHEDIT控件中还能动起来,就更有难度了,因为ATL在响应TIMER事件的时候有

2005-03-04 17:55:00 9445 3

原创 SIP:A Simple Session Establishment Example

Figure 2.1 shows the SIP message exchange between two SIP-enabled devices. The two devices could be SIP phones, hand-helds, palmtops, or cell phones. It is assumed that both devices are connected to a

2005-03-03 10:52:00 1458

原创 SIP主要信令与扩展功能

SIP allows two end points to establish media sessions with each other. The main signaling functions of the protocol are as follows:Location of an end point;Contacting an end point to determine willing

2005-03-03 10:17:00 1378

原创 OPENH323中呼叫建立过程的跟踪与分析(八)----非快速隧道方式之被叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:58:00 1971

原创 OPENH323中呼叫建立过程的跟踪与分析(七)----非快速隧道方式之主叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:57:00 1610

原创 OPENH323中呼叫建立过程的跟踪与分析(六)----快速隧道方式之被叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:53:00 1282

原创 OPENH323中呼叫建立过程的跟踪与分析(五)----快速隧道方式之主叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:51:00 1375

原创 OPENH323中呼叫建立过程的跟踪与分析(四)----快速启动方式之被叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:49:00 1578

原创 OPENH323中呼叫建立过程的跟踪与分析(三)----快速启动方式之主叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:47:00 4032

原创 OPENH323中呼叫建立过程的跟踪与分析(二)----默认方式之被叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:44:00 2020

原创 OPENH323中呼叫建立过程的跟踪与分析(一)----默认方式之主叫端

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P                 CPhone 0x004AD480 4     h323caps.cxx(1772) H323 FindCapability: "

2005-02-23 18:42:00 2131 1

原创 ATL 开发ActiveX控件之定时器使用

转载自:http://www.evget.com/articles/evget_780.html在Window编程中,我们经常要依靠定时器来定时触发某些代码的执行。但在ATL 的ActiveX 编程中,定时器的使用受到了一定限制,下面,我就根据开发经验谈谈如何在ATL 的 ActiveX编程中使用定时器这一资源。首先,为了优化的性能,当前ActiveX 控件 分两种有窗口和无窗口控件。在有窗口控件

2005-02-23 18:39:00 3626

原创 一个简单的能显示动态图片的类(一)

使用MS的GDI+可以大大的简化图形程序的开发。在VC6中,使用GDI+需要把GDI+头文件,LIB文件,和GDIPLUS.DLL文件,把头文件复制到VC的INCLUDE目录下,把LIB文件复制到VC的LIB目录下,然后再把GDIPLUS.DLL复制到系统目录下(XPSP2和2003已经自带了,不用复制),在代码中使用GDI+前,应该包含头文件,链接LIB文件,一般在MFC工程的StdAfx.h中

2005-02-22 16:05:00 4372 1

转载 构件技术的发展------互联网实验室(2004-2-20 9:48:00

一、构件技术的历史渊源  1968年NATO软件工程会议,Mcllroy在提交会议的论文《大量生产的软件构件》中,提出了“软件组装生产线”的思想。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式生产软件,成为软件开发人员长期的梦想。软件复用是指重复使用“为了复用目的而设计的软件”的过程。就软件开发而言,软件复用包括:早期的函数复用、面向对象言语 中的类的复用,以及互联网

2005-02-22 11:26:00 1749

转载 软件构件技术概述-----作者未知

软件业是目前最有发展前途的产业,其营业额均以每年20%的速度递增,预计到2000年,年销售额将达9000亿美元,软件业将成为世界第一大产业。   中国科学院软件所仲萃豪研究员特别针对软件业中构件技术的应用软件开发做一详细论述,其中仲萃豪教授着重强调的是应用软件开发模型和方法。   软件分为系统软件、中间件、应用软件和智能软件四种。应用软件开发经历了几个重要阶段,今天,集"面向对象"之大成演

2005-02-22 11:24:00 1342

转载 面向构件的软件体系------互联网实验室(2004-2-20 9:56:00)

——软件业大规模敏捷定制时代的到来一、软件业呼唤大规模敏捷定制时代的到来19世纪发生在制造业的各国的工业革命,通过标准化的生产形成社会化的分工,促使制造业从手工作坊走向了社会化大生产的时代;社会化大生产极大的丰富了商品的供应,降低了成本,由此带来了人类文明的一次飞跃!随着全社会生产水平的提升,标准化的通用型产品越来越无法满足个性化需求,人们期望能快速便捷的得到“符合自己品味”的商品,正

2005-02-22 11:20:00 1767

转载 基于构件的软件开发的发展方向------清华大学 谢晓芹 王克宏(2004-2-20 10:15:00)

构件技术应运而生在信息时代,新的技术革命正在改变我们日常生活的面貌,而这场技术革命的核心是计算机软件系统。在面向对象技术给解决软件危机带来曙光之时, 分布式网络计算的巨大压力又给软件开发提出了许多新的难题,使软件开发仍处于高风险状态。新的分布式网络计算要求软件实现跨空间、跨时间、跨设备、跨用户的共享,导致软件在规模、复杂度、功能上的极大增长,迫使软件要向异构协同工作

2005-02-22 11:02:00 1459

转载 构件技术“应用”先行------清华大学 谢晓芹 王克宏(2004-2-20 10:17:00)

以面向对象为基础而发展起来的软件构件技术,摆脱了面向对象的理论束缚,目前理论上还未完善,但实际应用却有较大进展。本文基于软件构件技术,从认知体系出发,提出了应用软件开发模型和方法。文中还讨论了构件的定义、分类、支持语言和环境、技术特征以及实际应用效果。 原则   软件开发是一门综合性学科,它包括哲学、基础科学、技术科学、工程管理四个知识层次。哲学决定着整个学科建立的指导思想、认识论和世界观

2005-02-22 11:00:00 2191

原创 一个通用链表类

链表是必不可少的数据结构,很多运行时库都提供了现成的链表类。当然我们也可以自己实现它。下面就是一个例子。类的定义如下://****************************************************************************//// CLASS COBLIST DEFINATION////******************************

2005-02-17 11:21:00 2204 1

原创 如何打开一个系统提供的ABOUT对话框

在我们和应用程序中,我们经常会提供一个ABOUT对话框,提供一些关于我们的程序的一些信息给用户,我们可以自己定义一个ABOUT对话框,但有时我们也可以偷偷懒,因为系统也给我们提供了一个,我们只要调用相就的API,再加上一些我们程序的信息就可以了。代码非常简单void CmdAbout(void){ TCHAR szVersion[MAX_PATH + 1]; ZeroMemory(szVersio

2005-02-16 18:25:00 2093

原创 在RichEdit控件中插入OLE对象(ActiveX控件)

  有时候,我们需要在一个容器中插入各种不同的对象,比如,QQ聊天对话框里可以插入各种静态和动态的图片,甚至还可以插入flash文件,这些都是通过OLE技术来实现的。OLE技术是基于COM的,而COM又是非常复杂的东西,想要学习COM得花很多的时间,《COM技术内幕》,《COM原理和应用》,《INSIDE OLE 2》都是非常好的学习COM和OLE的书,但要把这些书啃完,弄懂,几个月甚至半年都过去

2005-02-01 12:44:00 7601 3

原创 一个下载文件的线程类

  有时候,我们需要通过INTERNET下载文件,在文件下载的过程中,我们还需要处理其他事情,为此,我们需要把文件下载的工作放到一个线程中来实现。为了体现面向对象程序设计的封装性,我们最好把线程封装为一个类,以后我们每需要一个这样的线程,我们只要实例化该类的一个对象就可以了。如果自己实现这样的类,应该有一定的难度,所幸的事,MFC为我们提供了这样的一个基类,CWinThread类,我们只要以它为基

2005-02-01 11:10:00 1385

原创 如何打开保存路径选择对话框

  有时我们的应用程序需要保存一些文件,并且要提供一个接口供用户来选择保存到哪,一般是用CFileDialog类来实现,但用这个类需要用户在保存前填上一个文件名,但是,有的时候我们已经知道文件名了,只需要用户指定一个路径来保存而已,这时我们可以打开一个路径选择对话框来供用户选择路径,如下图所示,用户点击浏览按钮,就弹出一个对话框,让用户选择文件的保存目录。这实现起来也不难,只要几行代码就可以实现了

2005-02-01 10:07:00 7528

原创 WINDOWS下如何提高PWLIB的视频捕捉速度

PWLIB版本:1.6.6OPENH323版本:1.13.5  在WINDOWS平台下,为了保证稳定性,PWLIB库的视频捕捉是采用的是WINDOWS的VFW(VIDEO FOR WINDOWS)API来实现的,而且,默认情况下,库的编译设置是采用停等模式来捕捉视频,为了提高捕捉速度,我们应该采用流模式来进行捕捉,如何进行修改呢?  首先,我们应该把捕捉模式设置为流模式,为此我们要把pwlib/s

2005-01-31 18:42:00 1413

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除