分类: C/C++
2011-04-25 21:13:41
C/C++之PJSIP 2010-04-14 16:24:34 阅读626 评论0 字号:大中小
PJSIP的实现是为了能在嵌入式设备上高效实现SIP/VOIP.
1).极具移植性.(Extremely portable)
当前可支持平台包括:
* Win32/x86 (Win95/98/ME, NT/2000/XP/2003, mingw).
* arm, WinCE and Windows Mobile.
* Linux/x86, (user mode and as kernel module(!)).
* Linux/alpha
* Solaris/ultra.
* MacOS X/powerpc
* RTEMS (x86 and powerpc).
* Symbian OS
2).非常小的足印.(Very small footprint)
官方宣称编译后的库<150Kb,我在PC上编译后加上strip后大概173Kb,这对于嵌入
式设备,是个好消息
3).高性能.(High performance)
这点我们后面可以看看是否如作者宣称的
2. PJSIP的组成.
其实说是PJSIP不是特别贴切,这个库实际上是几个部分组成的.
1).PJSIP - Open Source SIP Stack[开源的SIP协议栈]
2).PJMEDIA - Open Source Media Stack[开源的媒体栈]
3).PJNATH - Open Source NAT Traversal Helper Library[开源的NAT-T辅助库]
4).PJLIB-UTIL - Auxiliary Library[辅助工具库]
5).PJLIB - Ultra Portable Base Framework Library[基础框架库]
PJLIB-UTIL辅助工具库:加解密MD5和CRC32的算法
PJNATH开源的NAT库包含ICE打洞
PJSUA-LIB库:最顶层的SIP库支持VOIP
PJMEDIA库:最顶层的支持视频的库
3. PJLIB基础框架库提供的功能:
1).内存的处理、数据的存储
.数据结构的(hash表、link表、二叉树、等)
.caching和pool;缓冲池和内存池
2).OS抽象
.线程、互斥、临界区、锁对象、事件对象
.定时器
.pj_str_t字符串
3).操作系统级别的函数抽象
.socket的抽象(tcp/udp)
.文件的读写
4).使用前的初始化,使用后的清理
4.PJSIP的安装和配置:
1.安装和编辑pjsip库:
A.将pjproject-1.5.zip和DirectX-Lib.rar解压到当前目录的pjlib路径下;
B.查看pjlib\pjproject-1.5\pjlib\include\pj下面是否有config_site.h,如果没有建一个空文件
C.将DirectX的x86的lib库拷贝到C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib
D.在环境变量中设置DXSDK_DIR=direx中的include目录
E.首先编译pjlib\pjproject-1.5\pjproject-vs8.sln [win32]
F.然后打开工程开始编译
2.脱离pjsip环境的工程的配置
需要头文件的可以加入
$(SolutionDir)pjlib\pjproject-1.5\pjlib\include
$(SolutionDir)pjlib\pjproject-1.5\pjlib-util\include
$(SolutionDir)pjlib\pjproject-1.5\pjnath\include
$(SolutionDir)pjlib\pjproject-1.5\pjsip\include
$(SolutionDir)pjlib\pjproject-1.5\pjmedia\include
如果需要lib库文件的加入
$(SolutionDir)pjlib\pjproject-1.5\pjlib\lib
$(SolutionDir)pjlib\pjproject-1.5\pjlib-util\lib
$(SolutionDir)pjlib\pjproject-1.5\pjnath\lib
$(SolutionDir)pjlib\pjproject-1.5\pjsip\lib
$(SolutionDir)pjlib\pjproject-1.5\pjmedia\lib
$(SolutionDir)pjlib\pjproject-1.5\lib
我的程序所依赖PJLIB的库有:
pjlib-i386-Win32-vc8-Debug.lib
pjlib-util-i386-Win32-vc8-Debug.lib
pjnath-i386-Win32-vc8-Debug.lib
pjsip-core-i386-Win32-vc8-Debug.lib
pjsip-simple-i386-Win32-vc8-Debug.lib
pjsip-ua-i386-Win32-vc8-Debug.lib
pjsua-lib-i386-Win32-vc8-Debug.lib
pjmedia-audiodev-i386-Win32-vc8-Debug.lib
pjmedia-codec-i386-Win32-vc8-Debug.lib
pjmedia-i386-Win32-vc8-Debug.lib
libpjproject-i386-Win32-vc8-Debug.lib