Chinaunix首页 | 论坛 | 博客
  • 博客访问: 345867
  • 博文数量: 90
  • 博客积分: 2017
  • 博客等级: 大尉
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-19 08:10
文章分类

全部博文(90)

文章存档

2012年(4)

2011年(74)

2010年(11)

2009年(1)

分类: C/C++

2011-04-25 21:13:41

PJSIP简介,安装配置

C/C++之PJSIP 2010-04-14 16:24:34 阅读626 评论0   字号: 

PJSIP的实现是为了能在嵌入式设备上高效实现SIP/VOIP.

1.PJSIP库的主要特征:

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

阅读(4762) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~