原创 ATL 開發ActiveX控件之定時器使用

轉載自:http://www.evget.com/articles/evget_780.html在Window編程中,我們經常要依靠定時器來定時觸發某

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

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P 

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

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P 

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

                 CPhone 0x004AD480 3      videoio.cxx(466) PVidDev SetColourFormatConverter success for native YUV420P 

原创 一個開源的聲學回聲消除器

  前段時間,搞了一陣聲學回聲消除,非常鬱悶,因爲沒有成功,但可以說學到一點東西吧,至少理論上懂了一點。  爲什麼需要聲學回聲消除呢?在一般的VOIP軟件或視頻會議系統中,假設我們只有A和B兩個人在通話,首先,A的聲音傳給B,B然後用喇叭

原创 Demystifying Echo Cancellation: Part 2(回聲消除揭祕2)

 Demystifying Echo Cancellation: Part 2Building an echo canceller is only half the challenge. Mishaps can also occur du

原创 UDP穿越NAT原理(轉載)

P2P 之 UDP穿透NAT的原理與實現(附源代碼)原創:shootingstars參考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt論壇上經常有對P2P原理

原创 二叉樹結點定義

#ifndef TREENODE#define TREENODE// 表示二叉樹的一個結點template <typename T>class tnode{   public:  // tnode is a class implement

原创 SIP主要信令與擴展功能

SIP allows two end points to establish media sessions with each other. The main signaling functions of the protocol are

原创 ACTIVEX控件永久化的一些經驗

  最近,完成了一個和QQ一樣的能顯示動態表情的ACTIVEX控件,效果還不錯,和QQ的控件相比,也可以插入到RICHEDIT中,並且不閃爍(QQ的會閃爍),效率也比QQ的高。就拿QQ那個流淚的表情來說吧,同一張圖片,在我的電腦上,我的控

原创 插入排序

描述:遍歷向量,爲每個元素找到它應該在的位置,插入。template <typename T>void insertionSort(vector<T>& v){   int i, j, n = v.size();   T target; 

原创 Demystifying Echo Cancellation: Part 1(回聲消除揭祕1)

 Demystifying Echo Cancellation: Part 1Part 1 of this two-part series examines the basic causes of echo in a networking

原创 RichEdit中支持超鏈接的實現

  現在很多IM軟件的聊天對話框在接收到網站URL的時候,都能夠顯示成大家熟悉的藍色,鼠標移到鏈接上,還會出現手樣的鼠標指針,用戶點擊後就可以直接打開相應的URL,這對IM軟件確實很有用吧,這麼方便,實現起來難嗎?其實一點也不難,只要設置

原创 我的書架

 書名 作者 出版社 Windows核心編程 Jeffrey Richter 機械工業出版社C++ 沉思錄 Andrew Koenig Barbara Moo  人民郵電出版社 Windows網絡編程(第2版) Anthony Jones

原创 選擇排序

描述:從向量頭部開始,找出第一小的放到前面,第二小的放到第二個位置。。。。。。template <typename T>void selectionSort(vector<T>& v){   // index of smallest it