linphone 分析1 linphone的架构和初始化

1.linphone 包含的库


1 ReadLine 一个终端显示库, Linphone 会用到它时里面的事件循环机制来读取会话事件。
2 ffmpeg 音视频编解码库
3 Speex 专为通话过程设计的音频编码库
4 libtheora 视频压缩编码库
5 libfaac mpeg4 的音频编码器
6 libfaad2 AAC 音频解码器
7 SDL 简单的视频支持层
8 libosip2 SIP 的简单实现
9 libeXosip2 对 libosip2 的调用进行封装,隐藏了多媒体会话建立过程中 SIP 的细节
10 linphone-3.0 linphone 的主程序,包括 mediastream, oRtp, coreapi 以及 console 四个部分、


2.运行时候系统图为



通话双方在通信前使用 exosip 进行会话协商。上图左边部分展示这一部分的流程。 Exosip 后台
任务完成数据的接收和发送,并通过事件队列通知 linphone 底层的状态变化。
filter 的构建在会话协商成功建立后就顺带完成了,并且 ticker 任务也跑起来了。此时按照 filter
graphics 构建的通道,音视频流不断的从硬件设备上读取,并经过编码压缩送给 RTP 会话,之后送
到对端, 对端到达的音视频流也经过 RTP 会话接收送到解码解压缩 filter, 还原出原始的音视频流交
给硬件设备播放。媒体数据在这两路流中源源不断的流动,完成了双方的可视通话。
上层 linphone 的 core 任务也不断的对底层进行迭代检查。所做的基本工作如下:
对于 sip 协议部分, core 一直等待从事件队列上拿事件。这些事件是 exosip 任务在处理 sip 消息
过程中添加到事件队列上的。每当得到新的事件后, core 就从应用层的角度出发,进行处理。
对于视频流:基本上只处理 rtcp 数据包到达的事件。 stream 上也有一个事件队列,用于保存该流
上的相关事件。对于 rtcp 数据包事件, core 也只处理 sr 类型 rtcp 包,即发送端报告,得到 jitter 和
包丢失率。如果设置了自适应比特率,则调用相关接口进行处理。此过程不断进行,直到当前事件
上的包处理完。
对于音频流,检查流是否还是活动的。通过比较 RTP stats 中接收的数据包数目是否发生变化,
如果在超时时间到达后,接收的数据量还没有发生变化,则认为音频没有响应。



3 LinphoneCore 结构体


/*
* Initialize linphone core
*/
linphonec=linphone_core_new (&linphonec_vtable, configfile_name, factory_configfile_name, NULL


//jimmy +++ linphonecore struct
struct _LinphoneCore
{
LinphoneCoreVTable vtable;
Sal *sal;  //exosip
LinphoneGlobalState state;
struct _LpConfig *config;
RtpProfile *default_profile;  //rtp payload
net_config_t net_conf;
sip_config_t sip_conf;
rtp_config_t rtp_conf;
sound_config_t sound_conf;
video_config_t video_conf;
codecs_config_t codecs_conf;
ui_config_t ui_conf;
autoreplier_config_t autoreplier_conf;
MSList *payload_types;   //rtp payload
int dyn_pt;
LinphoneProxyConfig *default_proxy;
MSList *friends;
MSList *auth_info;
struct _RingStream *ring

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用户点击 用户点击 linphone linphone linphone linphone 的图标后就开始了 的图标后就开始了 的图标后就开始了 的图标后就开始了 的图标后就开始了 linphone linphone linphone linphone 软件,这时 软件,这时 软件,这时 软件,这时 软件,这时 linphoneActivity linphoneActivity linphoneActivity linphoneActivity linphoneActivity linphoneActivity linphoneActivity开始运行,它 开始运行,它 开始运行,它 开始运行,它 使 linphoneService linphoneService linphoneService linphoneService linphoneServicelinphoneServicelinphoneService 开始,并做一些 开始,并做一些 开始,并做一些 开始,并做一些 linphone linphone linphone linphone 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 帐号密码的登录操作同时引导用户进行环境变 量的设置( 量的设置( LinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivityLinphonePreferencesActivity LinphonePreferencesActivityLinphonePreferencesActivityLinphonePreferencesActivityLinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivity LinphonePreferencesActivity)。 环境变量都储存在 环境变量都储存在 环境变量都储存在 环境变量都储存在 sharedPreferencessharedPreferences sharedPreferencessharedPreferences sharedPreferencessharedPreferencessharedPreferencessharedPreferences sharedPreferences 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 中,它是整个工程共享的一变量池。这些环境有 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自动启回校正网络 音频和视编码设置选择,帐号密服务器自

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值