UNIMRCP 代码走读
基于UNIMRCP1.5.0的代码走读 与 填坑记录
1. server启动配置加载
入口:unimrcp_server.c
static apt_bool_t unimrcp_server_load(mrcp_server_t *mrcp_server, apt_dir_layout_t *dir_layout, apr_pool_t *pool);
通过root下的几个主要字节点分别进行处理,对应处理函数如下:
unimrcp_server_properties_load : properties加载
unimrcp_server_components_load :componets加载,包括各个功能的plugin
unimrcp_server_settings_load :
unimrcp_server_profiles_load :
unimrcp_server_misc_load :
2.消息处理链路
系统启动时会为每个plugin启动一个任务处理线程,循环函数在: apt_consumer_task.c:apt_consumer_task_run()
具体消息处理在 : apt_task.c : apt_task_msg_process() ——》apt_task_vtable_t.process_msg() ——》会调用到每个plugin定时时注册的函数
MRCP消息解析 : apt_text_message.c:apt_message_parser_run()
UNIMRCP 代码走读的更多相关文章
- WebRTC代码走读(八):代码目录结构
转载注明出处http://blog.csdn.net/wanghorse ├── ./base //基础平台库,包括线程.锁.socket等 ├── ./build //编译脚本,gyp ├── ./ ...
- Qt Creator插件工作流程代码走读
Qt Creator有个很风骚的插件管理器PluginManager,还有个很骚包的插件说明PluginSpec.基本上,所有的Qt程序的入口都是传统的C程序一样,代码流程从main()函数开始. ...
- WebRTC代码走读(八):代码文件夹结构
转载注明出处http://blog.csdn.net/wanghorse ├── ./base //基础平台库,包含线程.锁.socket等 ├── ./build //编译脚本.gyp ├── ./ ...
- wpa_supplicant代码走读
wpa_supplicant_add_iface wpa_supplicant_init_iface wpa_supplicant_set_driver wpa_config_read wpa_sup ...
- WebRTC代码走读(十):rtp_rtcp模块分析,webrtcrtp_rtcp
转自:http://www.bkjia.com/Androidjc/1020017.html 1. 对外提供的主要流程接口 收包的调用接口RtpReceiverImpl::Incoming ...
- webrtc自带client的视频引擎创建代码走读
src\webrtc\examples\peerconnection\client\conductor.ccbool Conductor::InitializePeerConnection()1 we ...
- webrtc自带client的音频引擎创建代码走读
src\webrtc\examples\peerconnection\client\conductor.cc1.bool Conductor::InitializePeerConnection()1. ...
- 开源ext2read代码走读之-在windows下怎样推断有几个硬盘设备?
int get_ndisks() { HANDLE hDevice; // handle to the drive to be examined int n ...
- Spark 代码走读之 Cache
Spark是基于内存的计算模型,但是当compute chain非常长或者某个计算代价非常大时,能将某些计算的结果进行缓存就显得很方便了.Spark提供了两种缓存的方法 Cache 和 checkPo ...
随机推荐
- MarkChanges: Jmeter
1. 20180627 调整启动的内存set HEAP=-Xms1024m -Xmx1024m2. 20180627 调整输出格式为xml #jmeter.save.saveservice.outpu ...
- 查找SQL Server 自增ID值不连续记录
在很多的时候,我们会在数据库的表中设置一个字段:ID,这个ID是一个IDENTITY,也就是说这是一个自增ID.当并发量很大并且这个字段不是主键的时候,就有可能会让这个值重复:或者在某些情况(例如插入 ...
- RetinaNet论文理解
引言 介绍 目前精度高的检测器都是基于two-stage,proposal-driven机制,第一阶段生成稀疏的候选对象位置集,第二阶段使用CNN进一步将每个候选位置分为前景或者背景以及确定其类别: ...
- Python 爬虫-Scrapy爬虫框架
2017-07-29 17:50:29 Scrapy是一个快速功能强大的网络爬虫框架. Scrapy不是一个函数功能库,而是一个爬虫框架.爬虫框架是实现爬虫功能的一个软件结构和功能组件集合.爬虫框架是 ...
- C#怎样用文件读写在文件的原有基础上追加一行数据
首先添加命名空间using System.IO;这里有两种方法,希望对你有帮助,操作文件时,一定要记得及时关闭流. 第一种方法: string path="D\1.txt";//文 ...
- PHP算法之排序算法(PHP内置排序函数)
首先用实例来讲述一下PHP内置的一些排序函数 [a / k] sort [/ rsort]:[保留索引关系 / 按键名(保留键名关系,适用于关联数组)] 对数组进行排序,结束时数组单元将被从最低到最高 ...
- freemarker中对null值问题的处理
1. freemarker不支持null. 如果值为null会报错. 2.当值为null的处理 1)过滤不显示 Hello ${name!} 在属性后面加感叹号即可过滤null和空字符串 if和”?? ...
- English trip -- VC(情景课)1 C What's your name?(review)
Xu言: 今天,阴差阳错又上了一次 VC 1 C的课,不过这次是小班的形式.这次课的教室叫 toronto [təˈrɒntəʊ] to ron to (多伦多(加拿大城市)) - -0我还 ...
- bzoj3944: Sum 杜教筛板子题
板子题(卡常) 也可能是用map太慢了 /************************************************************** Problem: 3944 Us ...
- thinkphp中页面中时间的默认显示
1,第一我们都知道thinkphp 控制器和页面是通过$this->assgin();或着$this->在页面中要得到的值的随便变量 ,来传值的 比如(此方法是在有时间控件才能使用的) ...