Chinaunix首页 | 论坛 | 博客
  • 博客访问: 513049
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: 系统运维

2010-08-03 14:07:10

Linphone虽然是用C写的,但是还是有一些面向对象的概念在里面。

在sal.h里定义了SalOp的类型,前置声明来推迟实现。SalOpBase可以看做SalOp的基类。一个具体的SalOp的实现依赖于使用的协议。
在sal_eXosip2.h里就是针对sip的eXosip协议栈来实现SalOp。sal_eXosip2.c里实现的是一个会话的逻辑。当然这些应该是不同的协议有共性的东西,至于放在这里的考虑以及有没有更好的方法,以后再讨论。

Linphone的SDP交互机制很简单,只是检查stream type(audio, video, other)和proto(Unknown, rtp/avp, rtp/savp)组成的相应的key。当它提供一个offer的时候,它在接下来收到的answer里找到对于这个key的最佳匹配,只是比较mime-type和clock rake;同样当它需要对收到的offer给出answer的时候,它也不会理睬这个offer里的其他attribute。Linphone只附加检查了当格式为H264时候的fmtp。

Linphone的SDP生命周期也是和一个call中的invite行为绑定的,也就是说每次re-invite的时候,都会删除目前的SDP而重新生成。





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