网站大量收购闲置独家精品文档,联系QQ:2885784924

minigui多线程.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
minigui多线程

随着VoIP的迅猛发展,越来越多的个人用户正在使用软件电话、IP电话通过VoIP系统拨打国内和国际长途,IP电话的需求量越来越大,同时,人们对IP电话的要求也越来越高,例如要求IP电话体积小、方便携带、功耗低、待机时间长、漂亮的人机交互界面,功能可扩展等。解决这些需求的可行方案就是用嵌入式系统,具体而言就是采用一款32位嵌入式处理芯片 如ARM、Power PC ,将Linux操作系统和MiniGUI图形库经过裁减移植到这些嵌入式处理芯片所构建的硬件平台上。由于Linux具有强大的网络功能,而MiniGUI是一款优秀的针对嵌入式Linux的轻量级图形用户界面库,在它们的基础上做应用开发,能够保证IP电话的稳定性和功能扩展,也能开发出漂亮的人机交互界面。   目前用来实现VoIP系统的协议有三种:SIP、MGCP和H.323,其中SIP协议是应用得最广泛的协议,所谓SIP电话就是支持SIP协议的IP电话。   1 SIP电话实现方案   根据IP电话的功能需求,SIP电话应当实现人机界面的交互、呼叫处理、语音的采集和播放、语音的编码和解码、语音的实时传输。本设计人机界面的交互使用嵌入式系统硬件平台上的LCD和功能按键,采用MiniGUI图形库和Linux按键驱动;呼叫处理模块使用硬件平台上的网络接口,采用eXoSIP协议栈;语音的采集与播放使用硬件平台上的音频接口,采用Linux音频设备驱动;语音的编码和解码直接采用开源G.7-29A源代码;语音的实时传输使用RTP协议,采用开源的JRTPLIB库。   SIP电话软件结构图如图1所示。SIP电话由八个模块组成。每一模块对应一个线程。其中,主线程 线程1 的任务是:a.加载配置文件到内存中;b.初始化音频设备和功能按键设备;c.创建RTP会话实例和初始化eXoSIP协议栈;d.初始化四个数据区缓冲结构;e.创建、管理、撤消子线程;f. 显示SIP配置文件的配置信息和状态信息,处理来自呼叫处理模块子线程的消息。呼叫处理模块子线程 线程2 的任务是:通过调用eXoSIP协议栈的API函数,实现SIP电话的呼叫过程控制。语音采集模块子线程 线程3 的任务是:实现语音的采集并将采集到的语音数据存储到全局数据缓冲区队列1中。语音编码模块子线程 线程4 的任务是:从全局数据缓冲区队列1中读取PCM码流并对其进行编码,将转化过后的G.729码流存储到全局数据缓冲区队列2中。数据发送模块子线程 线程5 的任务是:从全局数据缓冲区队列2中提取G.729码流,打包成RTP数据包发送到出去。数据接收模块子线程 线程6 的任务是:检测接收端口上的RTP语音包,提取G.729码流存储到全局数据缓冲区队列3中。语音解码模块子线程 线程7 的任务是:从全局数据缓冲区队列3中读取G.729码流对其进行解码,将转化过后的PCM码流存储到全局数据缓冲区队列4中。语音播放模块子线程 线程8 的任务是:从全局数据缓冲区队列4中读取PCM码流,通过D/A转换成模拟语音信号。   2 各线程模块的实现   主线程模块主要完成系统各个功能模块的初始化工作,也是程序的入口点,MiniGUI程序的入口点为MiniGUIMain 函数;配置文件的加载拟完成从根文件系统到内存的加载,然后进行解析,存放在全局SIP配置参数结构中。配置文件用来存放呼叫处理模块和语音传输模块使用的参数,具体包括:本机IP地址、子网掩码、网关地址、SIP服务器IP地址,SIP端口号、用户名、本机电话号码、密码、RTP端口号、被叫电话号码和注册间隔时间。初始化音频设备拟完成打开音频设备文件,设置音频设备的采样频率,量化位数和声道数目。打开音频设备文件可   通过调用Linux系统函数audio_fd open “/dev/dsp”,O_RDWR 来实现,调用成功后将返回音频设备的文件描述符。设置音频设备的采样频率,量化位数和声道数目可通过调用ioctl fd,…. 函数来实现。功能按键设备的初始化很简单,直接调用buttons_fd open“/dev/b-uttons”,O 函数打开按键设备文件即可。创建RTP会话实例,可通过调用JRTPLIB库的RTPSession类来完成,然后调用RTPSession类的Create 方法来对其进行初始化,创建完成后,需设置RTP会话实例的传输参数和会话参数。eXoSIP协议栈的初始化直接调用eXoSIP协议栈所提供的初始化函数。七个子线程的创建可通过调用pthread_create函数来完成。SIP配置信息的显示拟完成配置文件中的信息在MiniGUI主窗口上的显示,主要显示本机的IP地址和端口号、SIP服务器的IP地址、本机号码、本机用户名。SIP状态信息的显示拟完成对整个SIP事务迁移状态的显示。例如,如果收到

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档