通过一段时间对linphone的学习和研究,将自己的学习记录下来,一是为了避免自己对知识的忘记,二是希望对linphone的热爱者有所帮助!
整个linphone源码体系包含两大部分内容:
1.UI设计,包括两种 gtk+ 和 命令行
包括客户端的gtk+/glade接口和命令行的console接口
2.核心功能实现 liblinphone
liblinphone:这个库用于实现linphone的所有功能
然而,它依赖下面的包:
eXosip2:这是SIP的用户代理库,它又依赖于库libosip2
mediastreamer2:这是一个非常强大的库,包括对audio/video的传输和处理
ortp:这是一个RTP实时传输协议库
这段时间主要研究了osip,eXosip,ortp,mediastreamer2,linphone这几个库的接口和例程。
osip是一个底层的sip协议库,主要包括对sip协议字段的解析、封装、sdp协议的封装解析和四个状态机的实现,不包括对网络通信的支持。通过回调函数的方式通知事件的发生。
eXosip是对osip接口的进一步封装实现,主要包括对网络通信的封装,回调函数的实现,调度模式的实现,使得操作接口更加简便。
ortp是一个对rtp,rtcp协议的封装解析库,包括完整的rtp会话的建立,数据接收,抖动补偿等实现。
mediastream2是一个利用底层ortp库,实现音视频的捕获,编码,网络传输,解码,回放。利用一个轻量级链式架构,每一个处理实体都被包含在一个MSFiter内,MSFilter通过输入输出接口能够和其他MSFilter连接。