CN100384181C - 一种ip网络环境下的多路音频缓冲处理的方法 - Google Patents

一种ip网络环境下的多路音频缓冲处理的方法 Download PDF

Info

Publication number
CN100384181C
CN100384181C CNB2004100885957A CN200410088595A CN100384181C CN 100384181 C CN100384181 C CN 100384181C CN B2004100885957 A CNB2004100885957 A CN B2004100885957A CN 200410088595 A CN200410088595 A CN 200410088595A CN 100384181 C CN100384181 C CN 100384181C
Authority
CN
China
Prior art keywords
thread
data
audio data
network environment
audio
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.)
Expired - Fee Related
Application number
CNB2004100885957A
Other languages
English (en)
Other versions
CN1604573A (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.)
Vimicro Corp
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2004100885957A priority Critical patent/CN100384181C/zh
Publication of CN1604573A publication Critical patent/CN1604573A/zh
Application granted granted Critical
Publication of CN100384181C publication Critical patent/CN100384181C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种IP网络环境下的多路音频缓冲处理的方法,即首先根据参与处理的音频的路数在内存中创建多块地址连续的音频数据缓冲区,然后创建一个网络数据接收线程和一个多缓冲区循环处理线程,网络数据接收线程在接收到音频数据包之后,将其拆包,并放入对应的音频数据缓冲区中以等待处理,多缓冲区循环处理线程每隔固定时间依次对各个音频数据缓冲区里的数据进行处理,每次处理数据的长度均相等。因此本发明相对现有技术,可避免由于IP网络环境下的多路音频处理而带来的多道线程工作模式,降低了由于线程调度操作带来的系统消耗,提高了系统响应速度。

Description

一种IP网络环境下的多路音频缓冲处理的方法
技术领域
本发明涉及了一种音频信号的缓冲处理的方法,特别是一种在IP网络环境下多路音频缓冲处理的方法。
技术背景
音频信号是人们非常熟悉的信号,人们日常信息的交流、沟通及传播媒体等都离不开它。因此,音频数据的传输处理在信号传输处理领域中占有相当大的比重。然而,由于音频数据对系统的实时性具有很高的要求,即在音频传输与处理过程中,所花费的时间是有严格的要求的,这样,音频数据的处理无论是对系统的软件还是硬件,都有着极高的要求。
一方面,为了降低成本,增加系统软硬件的利用率,我们需要考虑用多路音频数据系统来代替传统的单路音频数据处理系统。另一方面,在我们实际应用中,多路音频数据的处理的应用也越来越广泛。
多路音频系统的一个典型例子就是同声翻译系统,例在一个国际会议中,需要对讲话者的语音翻译成不同的语言,利用计算机网络,根据与会者的需要分别传输至不同与会者,另一方面,还要将翻译后的不同种语言分别传输至各个电视直播间以供使用,这就要用到多路音频技术。多路音频系统的另一个例子就是基于IP网络的语音传输如网络群用聊天室、网络会议中等,在这些系统中,都需要每一个参与者能向其它任何参与者发送语音,同时又能接收来自其它任何参与者的语音,这就要用到多路音频处理技术。
然而,由于音频处理对实时性的高要求,对多路音频进行处理决非易事。如果我们像处理单路音频技术一样简单地对每一路音频都创建一个线程,那么各个线程的并行运行对系统的性能无疑是个极大的考验,这会导致在许多情况下,如果保证几个线程的正常运行并满足了这几个线程的实时性,可能将致使其它的线程无法正常运行,也就使得某几路语音信号不能正常接收,有时候还会出现不同的线程占据不同的资源产生死锁、使系统死机的现象。为此,人们研究出了多种算法来克服这一问题。
为了实现多路音频数据的正常处理,目前已研究出了许多种线程调度算法来控制线程的运行,并不断地对这些算法进行着改进。最常见的线程调度算法主要有:最高优先级算法、时间片算法、统计时间片算法等。
(1)最高优先级算法的思想是根据所传输语音的重要程度,将各路语音的不同线程分成不同的优先级,每当系统要对多路音频数据进行处理时,优先级最高的线程将最先得到处理。最高优先级算法的思想实际是一种逃避算法,它只是在尽力保证最重要语音的基础上,兼顾其它优先级相对较低的音频线程(语音)。但它忽略了系统的公平性,对于某些优先级相对较小的线程来说,它们所处理出来的语音效果极可能出现时好时坏的情况,是极不稳定的。
最高优先级算法在系统较为清闲的情况下,比如说所传输的多路音频只有一小部分存在音频数据、需要工作的情况下,能有不错的性能,但如果各个线程同时需要语音传输,进行音频处理,则无利于多线程的处理,相反,由于需要标识各个线程的优先级,反而要浪费掉一部分系统资源,这无疑是雪上加霜!但总的来说,最高优先级算法思想在某些情况下还是很有效的。
(2)时间片算法充分考虑了系统的公平性。它的原理是将CPU时间分成等长的时间片,每个线程都分配有相应的时间片,各线程按自己所分得的时间片轮流调用系统资源,对各自的音频数据进行处理。
举例来讲,假设某系统将自己的时间片分为1ms,如果有5路音频数据需要处理,则系统就要创建5个线程,分别记为a,b,c,d,e,每个线程分到的时间片就是1ms。线程a在CPU上运行1ms,即对自己的音频数据进行1ms的处理,然后是线程b,c,d,e,在这段时间里,线程a可能有数据要处理,就先放在a的缓冲区中。5ms后,线程a重新获得时间片,对自己的缓冲区中的音频数据进行处理。
时间片算法充分考虑了系统的公平性,这充分保证了音频的稳定性,在路数较少的系统中,时间片算法是很成功的。然而,我们注意到,随着音频路数的增多,时间片算法就越来越恶化。在上例中,如果系统要处理的是500路甚至是5000路音频数据,而不是5路音频数据,则每一路音频数据的处理时间间隔将变为500ms甚至是5000ms(5s),对于听众来讲,每几秒种才能听到一句话或半句话,显然是不可接受的。
时间片算法在对线程分配时间片时,并没有考虑线程空闲的情况。比如说在5路音频数据中,假如有四路都是空闲的,而只有一路有音频数据需要处理,系统在分配时间片时仍然要向空闲的线程分配时间片,这对系统资源显然是极大的浪费。
另外,时间片算法需要系统在各个线程之间进行切换,每进行一次切换都要保存一下当前线程的工作环境、恢复到下一个线程的工作环境,这极大地消耗了系统的资源!
(3)统计时间片算法是对时间片算法的改进。它克服了时间片算法对空闲线程分配时间片的不足。统计时间片算法的原理是,仍将CPU时间分成等长的时间片,但并不是对每个线程都进行分配。当某个线程的缓冲区有音频数据要进行处理时,需要在系统进行“登记”,系统只会把时间片分配给己经在表中登记的线程,没有“登记”的线程意味着该线程处于闲置状态,没有音频数据要进行处理。在线程将缓程冲数据处理完后,且在较长时间t(由系统设定)内都没有数据要处理,则意味着该线程最近没有音频数据需要处理,需要将该线程从“登记表”中删除。
统计时间片的算法是极为合理的,这表现在许多情况下,所要传输的多路音频往往都不是同时进行的,统计时间片算法极大地提高了系统的运行效率,是目前比较普遍的一种方法。
然而,由于统计时间片仍需要在许多线程之间进行切换,也浪费了部分系统资源。
发明内容
本发明的目的是:针对现有技术的不足,提供一种可提高系统运行效率的IP网络环境下多路音频缓冲处理的方法。
为了解决上述技术问题,本发明所采取的技术方案是:一种IP网络环境下的多路音频缓冲处理的方法,包括如下步骤:
步骤一、根据参与处理的音频的路数在内存中对应的创建多块地址连续的音频数据缓冲区;
步骤二、创建一个网络数据接收线程和一个多缓冲区循环处理线程;
步骤三、网络数据接收线程在接收到音频数据包之后,将其拆包,并放入对应的音频数据缓冲区中以等待处理;
步骤四、多缓冲区循环处理线程每隔固定时间依次对所述音频数据缓冲区里的数据进行处理,且每次处理数据的长度均相等。
所述步骤一所创建的音频数据缓冲区的数量可以与参与处理的音频的路数相等。
所述音频数据缓冲区的长度L=n*m,其中,n为大于参与处理的音频的路数的整数,m为指定时间的音频数据长度。
步骤四中,所述多缓冲区循环处理线程处理间隔时间可以为所述指定时间的整数倍数,并且该倍数可以被n整除。
步骤四中,所述多缓冲区循环处理线程每次在音频数据缓冲区里的处理的数据长度可以为m的整数倍数,并且该倍数可以被n整除。
所述指定时间范围可以为50~150毫秒。
所述音频数据缓冲区的访问可以按照地址顺序环型方式进行,即访问指针按照地址递加的方式顺序访问缓冲区里的数据,当访问指针到达缓冲区尾部时,自动跳跃到缓冲区头部。
多缓冲区循环处理线程创建之后,可以由网络数据接收线程在接收到有效音频数据包之后唤起。
多缓冲区循环处理线程在处理数据的同时,可以对在音频数据缓冲区里处理过的数据进行清除。
在上述技术方案中,本发明由于通过一个网络数据接收线程来接受各路的音频数据包,并放入相应的音频数据缓冲区之中,然后利用恒定的数据长度与时间长度对等的原则,利用另一个多缓冲区循环处理线程来对各个音频数据缓冲区进行处理。通过这种方法即可达到在IP网络环境下,仅仅采用两个线程,即可处理多路音频缓冲的目的,而无需在许多线程之间进行切换,造成系统资源的浪费。因此相对现有技术,本发明具有处理方法简单、系统运行效率高、节省系统资源等特点。
具体实施方式
下面将结合具体实施例对本发明作进一步详细说明。
本发明是为了达到降低由于线程调度操作带来的系统消耗,提高了系统响应速度的目的,而设法减少系统的线程数量,从而减少或避免不同线程之间的切换,所采用的一种相比现有技术更高效的双线程多路音频缓冲处理的方法。其具体实施为如下步骤:
步骤一、根据参与处理的音频的路数N在内存中创建N块地址连续的音频数据缓冲区。所述N为整数。
在内存中创建的音频数据缓冲区的长度L满足L=n*m,其中n为大于N的整数,m为指定时间内的音频数据的长度。所述指定时间范围为50~150毫秒。音频数据缓冲区的访问按照地址顺序环型方式进行,即访问指针按照地址递加的方式顺序访问缓冲区里的数据,当访问指针到达缓冲区尾部时,自动跳跃到缓冲区头部。
步骤二、创建一个网络数据接收线程和一个多缓冲区循环处理线程。多缓冲区循环处理线程创建之后,由网络数据接收线程在接收到有效音频数据包之后唤起。
步骤三、网络数据接收线程在接收到音频数据包之后,将其拆包,并放入对应的音频数据缓冲区中以等待处理。
步骤四、多缓冲区循环处理线程每隔固定时间T依次对这N个音频数据缓冲区里的数据进行处理,每次处理数据的长度为M。多缓冲区循环处理线程处理间隔时间T为50毫秒的整数倍数S,并且S可以被n整除。多缓冲区循环处理线程每次在音频数据缓冲区里的处理的数据长度M为m的整数倍数K,并且K可以被n整除。
步骤五、多缓冲区循环处理线程在处理数据的同时,为了消除音频数据包迟到、丢失造成的干扰,将对在音频数据缓冲区里处理过的数据都进行清除。
通过上述技术方案,本发明通过一个网络数据接收线程来接受N路的音频数据包,并放入相应的音频数据缓冲区之中,然后利用恒定的数据长度与时间长度对等的原则,利用另一个多缓冲区循环处理线程来对各个音频数据缓冲区进行处理。通过这种方法即可达到仅仅采用两个线程,即可处理多路音频缓冲,从而提高系统运行效率、减小资源浪费的目的。
以上仅为本发明的一种具体实施例。凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

Claims (8)

1.一种IP网络环境下的多路音频缓冲处理的方法,包括如下步骤:
步骤一、根据参与处理的音频的路数N在内存中创建N块地址连续的音频数据缓冲区,其中N为整数;
步骤二、创建一个网络数据接收线程和一个多缓冲区循环处理线程;
步骤三、网络数据接收线程在接收到音频数据包之后,将其拆包,并放入对应的音频数据缓冲区中以等待处理;
步骤四、多缓冲区循环处理线程每隔固定时间依次对所述音频数据缓冲区里的数据进行处理,且每次处理数据的长度均相等。
2.如权利要求1所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:所述音频数据缓冲区的长度L=n*m,其中,n为大于参与处理的音频的路数的整数,m为指定时间的音频数据长度。
3.如权利要求2所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:步骤四中,所述多缓冲区循环处理线程处理间隔时间为所述指定时间的整数倍数,并且该倍数可以被所述n整除。
4.如权利要求3所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:步骤四中,所述多缓冲区循环处理线程每次在音频数据缓冲区里的处理的数据长度为所述m的整数倍数,并且该倍数可以被所述n整除。
5.如权利要求4所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:所述指定时间范围为50~150毫秒。
6.如权利要求4所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:所述音频数据缓冲区的访问按照地址顺序环型方式进行,即访问指针按照地址递加的方式顺序访问缓冲区里的数据,当访问指针到达缓冲区尾部时,自动跳跃到缓冲区头部。
7.如权利要求6所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:多缓冲区循环处理线程创建之后,由网络数据接收线程在接收到有效音频数据包之后唤起。
8.如权利要求1所述IP网络环境下的多路音频缓冲处理的方法,其特征在于:多缓冲区循环处理线程在处理数据的同时,对在音频数据缓冲区里处理过的数据进行清除。
CNB2004100885957A 2004-11-09 2004-11-09 一种ip网络环境下的多路音频缓冲处理的方法 Expired - Fee Related CN100384181C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100885957A CN100384181C (zh) 2004-11-09 2004-11-09 一种ip网络环境下的多路音频缓冲处理的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100885957A CN100384181C (zh) 2004-11-09 2004-11-09 一种ip网络环境下的多路音频缓冲处理的方法

Publications (2)

Publication Number Publication Date
CN1604573A CN1604573A (zh) 2005-04-06
CN100384181C true CN100384181C (zh) 2008-04-23

Family

ID=34667161

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100885957A Expired - Fee Related CN100384181C (zh) 2004-11-09 2004-11-09 一种ip网络环境下的多路音频缓冲处理的方法

Country Status (1)

Country Link
CN (1) CN100384181C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102333226A (zh) * 2011-09-01 2012-01-25 苏州阔地网络科技有限公司 一种音视频数据传输方法
CN103793280A (zh) * 2014-01-17 2014-05-14 深圳市东微智能科技有限公司 一种音频缓冲处理方法
CN108650484A (zh) * 2018-06-29 2018-10-12 中译语通科技股份有限公司 一种基于音视频通讯的远程同声传译的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1364261A (zh) * 1999-04-29 2002-08-14 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN1437816A (zh) * 1999-12-29 2003-08-20 英特尔公司 用于多线程数据包处理的千兆位数据包分配的方法和设备
US20030231645A1 (en) * 2002-06-14 2003-12-18 Chandra Prashant R. Efficient multi-threaded multi-processor scheduling implementation
US20040181611A1 (en) * 2003-03-14 2004-09-16 Viresh Ratnakar Multimedia streaming system for wireless handheld devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1364261A (zh) * 1999-04-29 2002-08-14 英特尔公司 用于在一个多线程处理器内进行线程切换的方法和装置
CN1437816A (zh) * 1999-12-29 2003-08-20 英特尔公司 用于多线程数据包处理的千兆位数据包分配的方法和设备
US20030231645A1 (en) * 2002-06-14 2003-12-18 Chandra Prashant R. Efficient multi-threaded multi-processor scheduling implementation
US20040181611A1 (en) * 2003-03-14 2004-09-16 Viresh Ratnakar Multimedia streaming system for wireless handheld devices

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种基于比特标的实时多任务新调度算法. 龚龙庆,张平.单片机与嵌入式系统应用,第9期. 2003 *
带优先权的时间片多任务分配新算法. 龚龙庆,张平.电子设计应用,第8期. 2003 *

Also Published As

Publication number Publication date
CN1604573A (zh) 2005-04-06

Similar Documents

Publication Publication Date Title
CN107018484B (zh) 蓝牙通信方法、其装置、蓝牙系统及蓝牙设备
US7295553B2 (en) Packet buffer
KR100293756B1 (ko) 데이터 통신 네트워크에서 폭주 제어를 제공하기 위한 방법 및그 시스템
US8488501B2 (en) Network assisted power management
CA2297650A1 (en) Networking systems
ATE462264T1 (de) Empfangen von daten gemäss eines datentransferprotokolls von daten, die ein beliebiges einer mehrzahl von empgangsgeräten gerichtet sind
CA2308280A1 (en) System and method for capacity shaping in an internet environment
CN103001722A (zh) 一种基于时间触发以太网的数据传输方法及节点设备
CA2093849A1 (en) Controller for input-queued packet switch
GB2426096A (en) Method for reducing energy consumption of buffered applications using simultaneous multi-threaded processor
CN110995598B (zh) 一种变长报文数据处理方法和调度装置
CN109561513A (zh) 一种分布式无冲突自组网多址接入协议
BR0012026A (pt) Processo para reduzir o atraso da transmissão de dados de pacote, e, estação base
CN102195885A (zh) 报文处理方法及装置
CN105025585A (zh) 低功耗的网络多址接入方法
CN100384181C (zh) 一种ip网络环境下的多路音频缓冲处理的方法
CN103220800A (zh) 多信道跳频接入系统的信道控制方法及装置
TW200423659A (en) Frame transmission method of wireless local area network
CN103339991B (zh) 多载频功放资源的控制方法以及装置
Kim et al. Mathematical analysis of burst transmission scheme for IEEE 802.3 az energy efficient Ethernet
CA2308963A1 (en) Method for improving efficiency in a time sharing network
CN105453618A (zh) 上行资源分配方法、接入终端及接入点
US20100085905A1 (en) Communication system and wireless communication device
CN104022965A (zh) 一种报文出队调度的方法和设备
CN104899105A (zh) 一种进程间通信方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080423

Termination date: 20121109