QuteCom手记
文章平均质量分 80
Vinc
溪云初起日沉阁,山雨欲来风满楼。
展开
-
SIP协议中的STUN是什么
time: 2010-12-4 10:4:58STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。该协议由RFC 3489定义。一旦客户端得知了Internet端的UDP端口,通信就可以开始了。如果NAT是完全圆锥型的,那原创 2010-12-22 14:05:00 · 1856 阅读 · 0 评论 -
qutecom笔记-thread类
Thread以组合方式扩展了boost::thread事件队列的实现和事件传递部分的代码很巧妙。扩展了以下功能:1、线程消息队列2、线程删除自身3、sleep1、线程消息队列的实现方式:void Thread::runEvents() { RecursiveMutex::ScopedLock scopedLock(_threadMutex); while (true) { while (!_eventQueue.empty()) {//处理所有入栈事件 IThreadEvent *event = _e原创 2011-03-30 10:50:00 · 850 阅读 · 0 评论 -
qutecom笔记-模型-PhoneCall对象
PhoneCall是封装了一个电话的状态和行为的模型类。是一个电话的核心PhoneCall的核心功能有两个,一个是记录电话状态,并提供一个观察者提供状态变化时的信号stateChangedEvent(用此实现观察者模式)。另一个是通过调用IPhoneLine的接口实现accept(),resume(),hold(),close()四个主动的动作。一、主动的动作先看四个动作的实现,为方便起见,用P代表视图,C代表控制,M表示模型。前后表示执行前后实例在哪个部分内。注意上下文的切换。这4个函数的调用链如下:re原创 2011-03-31 14:57:00 · 1030 阅读 · 0 评论 -
QuteCom手记:sip简介&SIP:INVITE消息
参考《sip中文参考手册.pdf》已经放在在csdn的资源里 该协议的实现在exosip和osip2两个工程里。phapi调用了exosip的接口 SIP:会话控制协议 1.1简介作用:1、根据SIP帐号定位用户(IP)。2、商讨会话(语音通话,视频连接之类)的参数(语音编码之类)。3、建立、终止回话。4、其他没有在qutecom中用到的功能不原创 2011-06-27 22:35:00 · 5780 阅读 · 0 评论 -
QuteCom手记:exosip初始化和构建INVITE请求
@1、exosip初始化qutecom/wifo/phapi/phapi.c fun:owplInit()Line:291 eXosip_set_user_agent(ua);设置SIP包头域User-Agent="qutecom/rev-335d495adbc1-trunk",即SIP客户端名称。return_code = eXosip_init(0,0,udpPort,tcpPort,tlsP原创 2011-07-01 17:33:00 · 7218 阅读 · 0 评论 -
Osip2和eXosip协议栈的简析(转)
原文:http://www.chinaitpower.com/2005September/2005-09-13/200211.html作者:未知-----------------------------------------------------------------------------------最近在整理学习qutecom的代码,这篇文章是从网上找到的。一直没有找到作者的名字,如有朋转载 2011-07-01 14:28:00 · 1120 阅读 · 0 评论 -
QuteCom手记:使用Event类实现观察者模式
Event类的定义在qutecom\libs\owutil\util\event.h /** * Connects a slot to this signal (=event). * * Provides unicity when conne原创 2011-07-05 23:02:20 · 714 阅读 · 0 评论 -
QuteCom手记:Phapi/exosip事件①拨号INVITE
@1、电话状态变化和电话事件传递先看一下phapi的电话状态变化图,该图在phapi-old.h中可以找到/** * @defgroup phAPI Phone API * @{ * * From the perspecitve of th原创 2011-07-04 20:15:20 · 7098 阅读 · 0 评论 -
QuteCom手记:phapi发送和接收音频数据的流程(ortp & portaudio)
phapi发送和接收音频数据的流程简介。通过ortp库(完整的源代码在ortp工程中)实现。oRTP协议将在另外一篇中介绍,这里只要知道它是用来发送和接收媒体流(音频和视频)的协议。本篇只记录使用ortp发送、接收音频数据的流程。@1 phapi使用ortp的简单流程:----------------------------------------------- $1、初始化库在整个程序的生原创 2011-06-28 17:11:00 · 3291 阅读 · 0 评论 -
从Qutecom中剥离下来改写成静态库的cowutil的测试代码(一)
一、LOGGER二、Thread三、Event四、Date五、Time.h的代码 pragma once#include "cowutil/thread/thread.h"#include "cowutil/include/event.h"#include "string"using std::string;//cowutil threadclass TestThread : public Thread{public: TestThread(); ~TestThr原创 2011-01-18 18:07:00 · 720 阅读 · 0 评论 -
Boost Thread编程指南
原文http://blog.163.com/chuan_zheng/blog/static/856478720071485047374/C++标准库没有涉及线程,在C++中,虽然不可能写出标准兼容的多线程程序,程序员可以使用特定操作系统提供的线程库来写出多线程程序来。可是,这至少导致两个突出的问题:操作系统普遍提供的是C库,在C++中使用要更小心,每个操作系统都有自己的一套支持多线程的库;另外,代码不标准,不可移植。 Boost.Threads 可以解决这些问题。创建线程boost::thread 类描述线转载 2011-01-14 15:17:00 · 5063 阅读 · 0 评论 -
Qutecom手记:配置QuteCom开发环境
<br />time: 2010-12-11 9:48:31<br /><-------主题:oRTP文档地址-------><br />http://www.antisip.com/doc/ortp/<br />time: 2010-12-11 9:54:27<br /><-------主题:PortAudio输入输出回调-------><br />ph_pa_ocallback填充输出缓冲区的回调(SPK)<br />ph_pa_icallback填充输入缓冲区的回调(MIC)<br />time: 2原创 2010-12-22 14:12:00 · 807 阅读 · 0 评论 -
WAVE 文件格式
time: 2010-12-7 13:43:29WAVE 文件格式简介 WAV文件格式的应用是非常广泛的。 这里首先值得一提的是,我们在普通的电脑上想得到高品质的wav文件并不容易,这是因为录制音频文件的品质不光取决于下面的参数设定,尤为重要的是要具备非常棒的硬件设备(如:专业级的声卡、品质有保证的麦克风等)。当然对我们一般的爱好者来说不必花大把的银子去追求这些,除非你是个“高烧”友,呵呵! Wave文件使用三个参数来表示声音 ,它们是:声道数、采样位数和采样频率。 采样位数:即采样值或取样值(就原创 2010-12-22 14:08:00 · 1092 阅读 · 0 评论 -
读取wav文件头,获取文件详细信息
HMMIO GetWavInfo(char* pWavFileName,WAVEFORMATEX* pWavFmt,DWORD* pDataLen){ //读取wav文件头,获取文件详细信息 DWORD dwFmtSize; // “fmt”数据块的大小 DWORD dwDataSize; // “data”数据块的大小 WAVEFORMAT *pFormat = NULL; // “fmt”数据块的地址 HPSTR lpData = NULL; // “data”数据块的地址 // 获取原创 2010-12-22 14:09:00 · 5446 阅读 · 0 评论 -
QuteCom手记:phapi的声音驱动
phapi的声音驱动ph_audio_driver是一系列保存在结构体中的函数指针,这些函数定义了对音频流操作的标准接口。phapi通过这些标准的接口从麦克风中读取数据以及写入数据到喇叭原创 2010-12-22 14:15:00 · 823 阅读 · 0 评论 -
mix16
//http://blog.csdn.net/shatty/archive/2005/12/09/548289.aspxSHORT Mix16(SHORT sample1,SHORT sample2){ int value; if ((sample1转载 2010-12-22 14:17:00 · 729 阅读 · 0 评论 -
DTX VAD CNG DTMF
time: 2010-12-3 15:58:45DTX: 不连续发射(Discontinuous Transmission )在语音间歇期关闭发射,仅发射静音指示帧,接收端码变换器产生舒适噪声 好像由一个话音激活检测的模块实现的。time: 2010-12-3 16:0:33VAD: Voice Activity Detection 语音行为检测语音行为检测(VAD)是一种当被在语音端口或拨号对等体上被开启时,只有可以听见的语音能够被传输的功能。当 VAD 被开启时,语音的质量的级别会被稍微降低,但此种连接原创 2010-12-22 14:04:00 · 3887 阅读 · 0 评论 -
20101206
time: 2010-12-6 9:56:57ph_audio_rec_cbk:如需要记录到文件则record_mic_resample_stream,apply half-duples SPK driven attenuator,if (mode = SPK has priority) and SPK is active, attenuate(衰减,貌似是用于去除噪音) MICtime: 2010-12-6 10:2:13ph_audio_rec_cbk:cancel acoustic echo,去除回声原创 2010-12-22 14:07:00 · 635 阅读 · 0 评论 -
LameWrapper的头文件中添加了bool的定义
time: 2010-12-13 10:14:0#ifndef __cplusplus#define true 1#define false 0typedef int bool;#endif原创 2010-12-22 14:14:00 · 612 阅读 · 0 评论 -
谈谈RTP传输中的负载类型和时间戳(转)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/350142 最近被RTP的负载类型和时间戳搞郁闷了,一个问题调试了近一周,终于圆满解决,回头看看,发现其实主要原因还是自己没有真正地搞清楚RTP协议中负载类型和时间戳的含义。虽然做RTP传输,有着Jrtplib和Ortp这两个强大的库支持,一个是c++接口,一个是c语言接口,各有各的特点,各有各的应用环境,但是仅仅有库就能转载 2011-01-07 17:27:00 · 621 阅读 · 0 评论 -
QuteCom手记:Phapi/exosip事件②INVITE的响应
对于INVITE的响应。原创 2011-07-06 17:31:21 · 1697 阅读 · 0 评论