CN102685342A - 基于Linux系统提高VOIP语音信号实时性的方法性及系统 - Google Patents

基于Linux系统提高VOIP语音信号实时性的方法性及系统 Download PDF

Info

Publication number
CN102685342A
CN102685342A CN2012101465539A CN201210146553A CN102685342A CN 102685342 A CN102685342 A CN 102685342A CN 2012101465539 A CN2012101465539 A CN 2012101465539A CN 201210146553 A CN201210146553 A CN 201210146553A CN 102685342 A CN102685342 A CN 102685342A
Authority
CN
China
Prior art keywords
socket
data
linux system
kernel
voice signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012101465539A
Other languages
English (en)
Other versions
CN102685342B (zh
Inventor
陆文乐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Gongjin Electronics Co Ltd
Original Assignee
Shenzhen Gongjin Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Gongjin Electronics Co Ltd filed Critical Shenzhen Gongjin Electronics Co Ltd
Priority to CN201210146553.9A priority Critical patent/CN102685342B/zh
Publication of CN102685342A publication Critical patent/CN102685342A/zh
Application granted granted Critical
Publication of CN102685342B publication Critical patent/CN102685342B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种基于Linux系统提高VOIP语音信号实时性的方法及系统。所述基于Linux系统提高VOIP语音信号实时性的方法为解决传统方法,使用用户空间内的Socket接口读写数据,需要系统函数在用户空间和内核空间之间来回的调用造成的通信时延而设计。本发明基于Linux系统提高VOIP语音信号实时性的方法,直接调用内核空间内的内核Socket接口从网络读取数据或将待发送的数据发送到网络中,降低了系统的繁忙度及系统资源的耗费、缩短了时延。所述基于Linux系统提高VOIP语音信号实时性的系统,应用于上述方法,将语音媒体流预处理模块和数据收发模块合并到DSP模块中,位于内核空间内,为实现上述方法提供了硬件支持,实现简便可靠。

Description

基于Linux系统提高VOIP语音信号实时性的方法性及系统
技术领域
本发明涉及一种基于Linux系统VOIP的通信方法及系统,尤其是涉及一种基于Linux系统提高VOIP语音信号实时性的方法及系统。 
背景技术
VoIP(Voice over Internet Protocol)是指将模拟的声音讯号经过压缩与打包之后,以数据封包的形式在IP(Internet Protocol)网络的环境进行语音讯号的传输,通俗来说也就是互联网电话、网络电话或者简称IP电话的意思。VoIP的基本原理是:通过呼叫控制协议建立语音连接的逻辑链路,然后根据语音压缩算法对语音数据编码进行压缩处理,把这些语音数据按TCP/IP标准进行打包,经过建立的逻辑链路通过IP网络把数据包送至接收地,再恢复成原来的语音信号,从而达到由互联网传送语音的目的。 
关于VOIP语音媒体流的收发,有一种常见的系统模型。如图4所示,经过VOIP信令协商后,语音数据从模拟前端经Slic模块采集到DSP模块,由DSP模块进行一系列处理,Echo cancel(去回声)、Jitterbuff(去抖动)、Codec encode(编码、解码)、Packet(打包)等等DSP处理,经过这一系列的处理后,编码出媒体包,在APP层(用户层)中,语音媒体预处理模块通过轮询DSP驱动,将媒体流取上APP层来,这个语音媒体预处理模块可能会对其进行一些媒体流的监控、安全性判断以及一些媒体流类型判断,媒体流经过媒体流预处理模块处理后,由数据收发模块通过Socket(套接字)接口发出去;另外一个方向,从数据收发模块收发媒体流包,经媒体流预处理模块处理后,传到DSP模块进行PLC(Packet Loss Concealment)丢包补偿、Echo cancel、Jitterbuff、Codec decode等处理,再经Slic模块输出语音信号到模拟前端。 
Socket(套接字):用于网络通信的基本操作单元,可以看作不同主机之间进程双向通信的端面点。
在这个过程中有三个相对耗时的处理: 
1.DSP(Digital Signal Processing)模块处理: 
DSP模块,主要用于完成DSP处理,所述DSP处理包括PLC(Packet Loss Concealment)丢包补偿、Echo cancel、Jitterbuff、Codec decode/encode、Packet,这些处理的相关延时方案相关性很强 
2.媒体流预处理: 
媒体流预处理主要完成以下处理: 
●媒体流的监控;通过统计在约定时间内双向所收到的媒体包数,来判断网络或DSP是否有异常,主要应用在一些呼叫仿真测试中。 
●安全性判断;对接收到的媒体数据进行源地址、源端口等的一些安全验证判断;目前很多VOIP方案的DSP模块都没有防媒体流攻击的功能,假如两个终端正在进行VOIP通话,来自第三方的网络端有意/无意地连续发一些网络包到其中一个VOIP终端正在通话的端口,该终端收到这些非法网络包。如果直接发到DSP模块,DSP模块很有可能会Crash(崩溃),严重的会导致系统崩溃。所以安全性判断对于一些要求比较高的VOIP系统还是比较重要的。 
●媒体流类型改变判断;主要应用在非协商模式下的自动适应,在中国电信的家庭网关E8标准里,有一种传真模式叫“自协商”的模式,如果VOIP终端都配置成这种模式的T38传真的话,当终端启动了传真传输,终端在不经过协商的情况下从语音模式切换到T38模式下,其媒体流的Mediatype(媒体流类型)就从RTP变成了T38(其中,RTP代表即时传输协议;T38代表网络传真协议),而另外一个VOIP终端的媒体预处理层 判断到这种改变就根据本端配置来进行传真切换,如果本终端的传真配置也设置成“自协商”的T38模式的话,也跟随进行T38传真切换。至于这种媒体流类型判断的处理为什么要放在APP层(用户层),而不放在DSP模块去检测,原因在于很多VOIP芯片方案的DSP库都是不开源的,让DSP模块去检测媒体流类型的改变通用性不大,方案相关性较强,而且不灵活。 
●数据收发处理 
◆线路上的时延,如网络物理线路的时延。 
◆软件处理上的时延: 
Linux系统分为用户空间和内核空间;APP(Application)层即应用层应用于用户空间;内核空间内包括内核驱动(Kernel Driver)。如图4所示,常见的基于Linux VOIP系统的模型。数据收发模块以及语音媒体流预处理模块设在APP层即用户空间内;从网络收取媒体流数据到APP层,从APP层把媒体流发到网络去;通过应用层Socket接口来读写数据时,都会使用一个系统调用(system call)。这个调用(例如read或write)跨越了用户空间与内核空间的边界,以ptime(每周期)为20ms的VOIP通话连接来说,每秒钟有50个媒体包发送,50个媒体包接收,也就等于每秒有50个read和50个write操作;即100次用户空间和内核空间的切换,频繁的在用户空间和内核空间之间切换,耗费的资源相对较高。 
综合上述:DSP模块的方案相关性较强,而媒体流预处理模块也可以根据需求来进行裁剪调整;而数据收发的处理有优化的空间。 
语音信号的实时性在一些场合要求比较严格,例如IC电话,在其进入通话前,通过发送接收DTMF(Dual Tone Multi Frequency)码即双音多频码和局端进行一系列的交互验证,这个交互验证过程的实时性要求很严格,达到毫秒级 别,如果延时相差10ms,交互验证过程就可能失败,进行IC电话拨号也就失败了。VOIP的语音信号的实时性对于这种信号交互来说尤为重要,而且实时性(单向延时)也是语音质量的重要元素。 
发明内容
针对上述问题,本发明提供一种通信过程中耗费的资源较低,延时小的基于Linux提高VOIP语音信号实时性的方法及系统。
为达上述目的,本发明基于Linux系统提高VOIP语音信号实时性的方法:为直接使用内核空间内的内核Socket接口从网络接收数据或将待发送的数据发送到网络中。 
优选地,所述基于Linux系统提高VOIP语音信号实时性的方法包括以下具体步骤: 
步骤1:建立DSP通道,从连接数据结构表中分配一个套接口用于建立内核Socket接口; 
步骤2:当收任务内核线程轮询到连接数据结构表中有有效套接口,且对应的有效套接口已建立有效连接;内核Socket接口对该有效套接口进行读操作;再将读取的数据传输至模拟前端; 
步骤3:找到用于发送该数据的套接口,使用内核Socket接口直接将待发送的数据发送到网络中。 
优选地,所述步骤1包括以下具体步骤: 
步骤1.1:新建一个数据接收的收任务内核线程; 
步骤1.2:新建一个包含多个套接口的连接数据结构表; 
步骤1.3:进行信令协商,建立呼叫;读取DSP通道参数和网络参数,新建DSP通道连接; 
步骤1.4:从所述连接数据结构表中分配一个空闲套接口,创建并初始化一个内核Socket接口。 
优选地,所述Linux系统为多核处理器时,所述基于Linux系统VOIP的方法还包括,在新建所述收任务内核线程之前,指定一个新建所述收任务内核线程的处理器。 
优选地,所述步骤2包括以下具体步骤: 
步骤2.1:所述收任务内核线程对所述数据结构表中的所述套接口进行轮询读处理; 
步骤2.2:所述收任务内核线程轮询到有有效套接口,且所述有效套接口已建立对应的有效连接,则所述内核Socket接口,读取所述有效套接口从网络中输入的媒体流数据; 
步骤2.3:对读取的所述媒体流数据进行媒体流预处理; 
步骤2.4:对进行媒体流预处理后的数据进行解包、解码、去抖动、去回音,其中一项或多项DSP处理,再输出到模拟前端。 
优选地,所述步骤3包括以下具体步骤: 
步骤3.1:采集模拟前端所传输的模拟数据,进行模数转换; 
步骤3.2:对数模转换后的数据进行编码,去回音,去抖动,其中一项或多项DSP处理; 
步骤3.3:对所述DSP处理后的数据,进行语音媒体流预处理; 
步骤3.4:找到用于发送数据的套接口;对进行语音媒体流预处理后的数据,通过所述内核Socket接口发送到网络中。 
优选地,所述基于Linux系统提高VOIP语音信号实时性的方法还包括步骤4:通信完毕后的断开连接和释放套接口,具体步骤如下 
步骤:4.1:关闭DSP通道; 
步骤4.2:调用所述内核Socket接口释放所述DSP通道的连接以及对应的套接口; 
步骤4.3:系统去初始化,销毁所述收任务内核线程,删除所述连接数据结构表。 
优选地,所述收任务内核线程的轮询包括以下步骤: 
步骤A:判断系统初始化是否已完成;是,进行下一步;否,释放所述收任务内核线程;
步骤B:轮询所述连接数据结构表中当前所述套接口; 
步骤C:判断当前所述套接口是否为有效套接口以及当前所述有效套接口对应的连接是否有效;是,进行下一步;否,判断当前套接口是否为所述连接数据结构表中最后一个套接口,是,从所述连接数据结构表中的第一个套接口开始轮询,否,轮询下一所述套接口; 
步骤D:由所述内核Socket接口读取当前所述有效套接口对应连接传输的数据,并判断是否成功接收;是,进行所述语音媒体流预处理;否,判断当前套接口是否为所述连接数据结构表中最后一个套接口,是,轮询所述连接数据结构表中的第一个套接口,否,轮询下一所述套接口。 
优选地,所述步骤C还包括建立一个轮询标记,所述轮询标记初始值为0,且在轮询下一所述套接口之前自动加1;当判断出当前所述套接口为无效套接口或当前所述有效套接口对应的连接无效后,判断所述轮询标记是否小于所述连接数据结构表中所述套接口的个数,是,则轮询下一所述套接口,否,则将所述轮询标记置0,轮询所述连接数据结构表中的第一个套接口。 
为达上述目的,本发明基于Linux系统提高VOIP语音信号实时性的系统,应用上述的基于Linux系统提高VOIP语音信号实时性的方法中,包括依次连接网络、Linux系统以及模拟前端;所述Linux系统包括依次连接的呼叫控制模块、数据收发模块、语音媒体流预处理模块、DSP模块以及Slic模块,其中,所述数据收发模块以及语音媒体流预处理模块设置在Linux系统内核空间内;且所述数据收发模块以及语音媒体流预处理模块嵌在所述DSP模块中,为所述DSP模 块的子模块;其中, 
所述呼叫控制模块,实现信令交互、拨号管理、配置管理、任务管理、DSP通道管理以及业务逻辑控制; 
所述数据收发模块,与所述网络相连接,接收和发送数据; 
所述语音媒体流预处理模块,对媒体流进行监控、判断安全性以及媒体类型判断;
所述DSP模块,进行DSP处理,所述DSP处理包括丢包补偿、去回音、去抖动、编码、解码以及打包; 
所述Slic模块,与所述模拟前端相连接,采集、输出模拟数据、振铃输出、挂机检测以及模数转换。 
本发明基于Linux提高VOIP语音信号实时性的方法的有益效果: 
1、本发明基于Linux系统提高VOIP语音信号实时性的方法,数据接收以及数据发送均在Linux系统内核空间内完成的方法,简单、巧妙的降低了传统基于Linux系统VOIP通信方法,接收或发送数据时,需要在用户空间和内核空间来回的调用数据造成的时延。直接使用内核空间的内核Socket接收和发送数据,由于操作系统以及应用界面都不需要在用户空间和内核空间内来回的调用数据,降低了系统的繁忙度,减低了资源的耗费。 
2、本发明基于Linux系统提高VOIP语音信号实时性的系统,通过将数据收发模块以及语音媒体流预处理模块嵌入内核空间内的DSP系统中,简便的为基于Linux系统提高VOIP语音信号实时性的方法提供了硬件系统。 
附图说明
图1是本发明实施例所述基于Linux系统提高VOIP语音信号实时性的方法,具体步骤流程图; 
图2是本发明实施例所述基于Linux系统提高VOIP语音信号实时性的方 法,所述通信完毕后的断开连接和释放套接口的流程图; 
图3是本发明实施例所述基于Linux系统提高VOIP语音信号实时性的方法,收任务内核线程的轮询逻辑图。 
图4是传统的基于Linux系统VOIP通信系统的系统模型图; 
图5是本发明实施例所述基于Linux系统提高VOIP语音信号实时性的系统的系统模型图。 
具体实施方式
下面结合说明书附图对本发明做进一步的描述。 
实施例一: 
如图1所示,本发明基于Linux系统提高VOIP语音信号实时性的方法:为直接使用内核空间内的内核Socket接口从网络接收数据或将待发送的数据发送到网络中。 
所述基于Linux系统提高VOIP语音信号实时性的方法包括以下具体步骤: 
步骤1:建立DSP通道,从连接数据结构表中分配一个套接口用于建立内核Socket接口; 
步骤2:当收任务内核线程轮询到连接数据结构表中有有效套接口,且对应的有效套接口已建立有效连接;内核Socket接口对该有效套接口进行读操作;再将读取的数据传输至模拟前端; 
步骤3:找到用于发送该数据的套接口,使用内核Socket接口直接将待发送的数据发送到网络中; 
所述步骤1包括以下具体步骤: 
步骤1.1:新建一个数据接收的收任务内核线程; 
步骤1.2:新建一个包含多个套接口的连接数据结构表,并将连接数据结构表的状态初始化为IDLE;IDLE标识当前状态为空闲,可使用。 
步骤1.3:进行信令协商,建立呼叫;读取DSP通道参数和网络参数,新建DSP通道连接; 
步骤1.4:从所述连接数据结构表中分配一个空闲套接口,创建并初始化一个内核Socket接口,并将所述内核Socket接口连接状态设置为UP。UP标识当前连接已建立。 
所述步骤2包括以下具体步骤: 
步骤2.1:所述收任务内核线程对所述数据结构表中的所述套接口进行轮询读处理; 
步骤2.2:所述收任务内核线程轮询到有有效套接口,且所述有效套接口已建立对应的有效连接,则所述内核Socket接口,读取所述有效套接口从网络中输入的媒体流数据; 
步骤2.3:对读取的所述媒体流数据进行媒体流预处理; 
步骤2.4:对进行媒体流预处理后的数据进行解包、解码、去抖动、去回音,其中一项或多项DSP处理,再输出到模拟前端。 
所述步骤3包括以下具体步骤: 
步骤3.1:采集模拟前端所传输的模拟数据,进行模数转换; 
步骤3.2:对数模转换后的数据进行编码,去回音,去抖动,其中一项或多项DSP处理; 
步骤3.3:对所述DSP处理后的数据,进行语音媒体流预处理; 
步骤3.4:找到用于发送数据的套接口;对进行语音媒体流预处理后的数据,通过所述内核Socket接口发送到网络中。 
如图2所示,步骤4:通信完毕后的断开连接和释放套接口,具体步骤如下 
步骤:4.1:关闭DSP通道; 
步骤4.2:调用所述内核Socket接口释放所述DSP通道的连接以及对应的 套接口; 
步骤4.3:系统去初始化,销毁所述收任务内核线程,删除所述连接数据结构表。 
如图3所示,所述收任务内核线程的轮询包括以下步骤: 
步骤A:判断系统初始化是否已完成;是,进行下一步;否,释放所述收任务内核线程;
步骤B:轮询所述连接数据结构表中当前所述套接口; 
步骤C:判断当前所述套接口是否为有效套接口以及当前所述有效套接口对应的连接是否有效;是,进行下一步;否,判断当前套接口是否为所述连接数据结构表中最后一个套接口,是,从所述连接数据结构表中的第一个套接口开始轮询,否,轮询下一所述套接口; 
步骤D:由所述内核Socket接口读取当前所述有效套接口对应连接传输的数据,并判断是否成功接收;是,进行所述语音媒体流预处理;否,判断当前套接口是否为所述连接数据结构表中最后一个套接口,是,轮询所述连接数据结构表中的第一个套接口,否,轮询下一所述套接口。 
其次,轮询的另一种方法为:所述步骤C还包括建立一个轮询标记,所述轮询标记初始值为0,且在轮询下一所述套接口之前自动加1;当判断出当前所述套接口为无效套接口或当前所述有效套接口对应的连接无效后,判断所述轮询标记是否小于所述连接数据结构表中所述套接口的个数,是,则轮询下一所述套接口,否,则将所述轮询标记置0,轮询所述连接数据结构表中的第一个套接口。 
所述Linux系统为多核处理器时,所述基于Linux系统VOIP的方法还包括,在新建所述收任务内核线程之前,指定一个新建所述收任务内核线程的处理器。 
如图5所示,本发明基于Linux系统提高VOIP语音信号实时性的系统,应用于如上述的基于Linux系统提高VOIP语音信号实时性的方法中,包括依次连 接网络、Linux系统以及模拟前端;所述Linux系统包括依次连接的呼叫控制模块、数据收发模块、语音媒体流预处理模块、DSP模块以及Slic模块,所述数据收发模块以及语音媒体流预处理模块设置在Linux系统内核空间内;且所述数据收发模块以及语音媒体流预处理模块嵌在所述DSP模块中,为所述DSP模块的子模块;其中, 
所述呼叫控制模块,实现信令交互、拨号管理、配置管理、任务管理、DSP通道管理以及业务逻辑控制; 
所述数据收发模块,与所述网络相连接,接收和发送数据; 
所述语音媒体流预处理模块,对媒体流进行监控、判断安全性以及媒体类型判断;
所述DSP模块,进行DSP处理,所述DSP处理包括丢包补偿、去回音、去抖动、编码、解码以及打包; 
所述Slic模块,与所述模拟前端相连接,采集、输出模拟数据、振铃输出、挂机检测以及模数转换。 
其处理流程参考数据结构如下: 
Figure BDA00001630887600111
一、收任务内核线程NetworkTask任务的创建与销毁 
long kernel_thread(int(*fn)(void*),void*arg,unsigned long flags) 
void kthread_bind(struct task_struct*k,unsigned int cpu) 
void force_sig(int sig,struct task_struct*p) 
收任务内核线程NetworkTask任务的创建是紧跟DSP初始化之后,也可以嵌入在DSP初始化中,使用内核接口kernel_thread创建;如果在多核处理器的情况下,还要通过kthread_bind来指定内核线程NetworkTask的处理器,而收任务内核线程NetworkTask的销毁操作放在DSP去初始化前,把所有正在接收中的数据刷新出去,并释放其连接数据结构表conn_id对应的套接口,断开连接,然后调用内核接口force_sig强制给一个SIGKILL信号给收任务线程NetworkTask来销毁释放其内核线程。 
二、收任务内核线程NetworkTask的轮询逻辑 
int kernel_recvmsg(struct socket*sock,struct msghdr*msg,struct kvec*vec,size_t num,size_t size,int flags) 
如图3所示,首先判断系统是否已经初始化,主要是对连接数据结构表中所有连接的conn_table数据结构进行初始化,然后轮询所有连接的conn_table[i]的套接口是否有效,连接是否连上,如果发现有有效连接及有效套接口,就使用kernel_recvmsg接收该连接的数据,然后就交给“语音预处理模块”和DSP去处理了,如果没有就对conn_table[i]进行移位,进行最大连接数判断,继续再轮询。 
三、媒体流收处理 
int sock_create_kern(int family,int type,int protocol,struct socket**res) 
int kernel_bind(struct socket*sock,struct sockaddr*addr,int addrlen) 
int kernel_connect(struct socket*sock,struct sockaddr*addr,int addrlen, int flags) 
在DSP创建通道的同时,从连接结构数据表conn_table中分配一个空闲的连接,使用以上这三个接口创建、绑定、连接套接口成功后,把其加入到conn_id对应的conn_table表中,并置对应连接connected置为TRUE,然后在NetworkTask轮询任务中使用kernel_recvmsg接口接收媒体流数据。 
四、媒体流发处理 
int kernel_sendmsg(struct socket*sock,struct msghdr*msg,struct kvec*vec,size_t num,size_t size) 
从DSP编码打包出来的媒体包,由conn_id找到conn_table中对应的sock,使用kernel_sendmsg接口直接发出去。 
五、媒体流的断开处理 
void sock_release(struct socket*sock) 
在DSP通道关闭的同时,由conn_id从conn_table中找到对应的套接口 
sock,使用sock_release释放该sock套接口,并置其connected为FALSE。本发明基于Linux系统提高VOIP语音信号实时性的系统 
如图5所示,呼叫控制模块、DSP模块、语音媒体流预处理模块、数据收发模块、Slic模块,语音媒体流预处理模块和数据收发模块是嵌在DSP模块里的子模块,且均处于内核空间内。 
呼叫控制模块:用于信令交互、拨号管理、配置管理、任务管理、DSP通道管理,以及业务逻辑控制 
DSP模块:用于以连接通道的形式进行媒体流的各种处理,包括PLC(Packet Loss  Concealment)丢包补偿、Echo cancel、Jitterbuff、Codec decode/encode、Packet等 
语音媒体流预处理模块:用于对媒体流进行包括连接监控、安全性判断和媒体类型判断的一些简单的预处理 
数据收发模块:负责媒体流数据网络的收发 
Slic模块:用于模拟数据采样和输出、振铃输出、摘挂机检测,相当于一个AD转换和模拟前端设备交互 
本发明基于Linux系统提高VOIP语音信号实时性的方法,数据接收以及数据发送均在所述内核空间内完成的方法,简单、巧妙的避免了传统基于Linux系统VOIP通信方法,接收或发送数据时,需要再用户空间和内核空间来回的调用数据造成的时延。直接使用内核空间的内核Socket接收和发送数据,由于操作系统以及应用界面都不需要在用户空间和内核空间内来回的调用数据,降低了系统的繁忙度,减低了资源的耗费。 
本发明基于Linux系统提高VOIP语音信号实时性的系统,通过将数据收发模块以及语音媒体流预处理模块嵌入内核空间内的DSP系统中,简便的为基于Linux系统提高VOIP语音信号实时性的方法提供了硬件系统。 
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。 

Claims (10)

1.一种基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述基于Linux系统提高VOIP语音信号实时性的方法为直接使用内核空间内的内核Socket接口从网络接收数据或将待发送的数据发送到网络中。
2.根据权利要求1所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述基于Linux系统提高VOIP语音信号实时性的方法包括以下具体步骤:
步骤1:建立DSP通道,从连接数据结构表中分配一个套接口用于建立内核Socket接口;
步骤2:当收任务内核线程轮询到连接数据结构表中有有效套接口,且对应的有效套接口已建立有效连接;内核Socket接口对该有效套接口进行读操作;再将读取的数据传输至模拟前端;
步骤3:找到用于发送该数据的套接口,使用内核Socket接口直接将待发送的数据发送到网络中。
3.根据权利要求2所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述步骤1包括以下具体步骤:
步骤1.1:新建一个数据接收的收任务内核线程;
步骤1.2:新建一个包含多个套接口的连接数据结构表;
步骤1.3:进行信令协商,建立呼叫;读取DSP通道参数和网络参数,新建DSP通道连接;
步骤1.4:从所述连接数据结构表中分配一个空闲套接口,创建并初始化一个内核Socket接口。
4.根据权利要求3所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述Linux系统为多核处理器时,所述基于Linux系统VOIP的方法还包括,在新建所述收任务内核线程之前,指定一个新建所述收任务内核线程的处理器。
5.根据权利要求2所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述步骤2包括以下具体步骤:
步骤2.1:所述收任务内核线程对所述数据结构表中的所述套接口进行轮询读处理;
步骤2.2:所述收任务内核线程轮询到有有效套接口,且所述有效套接口已建立对应的有效连接,则所述内核Socket接口,读取所述有效套接口从网络中输入的媒体流数据;
步骤2.3:对读取的所述媒体流数据进行媒体流预处理;
步骤2.4:对进行媒体流预处理后的数据进行解包、解码、去抖动、去回音,其中一项或多项DSP处理,再输出到模拟前端。
6.根据权利要求2所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述步骤3包括以下具体步骤:
步骤3.1:采集模拟前端所传输的模拟数据,进行模数转换;
步骤3.2:对数模转换后的数据进行编码,去回音,去抖动,其中一项或多项DSP处理;
步骤3.3:对所述DSP处理后的数据,进行语音媒体流预处理;
步骤3.4:找到用于发送数据的套接口;对进行语音媒体流预处理后的数据,通过所述内核Socket接口发送到网络中。
7.根据权利要求1所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述基于Linux系统提高VOIP语音信号实时性的方法还包括步骤4:通信完毕后的断开连接和释放套接口,具体步骤如下
步骤:4.1:关闭DSP通道;
步骤4.2:调用所述内核Socket接口释放所述DSP通道的连接以及对应的套接口;
步骤4.3:系统去初始化,销毁所述收任务内核线程,删除所述连接数据结构表。
8.根据权利要求1所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述收任务内核线程的轮询包括以下步骤:
步骤A:判断系统初始化是否已完成;是,进行下一步;否,释放所述收任务内核线程;
步骤B:轮询所述连接数据结构表中当前所述套接口;
步骤C:判断当前所述套接口是否为有效套接口以及当前所述有效套接口对应的连接是否有效;是,进行下一步;否,判断当前套接口是否为所述连接数据结构表中最后一个套接口,是,从所述连接数据结构表中的第一个套接口开始轮询,否,轮询下一所述套接口;
步骤D:由所述内核Socket接口读取当前所述有效套接口对应连接传输的数据,并判断是否成功接收;是,进行所述语音媒体流预处理;否,判断当前套接口是否为所述连接数据结构表中最后一个套接口,是,轮询所述连接数据结构表中的第一个套接口,否,轮询下一所述套接口。
9.根据权利要求7所述的基于Linux系统提高VOIP语音信号实时性的方法,其特征在于,所述步骤C还包括建立一个轮询标记,所述轮询标记初始值为0,且在轮询下一所述套接口之前自动加1;当判断出当前所述套接口为无效套接口或当前所述有效套接口对应的连接无效后,判断所述轮询标记是否小于所述连接数据结构表中所述套接口的个数,是,则轮询下一所述套接口,否,则将所述轮询标记置0,轮询所述连接数据结构表中的第一个套接口。
10.一种基于Linux系统提高VOIP语音信号实时性的系统,应用于如权利要求1所述的基于Linux系统提高VOIP语音信号实时性的方法中,包括依次连接网络、Linux系统以及模拟前端;所述Linux系统包括依次连接的呼叫控制模块、数据收发模块、语音媒体流预处理模块、DSP模块以及Slic模块,其特征在于,所述数据收发模块以及语音媒体流预处理模块设置在Linux系统内核空间内;且所述数据收发模块以及语音媒体流预处理模块嵌在所述DSP模块中,为所述DSP模块的子模块;其中,
所述呼叫控制模块,实现信令交互、拨号管理、配置管理、任务管理、DSP通道管理以及业务逻辑控制;
所述数据收发模块,与所述网络相连接,接收和发送数据;
所述语音媒体流预处理模块,对媒体流进行监控、判断安全性以及媒体类型判断;
所述DSP模块,进行DSP处理,所述DSP处理包括丢包补偿、去回音、去抖动、编码、解码以及打包;
所述Slic模块,与所述模拟前端相连接,采集、输出模拟数据、振铃输出、挂机检测以及模数转换。
CN201210146553.9A 2012-05-11 2012-05-11 基于Linux系统提高VOIP语音信号实时性的方法性及系统 Active CN102685342B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210146553.9A CN102685342B (zh) 2012-05-11 2012-05-11 基于Linux系统提高VOIP语音信号实时性的方法性及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210146553.9A CN102685342B (zh) 2012-05-11 2012-05-11 基于Linux系统提高VOIP语音信号实时性的方法性及系统

Publications (2)

Publication Number Publication Date
CN102685342A true CN102685342A (zh) 2012-09-19
CN102685342B CN102685342B (zh) 2014-05-21

Family

ID=46816678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210146553.9A Active CN102685342B (zh) 2012-05-11 2012-05-11 基于Linux系统提高VOIP语音信号实时性的方法性及系统

Country Status (1)

Country Link
CN (1) CN102685342B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102932568A (zh) * 2012-11-23 2013-02-13 上海市共进通信技术有限公司 嵌入式VoIP电话系统及实现VoIP电话语音质量管理的方法
CN103179028A (zh) * 2013-01-10 2013-06-26 上海斐讯数据通信技术有限公司 基于内核进行rtp数据收发的网关设备及其实现方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631066A (zh) * 2008-07-14 2010-01-20 中兴通讯股份有限公司 一种实现互联网语音传输体系终端质量服务的方法及系统
CN102158615A (zh) * 2011-04-12 2011-08-17 迈普通信技术股份有限公司 Voip系统中基于linux的媒体服务器及其放音方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631066A (zh) * 2008-07-14 2010-01-20 中兴通讯股份有限公司 一种实现互联网语音传输体系终端质量服务的方法及系统
CN102158615A (zh) * 2011-04-12 2011-08-17 迈普通信技术股份有限公司 Voip系统中基于linux的媒体服务器及其放音方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102932568A (zh) * 2012-11-23 2013-02-13 上海市共进通信技术有限公司 嵌入式VoIP电话系统及实现VoIP电话语音质量管理的方法
CN102932568B (zh) * 2012-11-23 2014-03-12 上海市共进通信技术有限公司 嵌入式VoIP电话系统及实现VoIP电话语音质量管理的方法
CN103179028A (zh) * 2013-01-10 2013-06-26 上海斐讯数据通信技术有限公司 基于内核进行rtp数据收发的网关设备及其实现方法
CN103179028B (zh) * 2013-01-10 2018-01-02 上海斐讯数据通信技术有限公司 基于内核进行rtp数据收发的网关设备及其实现方法

Also Published As

Publication number Publication date
CN102685342B (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
CA2257505C (en) A modem with ip support
US6175565B1 (en) Serial telephone adapter
US20070189270A1 (en) Network adapter
US8077853B2 (en) VoIP adapter, IP network device and method for performing advanced VoIP functions
US6868081B1 (en) Method and apparatus for simultaneous multiline phone and data services over a single access facility
EP1026861B1 (en) System and method for distributed call signalling in telephony-over-lan networks
US20020071424A1 (en) Packet voice telephony apparatus and method
CN1122991A (zh) 使用同时话音数据调制解调器独立交换话音和数据的呼叫
AU2007215136B2 (en) Techniques for facilitating emergency calls
US20070201450A1 (en) Network adapter
US6549534B1 (en) Apparatus and method for accessing wireless trunks on a communications network
CN102685342B (zh) 基于Linux系统提高VOIP语音信号实时性的方法性及系统
JP3575435B2 (ja) 電話システム及び電話接続監視方法
WO2011130987A1 (zh) 一种基于voip的传真方法及其系统
US20040190499A1 (en) Method and system for configuring gateways to facilitate a modem connection over a packet network
JP2000270024A (ja) インターネット電話におけるフレームパケット化サイズ能力交換方法,インターネット電話利用端末装置,およびインターネット電話のプログラムを記録した記録媒体
CN105657204A (zh) 一种带ip语音功能的4g无线传真装置及其使用方法
WO2011160345A1 (zh) 媒体面带外双音多频信号的传输方法和系统
US6822755B2 (en) Method and apparatus for detecting facsimile transmissions over a network
CN214125328U (zh) 一种用于无线集群网关与宽带通信系统互联互通的窄带通信系统设备
JPH10164135A (ja) 通信システム
CN100350791C (zh) 以有线电视数字机顶盒实现网络ip电话功能的方法
KR100406969B1 (ko) 전화기를 접속할 수 있는 개인용 컴퓨터의 인터넷 프로토콜 어댑터
JP4323294B2 (ja) データ伝送システム
JP2000312265A (ja) 音声・ファックス通信切替方法および装置、その方法を記憶した記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Lu Wenle

Inventor after: Wang Minggui

Inventor before: Lu Wenle

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: LU WENLE TO: LU WENLE WANG MINGGUI

C14 Grant of patent or utility model
GR01 Patent grant