CN101518001A - 具有减少的延迟的网络抖动平滑 - Google Patents
具有减少的延迟的网络抖动平滑 Download PDFInfo
- Publication number
- CN101518001A CN101518001A CNA2007800342204A CN200780034220A CN101518001A CN 101518001 A CN101518001 A CN 101518001A CN A2007800342204 A CNA2007800342204 A CN A2007800342204A CN 200780034220 A CN200780034220 A CN 200780034220A CN 101518001 A CN101518001 A CN 101518001A
- Authority
- CN
- China
- Prior art keywords
- broadcast
- grouping
- jitter
- buffer
- postpones
- 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
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A61—MEDICAL OR VETERINARY SCIENCE; HYGIENE
- A61P—SPECIFIC THERAPEUTIC ACTIVITY OF CHEMICAL COMPOUNDS OR MEDICINAL PREPARATIONS
- A61P25/00—Drugs for disorders of the nervous system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/062—Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/062—Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
- H04J3/0632—Synchronisation of packets and cells, e.g. transmission of voice via a packet network, circuit emulation service [CES]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/062—Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers
- H04J3/0626—Synchronisation of signals having the same nominal but fluctuating bit rates, e.g. using buffers plesiochronous multiplexing systems, e.g. plesiochronous digital hierarchy [PDH], jitter attenuators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Chemical & Material Sciences (AREA)
- Organic Chemistry (AREA)
- Neurology (AREA)
- Neurosurgery (AREA)
- Chemical & Material Sciences (AREA)
- Chemical Kinetics & Catalysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Medicinal Chemistry (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Biomedical Technology (AREA)
- Pharmacology & Pharmacy (AREA)
- Life Sciences & Earth Sciences (AREA)
- Animal Behavior & Ethology (AREA)
- General Health & Medical Sciences (AREA)
- Public Health (AREA)
- Veterinary Medicine (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
描述了一种补偿分组流中的抖动的方法。该方法包括将从分组流的分组中提取的未解码的帧置于抖动缓冲区中,同时解码来自抖动缓冲区的帧,并将经解码的帧以使用平均播出延迟所确定的速率来置于样本缓冲区中。平均播出延迟是在每一分组可用时所计算的每一分组的播出延迟的移动平均。每一分组的播出延迟是样本缓冲区延迟和抖动缓冲区延迟之和。在接收到每一分组时,基于与所接收到的分组相关联的播出延迟与当前平均播出延迟之间的比较,来调整平均播出延迟。
Description
背景
计算设备所使用的通信网络,如网际协议(IP)网络,以分组来传输数据。分组是以专用于传输的方式所组织的一些数据。分组包括头部和正文。正文包含数据而头部包含某些控制信息,包括目的地址、分组大小、错误检验码,等等。来自计算设备的数据被插入分组中,且该分组被发送到提取并使用该数据的另一计算设备。例如,连接到话筒的计算设备可被用来记录口语消息,并且使用分组来将该口语消息传输到通过扬声器回放该口语消息的第二计算设备。
为使用分组传输口语消息,该口语消息被记录为模拟音频信号。模数转换器(ADC)被用来将该音频信号转换为数字信号。该数字信号被编码/解码器(编解码器)转换为经编码的二进制数据。编码二进制数据通常涉及压缩数据。二进制数据被分为不同的帧,并被置于缓冲区中。分组器从缓冲区中提取一个或多个帧,并将这些帧放入一个或多个分组中。这些分组通过网络被发送到回放计算设备。分组读取器读取分组,并从这些分组中提取一个或多个帧,并将这些帧放入缓冲区中。从缓冲区中提取的这些帧和包括在这些帧中的经编码的二进制数据,由编解码器解码并被转换为数字信号。数字信号由数模转换器(DAC)转换为模拟音频信号。该音频信号驱动扬声器,这再现原始的口语消息。
因为通信网络是网络设备的集合,所以未丢失的分组传递所花费的时间有限。分组传递时间由于各种延迟源而变化,诸如但不限于,分组在传输线上所经过的物理距离、用来路由分组的网络路由器和交换机的性能差异、以及“时钟漂移”——发送和接收分组的计算设备之间的时间差。取决于分组在被发送时所遇到的延迟源的数量和类型,延迟的持续时间随时间变化。分组的延迟的变化被称为“统计离差”或较不正式地称为“抖动”。网络中抖动越多,越难以维持恒定的分组传递速率,这又使得更难以准确地再现通过网络发送的音频信号。
实际上,抖动可被定义为例如几毫秒的一小段时间上的最大分组延迟减去最小分组延迟。最大分组延迟和最小分组延迟之间的差的绝对值,即抖动,不像具有足够大的缓冲区以包含在该小段时间即短期内所接收到的多个分组那样重要。测量抖动启用用于适应音频信号以准确地再现信号所表示的音频输出的技术。优选地,信号适应是长期来提供的,即在例如约一秒的相对长的一段时间上分组延迟的改变。如果长期分组延迟增加,则该音频信号被扩充。如果长期分组延迟降低,则该音频信号被压缩。有许多压缩和扩充音频信号的方式。例如,为压缩音频信号,可以移除包含很少或不包含有用信息的小的信号片段;为扩充音频信号,可以复制和重复小的信号片段。
通过信号压缩或扩充来补偿抖动必须小心地完成,切不可过度。例如,如果音频信号对一人的语音编码,且该音频信号被过度压缩,则所产生的可听语音可能听上去很快。如果同一音频信号被过度扩充,则所产生的可听语音可能听上去很慢。因此,为补偿抖动所作出的调整必须足够慢且足够小心地完成,以便令人满意地再现原始话语。
用于确定何时应用如信号压缩和扩充等抖动补偿技术的传统方法,通常要求将抖动源测量、量化、并记录为各个值。这些值随后被用来确定何时应用补偿抖动的影响的技术。
概述
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征,也不旨在用于帮助确定所要求保护的主题的范围。
公开了一种补偿分组流中的抖动的方法。该方法包括从分组流的分组中提取未解码的帧,并将这些未解码的帧置于抖动缓冲区中,同时解码来自抖动缓冲区的各帧,并将经解码的各帧置于样本缓冲区中。未解码的帧被置于抖动缓冲区中,而以通过平均播出延迟所确定的速率将经解码的帧置于样本缓冲区中。平均播出延迟是在每一分组可用时所计算的每一分组的播出延迟的移动平均。每一分组的播出延迟是样本缓冲区延迟和抖动缓冲区延迟之和。
在接收到每一分组时,调节平均播出延迟以同所接收到的分组相关联的播出延迟——即当前播出延迟更紧密匹配。更具体地,当前播出延迟是所接收的分组中包含的一个或多个经解码帧的预期播出延迟。经解码的帧一旦被置于抖动缓冲区中,即确定当前播出延迟。此时,在经编码的帧被解码和播放——即播出——之前,可以对该经编码的帧将在抖动缓冲区中再保持多久进行粗略的计算。
平均播出延迟与当前播出延迟进行比较。如果当前播出延迟小于平均播出延迟,则减少平均播出延迟的值。如果当前播出延迟大于平均播出延迟,则增加平均播出延迟的值。
附图说明
当结合附图参考以下详细描述时,可以更容易领会并更好地理解本发明的上述方面和许多附加的优点,附图中:
图1是示例性同步数据解码器的框图;
图2是示例性异步数据解码器的框图;
图3是示例性抖动缓冲区和该抖动缓冲区下的相关联的示例性样本缓冲区的图示说明;
图4是随时间记录的分组延迟的示例性图,其中在各时间点处重新配置抖动缓冲区;
图5A是随时间记录的分组延迟的详细视图的示例性图,其中在各时间点处重新配置抖动缓冲区;
图5B是随时间记录的播出延迟的详细视图的示例性图,其中在各时间点处重新配置抖动缓冲区;
图6是与分组相关联的播出延迟di和平均播出延迟Di之间的关系的图示说明;
图7是随时间记录的播出延迟的和表示随时间记录的平均播出延迟的曲线的示例性图;
图8是用于补偿抖动对通过网络发送的信号的影响的示例性方法的流程图;
图9是用于调整平均播出延迟的示例性方法的流程图;以及
图10是用于调整从样本缓冲区中传递帧的示例性方法的流程图。
详细描述
通过诸如IP网络等网络传输的、包含诸如描述音频信号的数据等数据的分组,在每一分组被接收到时,通常由数据解码器,即解码器解码。通常,对分组进行解码涉及解压缩包含在分组中的经压缩的数据。图1是示出接收分组102,解码该分组中的数据,并将所解码的数据作为帧104来传递的示例性解码器100的框图。图1中示出的解码器100接收分组102,并同步地传递帧104。一般而言,随着每一分组到达解码器100,每一分组中的数据立即被解码,且传递包含所解码的数据的一个或多个帧。各帧以与解码器100接收和解码分组的相同速率来传递。
通过网络传输的分组通常受抖动——即分组传递延迟的变化——的影响。用于抵消抖动对诸如图1中示出的解码器100等同步解码器的影响的方法,通常要求测量抖动源,即使抖动源在远程设备上。例如,可能需要测量、量化、和记录因分组在本地设备和远程设备之间经过的距离而引起的传输延迟。类似地,也可能需要测量、量化、和记录分组所经过的网络路由器和交换机的性能差异以及远程和本地设备的时钟漂移,以便对同步解码器应用抖动补偿。
诸如图2中示出的拉模型(pull-model)解码器200等异步解码器是对诸如图1中示出的同步解码器100等同步解码器的替换。拉模型解码器是特别地向特定源请求数据的异步解码器。拉模型解码器200接收分组202,解码分组202中的数据,并传递包含经解码的数据的帧204。与同步解码器不同,诸如拉模型解码器200等异步解码器异步地接收分组202和传递帧204。尽管拉模型解码器200能够同时接收分组和传递帧,但分组到达的速率和传递帧的速率不必相同。分组到达拉模型解码器200的速率可以变化,而不必立即改变传递帧的速率。分组输入速率和帧输出速率的去耦例如是通过在需要音频帧的音频应用程序请求帧时传递帧来实现的。
诸如图2中示出的拉模型解码器200等拉模型解码器,使用抖动缓冲区和样本缓冲区来应请求传递帧。图3示出示例性抖动缓冲区300和相关联的示例性样本缓冲区312。诸如示例性抖动缓冲区300等抖动缓冲区,是包括多个存储单元的数据缓冲区。多个单元中的每一单元都能够包含一个未解码的帧。通常,在任何给定的时刻,不是所有的单元都包含帧。例如,单元0304、单元1306、单元2308和单元3310每个都包含帧,而剩余单元可能不包含帧。抖动缓冲区中的未解码的帧以回放顺序来安排,即应回放帧数据的顺序。即,单元0304在单元1306之前播放;单元1306在单元2308之前;且单元2308在单元3310之前。抖动缓冲区300包括指向要读取和移除的单元的指针302。抖动缓冲区的第一单元,如抖动缓冲区300中的单元0304,被称为“抖动头”。在图3-7中,抖动缓冲区的抖动头用斜线阴影来指示。与抖动缓冲区300相关联的示例性样本缓冲区312也在图3中示出。样本缓冲区312包含通过从抖动缓冲区300读取、解码、和移除帧而生成的经解码的帧数据314。
诸如图2中示出的示例性拉模型解码器200等拉模型解码器,通过在接收到分组202时从分组202中提取未解码的帧;以回放顺序将未解码的帧加载到抖动缓冲区300;并在一个或多个帧被请求时从样本缓冲区312传递帧314,来应请求传递帧。在传递帧314时,帧314被从样本缓冲区312中移除。如果样本缓冲区312中没有帧,则拉模型解码器200从抖动缓冲区300中读取并移除“下一”未解码的帧、解码该帧、并将经解码的帧加载到样本缓冲区312。指针302因而移动到要读取的下一单元。优选地,指针302保持在抖动头304的一个或两个单元内。每一传入的分组被置于抖动缓冲区中对应于分组的序列号的单元中。如果存在大量抖动,则插入分组处的指针在第一和第二单元之间来回移动。因此,一小段时间上的最小单元放置距抖动缓冲区头应很少比大约一个单元近。如果只有很少或没有抖动且分组以分组序列号的顺序到达,则连续的分组被置于到达缓冲区的较早部分——例如抖动头的一个帧之内——并从中消费。例如,典型的抖动缓冲区包含大约一到五秒的帧数据,而典型的帧包含大约20毫秒的数据。抖动缓冲区300中的未解码的帧被移除,通过移动到下一可用的单元,剩余的未解码的帧朝向抖动头304移动。
样本缓冲区312中的多个经解码的帧形成可播放的帧314的连续样本。在可播放样本314被从帧缓冲区312中提取并播放后,需要将更多的可播放样本插入到样本缓冲区312中。在样本缓冲区312要求新样本时,未解码的帧从抖动缓冲区300的头被提取,且该帧被解码为样本并被插入到样本缓冲区312。
因为分组到达的延迟可能由于抖动而变化,所以帧被插入抖动缓冲区的速率与向样本缓冲区312请求帧的速率相比是不同的。此处所描述的方法通过使用抖动缓冲区300作为历史窗口来补偿这一不一致性。例如,如果抖动缓冲区300能够存储足够的未解码的帧来提供样本缓冲区中的一秒的音频数据,则该一秒的抖动缓冲区可被看作是一秒的历史窗口。从以下描述可以更好地理解,该方法在该示例中通过对齐一秒的抖动缓冲区以确保抖动缓冲区“覆盖”在其中正传递分组的一秒的历史,来补偿分组延迟和样本请求速率之间的不同。例如,一秒的历史窗口可以包括50个单元,每一单元能够包含20毫秒的未解码的帧数据。优选地,该一秒的抖动缓冲区在时间维度上对齐,以便未解码的帧中的数据需要被回放的各时间点落入抖动缓冲区所覆盖的时间跨度之内。
对齐抖动缓冲区以覆盖传递分组的时间跨度的过程,由图4中示出的随时间记录的分组延迟的示例性图示出。更具体地,图4包括示出随时间记录的分组延迟的分组延迟曲线400。抖动缓冲区在示例性的四个位置402a、402b、402c和402d中示出。抖动缓冲区与分组延迟曲线对齐,以便示例性的四个位置402a、402b、402c和402d处的抖动缓冲区的抖动头的位置处于分组延迟曲线400的四个单元之内。例如,位置402b的抖动缓冲区在位置402a的抖动缓冲区的下面,因为分组延迟曲线400下落了。位置402c处的抖动缓冲区在位置402b的抖动缓冲区的上面,因为分组延迟曲线400上升了。位置402d处的抖动缓冲区在位置402c处的抖动缓冲区的下面,因为分组延迟曲线再次下落了。实际的分组延迟可以比所示出的分组延迟曲线400所指示的或多或少地变化。因此,分组延迟曲线400应被解释为示例性的而非限制性的。
为确定如何调整抖动缓冲区来将抖动缓冲区和分组延迟曲线对齐,计算播出延迟。尽管分组延迟测量分组到达解码器的延迟,而播出延迟估计播出经解码的帧将花费的时间。但在实践中,播出延迟值几乎是相关联的分组延迟的倒数值。分组延迟和播出延迟之间的几乎倒数的关系可以通过比较图5A和5B来看到。图5A是与图4中示出的分组延迟曲线400相似的分组延迟曲线的典型部分的更详细的视图。图5B是与图5A中示出的分组延迟曲线相关联的播出延迟曲线的详细视图。
在图5A中,分组延迟曲线500描绘短的历史窗口上的分组延迟。所示出的分组延迟曲线500定义局部极大值504、508和局部最小值502、506和510。局部极大值504位于局部极小值502和506之间;局部极大值508位于局部极小值506和510之间。抖动缓冲区在三个位置520a、520b和520c示出。位置520a位于局部极小值502和局部极大值504之间;位置520b位于局部极大值504和局部极小值506之间;而位置520c位于局部极小值506和局部极大值508之间。将抖动缓冲区放置成抖动缓冲区头位于播出延迟曲线500的一个单元之内。
因为播出延迟几乎是分组延迟的倒数,所以表示播出延迟的曲线几乎是表示分组延迟的曲线的反曲线。因此,图5B中示出的示例性播出延迟曲线550几乎是图5A中示出的分组延迟曲线500的反曲线。因为播出延迟几乎是分组延迟的倒数,所以分组延迟曲线中的极大值变成相关联的播出延迟曲线中的极小值,而分组延迟曲线中的极小值变成相关联的播出延迟曲线中的极大值。例如,图5A中示出的局部极小值502变成图5B中播出延迟示出的局部极大值552。类似地,局部极大值504变成局部极小值554;局部极小值506变成局部极大值556;局部极大值508变成局部极小值558;而局部极小值510变成局部极大值560。
因为播出延迟曲线几乎是分组延迟曲线的反曲线,所以抖动缓冲区也被倒置成抖动头处于抖动缓冲区的底部。例如,在图5A中,抖动头处于抖动缓冲区的顶部,而在图5B中,抖动头处于抖动缓冲区的底部。抖动缓冲区在位置570a、570b和570c示出。与在图5A中示出的分组延迟曲线500上对齐的抖动缓冲区相类似,抖动缓冲区在图5B中示出的播出延迟曲线550上对齐。
如上所述,抖动缓冲区在三个位置570a、570b和570c示出。这些位置分别与图5A的位置520a、520b和520c对齐。在位置570a处,抖动缓冲区在抖动缓冲区头的一个单元内覆盖播出延迟曲线550在局部极大值552和局部极小值554之间的部分。在位置570b处,抖动缓冲区在抖动缓冲区头的一个单元内覆盖播出延迟曲线550在局部极小值554和局部极大值556之间的部分。在位置570c处,抖动缓冲区在抖动缓冲区头的一个单元内覆盖播出延迟曲线550在局部极大值556和局部极小值558之间的部分。
调整抖动缓冲区的位置,使得抖动头在抖动缓冲区头的一个单元内覆盖或近乎覆盖播出延迟曲线,这涉及调整平均播出延迟。图6是与一分组相关联的播出延迟di和平均播出延迟Di、抖动缓冲区600和抖动缓冲区头602之间的关系的图示说明。优选地,抖动缓冲区600的头602覆盖平均播出延迟曲线610和播出延迟曲线620。抖动头602和平均播出延迟曲线610之间的距离由Di所表示的距离给出。抖动头602和包括样本延迟的播出延迟曲线620之间的距离由di所表示的距离给出。
调整抖动缓冲区600的位置使得抖动头602覆盖或近乎覆盖播出延迟曲线620的方法,通过设置用于抖动控制的、通常为0的最小延迟值Dmin和设置用于抖动控制的、通常为0的最大延迟值Dmax来开始。如果分组可以从在抖动缓冲区600中获得,则该分组被解码且抖动缓冲区600被移位以将下一分组移动到抖动头。经解码的分组产生被追加到例如样本缓冲区312等样本缓冲区中的最后一个样本的新样本。如果分组不可从抖动缓冲区600中获得,则通过使用合成的样本来压缩或扩充该信号以隐藏缺少的分组,且用来压缩或扩充该信号的合成的样本被追加到样本缓冲区312中的最后一个样本。
在该方法的开始处设置的Dmax和Dmin的值被用来确定是压缩还是扩充该信号。如果Di大于Dmax,则该信号被压缩,且Di被减去同一对应的时间缩减量。如果Di小于Dmin,则该信号被扩充,且Di被加上同一对应的时间增加量。如果Di不大于Dmax且Di不小于Dmin,则不改变该信号而Di的值被改变。在该点处,从样本缓冲区312返回所请求的数量的样本。
本领域技术人员将认识到,如何压缩或扩充信号取决于该信号是“语音的”还是“非语音的”。语音信号包含有用的信息,而非语音信号包含无声、背景噪音、或诸如“沙”或“咝”等声音。如果信号是非语音的,则该信号可以使用基于噪声的方法来扩充。在这种扩充方法中,样本可被扩充为长达帧长度的1.5倍。还有可能将样本扩充为大于或小于1.5倍帧长度。因此,将样本扩充为长达帧长度的1.5倍应被解释为示例性的而非限制性的。例如,如果帧长度为20毫秒,则可以通过插入噪声样本来延长帧,直到该帧的长度为30毫秒为止。如果信号是语音的,则该信号可以通过重复基音周期或通过根据旧的基音周期生成新的基音周期来延长。对于语音信号,帧扩充后的长度取决于基音周期的大小。例如,如果基音周期横跨5毫秒,则帧的长度可以5毫秒增量来延长。因此,用于扩充语音信号的技术是信号相关的。本领域技术人员将认识到,为压缩非语音信号,使用窗口操作或样本消除来裁剪以及合并样本。通常,有可能将信号帧压缩到所需长度,例如帧长度的一半。为压缩语音信号,移除或合并基音周期。因此,帧压缩后的长度取决于基音周期的大小,且用于扩充语音信号的技术是信号相关的。
如上所述,如果信号被压缩,则Di的值被减去同一对应的时间缩减量;如果信号被扩充,则Di的值被加上同一对应的时间增加量。Di的值可以根据信号压缩和扩充使用信号长度来调整。如果信号具有长度Norig且该信号长度变为Nnew,则Di被如下修改:Di(新)=Di(旧)+(Nnew-Norig)/S,其中S是采样速率(如每秒16000个样本),且结果单位是秒。本领域技术人员通常将诸如平均播出延迟曲线610等平均播出延迟曲线称为“包络”。下一次接收到分组时,包络基于Di(新)而非Di(旧)来更新。换言之,Di(新)可被立即用来重写Di(旧)。
优选地,平均播出延迟Di减少或增加的量是根据所使用的传输协议的类型来确定的。例如,传输控制协议(TCP)要求较快的适应,并且因而要求比用户数据报协议(UDP)更大的调整量。对于UDP,如果di小于Di,则Di(新)=0.998*Di(旧)+0.002*di;否则,Di(新)=di。对于TCP,如果di小于Di,则Di(新)=0.950*Di(旧)+0.050*di;否则,Di(新)=0.9*Di(旧)+0.1*di。
示出使用上述技术调整抖动缓冲区的位置使得抖动头覆盖播出延迟曲线的示例性图在图7中示出。图7中的图包括示例性播出延迟曲线700、示例性平均播出延迟曲线710——即包络710、和在五个位置示出的抖动缓冲区720。播出延迟曲线700是实线。包络710是虚线。注意,包络710比播出延迟曲线700随时间改变得缓慢得多。优选地,尽可能地,调整抖动头使得抖动头接近于包络710。例如,抖动缓冲区720在位置720A、720B、720C、720D和720E处示出。在位置720A、720B、720C、720D和720E处,调整抖动缓冲区使得抖动头与包络710非常接近,且抖动缓冲区的第二单元覆盖包络710。在位置720B处,抖动缓冲区在包络710上方且抖动头在包络710上方。随时间流逝,抖动缓冲区和抖动头降低并与包络710对齐。
用于调整抖动头和抖动缓冲区来将抖动头与包络对齐,以补偿抖动对通过网络传输的信号的影响的示例性方法由图8中的流程图示出。注意,对于大多数设备,在应用该示例性方法时,优选地,以恒定的速率传递样本。因此,优选地,样本被以恒定的速率从样本缓冲区中拉出。为适应分组延迟量上的改变并仍然维持恒定的样本传递速率,样本缓冲区中的样本被收缩,即被压缩以确保样本缓冲区中存在较少的样本,或被扩充以确保样本缓冲区中存在较多样本。改变样本缓冲区中样本的数量间接控制抖动缓冲区移位得多快。如果样本缓冲区中存在较多样本,则不太需要移位抖动缓冲区,这适应较长的分组延迟。如果样本缓冲区中存在较少样本,则更需要移位抖动缓冲区,这适应较短的分组延迟。
图8中示出的示例性方法在框800处开始。在其中接收到分组的框800处,如图9所示使用所接收到的分组的播出延迟来调整平均播出延迟。在框802处,从样本缓冲区中拉出样本,并如图10所示使用平均播出延迟来调整样本传递。注意,框800中的动作与框802中的动作异步地发生。因此,框800和802中的动作几乎可以同时执行。
图9是用于调整平均播出延迟——即图8的框800中的动作——的示例性方法的流程图。该方法在图9的框900处开始,在此,接收分组。在框902处,将所接收到的分组的时间戳和/或序列号与抖动头中的分组进行比较。时间戳和/或序列号被用来确定将该分组置于抖动缓冲区中的哪里。如果时间戳或序列号指示,该分组中的一个或多个帧应被置于抖动头分组之前,则抖动头分组被向后移动以允许该分组中的帧被插到抖动头之前。或者,时间戳或序列号可以改为指示该分组中的一个或多个帧应被直接置于抖动缓冲区中最后被占用的单元之后或其它单元中。抖动缓冲区中有可能存在临时的“空穴(hole)”,即某些抖动缓冲区单元被占用而其它暂时未被占用。
在实践中,将抖动头帧向后移动以允许分组中的帧被插入到抖动头之前的需求,通常在所使用的传输协议是TCP且分组大量猝发延迟时发生。对于其它传输协议,例如UDP,这种迟到的分组可改为被丢弃,从而允许抖动头帧向后移位一个单元或根本不移位。
在图9的框904处继续,帧——即未解码的帧,被置于抖动缓冲区中。在框906处,计算播出延迟di。在框908处,在播出延迟di和平均播出延迟Di之间进行比较。如果di小于Di,即播出延迟小于平均播出延迟,则控制前进至框910。否则,控制前进至框912。在框910处,使用上述技术使Di缓慢地适应di。在框912处,使用上述技术使Di快速地适应di。在框910和912处,该方法结束。
图10是用于拉出样本并使用所计算出的平均播出延迟调整样本传递速率——即图8的框802中示出的动作——的示例性方法的流程图。该方法在图10的框1000处开始,在此,请求拉出样本,即向诸如样本缓冲区312等样本缓冲区请求样本。在框1002处,进行测试以确定样本缓冲区中是否有足够的样本。如果样本缓冲区中存在足够的样本,则控制前进至框1018,在其中传递样本。如果样本缓冲区中没有足够的样本,则控制前进至判定框1004。在判定框1004处,进行测试以确定是否接收到抖动缓冲区中的第一分组,即抖动头中的分组。如果接收到抖动缓冲区中的第一分组,则控制前进至框1006,在其中解码分组且该分组经解码的帧被置于样本缓冲区中。如果未接收到第一分组,则控制前进至框1008。在框1008处,通过使用合成样本来隐藏因为第一分组不可用而缺少的帧。该方法继续至框1010,在其中或经解码的或合成的样本被置于样本缓冲区中。在判定框1012处,将Di与平均播出延迟的所需范围进行比较。如果Di在所需范围之内,则控制前进至框1018,在其中传递样本。如果Di是低的,即低于所需范围的最小值,则控制前进至框1014。如果Di是高的,即高于所需范围的最大值,则控制前进至框1016。在框1014处,使用上述技术来扩充信号。在框1016处,使用上述技术来压缩信号。在框1018处,传递样本且该方法结束。
尽管示出和描述了各说明性实施例,但是可以认识到,可在其中作出各种改变而不背离本发明的精神和范围。
Claims (20)
1.一种补偿分组流中的抖动的方法,包括:
根据形成所述分组流的分组的延迟来调整平均播出延迟的值;以及
使用所述经调整的平均播出延迟来调整从样本缓冲区中拉出样本的速率。
2.如权利要求1所述的方法,其特征在于,包括将从所述分组中提取的未解码的帧存储在具有抖动头的抖动缓冲区中。
3.如权利要求2所述的方法,其特征在于,根据形成所述分组流的分组的延迟来调整平均播出延迟的值,包括:
a)将与来自所述分组流的分组相关联的序列指示符和与所述抖动头中的分组相关联的序列指示符进行比较;
b)基于所述序列指示符的比较,将未解码的帧置于所述抖动缓冲区中;
c)计算所述播出延迟;以及
d)如果所述播出延迟小于所述平均播出延迟,则使所述平均播出延迟快速地适应所述播出延迟;否则,使所述平均播出延迟缓慢地适应所述播出延迟。
4.如权利要求3所述的方法,其特征在于,所述序列指示符是时间戳。
5.如权利要求3所述的方法,其特征在于,所述序列指示符是序列号。
6.如权利要求3所述的方法,其特征在于,使所述平均播出延迟缓慢地适应所述播出延迟是基于下式的:Di(新)=0.950*Di(旧)+0.050*di,其中Di表示在接收到分组时所述抖动头和所述平均播出延迟之间的距离,而di表示所述与分组相关联的播出延迟。
7.如权利要求3所述的方法,其特征在于,使所述平均播出延迟快速地适应所述播出延迟是基于下式的:Di(新)=0.9*Di(旧)+0.1*di,其中Di表示在接收到分组时所述抖动头和所述平均播出延迟之间的距离,而di表示所述与分组相关联的播出延迟。
8.如权利要求3所述的方法,其特征在于,使所述平均播出延迟缓慢地适应所述播出延迟是基于下式的:Di(新)=0.998*Di(旧)+0.002*di,其中Di表示在接收到分组时所述抖动头和所述平均播出延迟之间的距离,而di表示所述与分组相关联的播出延迟。
9.如权利要求3所述的方法,其特征在于,使所述平均播出延迟快速地适应所述播出延迟是基于下式的:Di(新)=di,其中Di表示在接收到分组时所述抖动头和所述平均播出延迟之间的距离,而di表示所述与分组相关联的播出延迟。
10.如权利要求1所述的方法,其特征在于,根据所述经调整的平均播出延迟调整所述从样本缓冲区拉出样本的速率包括,确定所述样本缓冲区中是否存在足够的样本来响应拉出样本请求,并且如果所述样本缓冲区中不存在足够的样本来响应拉出样本请求,则为所述样本缓冲区产生附加样本。
11.如权利要求10所述的方法,其特征在于,为所述样本缓冲区产生附加样本包括,确定是否接收到所述抖动缓冲区中的第一分组,并且如果接收到所述抖动缓冲区中的第一分组,则解码所述分组;否则,隐藏所述分组。
12.如权利要求11所述的方法,其特征在于,还包括比较所述平均播出延迟与预选择的所需范围,并且如果实际播出延迟低于所述所需范围的最小值,则扩充所述信号。
13.如权利要求12所述的方法,其特征在于,还包括如果所述实际播出延迟大于所述所需范围的最大值,则压缩所述信号。
14.一种补偿分组流中的抖动的方法,包括:
将从形成数据流的分组中提取的未解码的帧置于抖动缓冲区中;
解码来自所述抖动缓冲区中的帧;以及
以通过平均播出延迟确定的速率将经解码的各帧置于样本缓冲区中,所述平均播出延迟通过为形成所述数据流的每一分组所计算的播出延迟的移动平均来确定。
15.如权利要求14所述的方法,其特征在于,所述每一分组的播出延迟是样本缓冲区延迟和抖动缓冲区延迟之和。
16.如权利要求15所述的方法,其特征在于,在接收到每一分组时,基于与所接收到的分组相关联的播出延迟与所述当前平均播出延迟之间的比较,来调整所述平均播出延迟。
17.如权利要求16所述的方法,其特征在于,所述平均播出延迟通过以下来调整:确定所述样本缓冲区中是否存在足够的样本来响应拉出样本请求,并且如果所述样本缓冲区中不存在足够的样本来响应拉出样本请求,则为所述样本缓冲区产生附加样本。
18.如权利要求17所述的方法,其特征在于,为所述样本缓冲区产生附加样本包括,确定是否接收到所述抖动缓冲区中的第一分组,并且如果接收到所述抖动缓冲区中的第一分组,则解码所述分组;否则,隐藏所述分组。
19.如权利要求18所述的方法,其特征在于,还包括比较所述平均播出延迟与预选择的所需范围,并且如果实际播出延迟低于所述所需范围的最小值,则扩充所述信号。
20.如权利要求19所述的方法,其特征在于,还包括如果所述实际播出延迟大于所述所需范围的最大值,则压缩所述信号。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/522,268 US8483243B2 (en) | 2006-09-15 | 2006-09-15 | Network jitter smoothing with reduced delay |
US11/522,268 | 2006-09-15 | ||
PCT/US2007/076958 WO2008033663A1 (en) | 2006-09-15 | 2007-08-28 | Network jitter smoothing with reduced delay |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101518001A true CN101518001A (zh) | 2009-08-26 |
CN101518001B CN101518001B (zh) | 2013-03-27 |
Family
ID=39184110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800342204A Active CN101518001B (zh) | 2006-09-15 | 2007-08-28 | 用于补偿分组流中的抖动的方法 |
Country Status (10)
Country | Link |
---|---|
US (2) | US8483243B2 (zh) |
EP (1) | EP2084873B1 (zh) |
JP (1) | JP4945638B2 (zh) |
KR (1) | KR101411197B1 (zh) |
CN (1) | CN101518001B (zh) |
AU (1) | AU2007297062B2 (zh) |
BR (1) | BRPI0714231A2 (zh) |
MX (1) | MX2009002294A (zh) |
RU (2) | RU2439828C2 (zh) |
WO (1) | WO2008033663A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102823137A (zh) * | 2010-03-29 | 2012-12-12 | 飞思卡尔半导体公司 | 弥补注入锁定的装置及方法 |
CN106230661A (zh) * | 2016-08-01 | 2016-12-14 | 北京大学 | 网络数据延迟控制方法 |
CN108966028A (zh) * | 2018-08-17 | 2018-12-07 | 上海悠络客电子科技股份有限公司 | 一种基于网络状况动态调节播放速度的防抖动方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8274889B2 (en) * | 2008-03-18 | 2012-09-25 | International Business Machines Corporation | Method, system and computer program product involving congestion detection in ethernet |
US20150256613A1 (en) * | 2014-03-10 | 2015-09-10 | JamKazam, Inc. | Distributed Metronome For Interactive Music Systems |
KR102422794B1 (ko) * | 2015-09-04 | 2022-07-20 | 삼성전자주식회사 | 재생지연 조절 방법 및 장치와 시간축 변형방법 및 장치 |
KR20210096921A (ko) * | 2020-01-29 | 2021-08-06 | 삼성전자주식회사 | 스트리밍 데이터를 처리하는 방법 및 전자 장치 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5440562A (en) * | 1993-12-27 | 1995-08-08 | Motorola, Inc. | Communication through a channel having a variable propagation delay |
US6434606B1 (en) * | 1997-10-01 | 2002-08-13 | 3Com Corporation | System for real time communication buffer management |
CA2299943A1 (en) * | 2000-03-03 | 2001-09-03 | Shane M. Rogers | Apparatus for adjusting a local sampling rate based on the rate of reception of packets |
US6775301B1 (en) * | 2000-03-08 | 2004-08-10 | 3Com Corporation | System and method for compensating for channel jitter |
US6862298B1 (en) * | 2000-07-28 | 2005-03-01 | Crystalvoice Communications, Inc. | Adaptive jitter buffer for internet telephony |
US20040204935A1 (en) * | 2001-02-21 | 2004-10-14 | Krishnasamy Anandakumar | Adaptive voice playout in VOP |
US7110416B2 (en) * | 2001-09-04 | 2006-09-19 | Nokia Corporation | Method and apparatus for reducing synchronization delay in packet-based voice terminals |
US7319703B2 (en) * | 2001-09-04 | 2008-01-15 | Nokia Corporation | Method and apparatus for reducing synchronization delay in packet-based voice terminals by resynchronizing during talk spurts |
CN1464685A (zh) * | 2002-06-13 | 2003-12-31 | 优创科技(深圳)有限公司 | 一种在网络终端缓冲区中处理音频流回放的方法 |
KR100994940B1 (ko) | 2002-07-19 | 2010-11-19 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 전송 매체를 통해 송신기로부터 수신기로 데이터 패킷들을 송신하는 방법 및 전송 매체를 통해 상호 결합된 송신기 및 수신기를 포함하는 전송 시스템 |
US7362770B2 (en) * | 2002-09-06 | 2008-04-22 | Lsi Logic Corporation | Method and apparatus for using and combining sub-frame processing and adaptive jitter-buffers for improved voice quality in voice-over-packet networks |
DE502004011378D1 (de) * | 2003-03-20 | 2010-08-26 | Siemens Ag | Verfahren und Jitterpufferregelschaltung zur Regelung eines Jitterpuffers |
US7457282B2 (en) * | 2003-10-29 | 2008-11-25 | Nokia Corporation | Method and apparatus providing smooth adaptive management of packets containing time-ordered content at a receiving terminal |
US7424026B2 (en) * | 2004-04-28 | 2008-09-09 | Nokia Corporation | Method and apparatus providing continuous adaptive control of voice packet buffer at receiver terminal |
JP4534582B2 (ja) * | 2004-05-07 | 2010-09-01 | ソニー株式会社 | 音声ストリーム再生装置及び音声ストリーム再生方法 |
JP4146489B2 (ja) * | 2004-05-26 | 2008-09-10 | 日本電信電話株式会社 | 音声パケット再生方法、音声パケット再生装置、音声パケット再生プログラム、記録媒体 |
DE102004039186B4 (de) * | 2004-08-12 | 2010-07-01 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Kompensation von Laufzeitschwankungen von Datenpaketen |
KR100631514B1 (ko) * | 2004-12-16 | 2006-10-09 | 엘지전자 주식회사 | 실시간 스트리밍 서비스의 전송률 제어 방법 |
-
2006
- 2006-09-15 US US11/522,268 patent/US8483243B2/en active Active
-
2007
- 2007-08-28 JP JP2009528378A patent/JP4945638B2/ja active Active
- 2007-08-28 WO PCT/US2007/076958 patent/WO2008033663A1/en active Application Filing
- 2007-08-28 EP EP07814497.9A patent/EP2084873B1/en active Active
- 2007-08-28 RU RU2009109202/08A patent/RU2439828C2/ru not_active IP Right Cessation
- 2007-08-28 AU AU2007297062A patent/AU2007297062B2/en active Active
- 2007-08-28 CN CN2007800342204A patent/CN101518001B/zh active Active
- 2007-08-28 MX MX2009002294A patent/MX2009002294A/es active IP Right Grant
- 2007-08-28 BR BRPI0714231-5A patent/BRPI0714231A2/pt not_active IP Right Cessation
- 2007-08-28 KR KR1020097005329A patent/KR101411197B1/ko active IP Right Grant
-
2011
- 2011-08-30 RU RU2011136136/07A patent/RU2596808C2/ru not_active IP Right Cessation
-
2013
- 2013-07-09 US US13/938,031 patent/US9479276B2/en active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102823137A (zh) * | 2010-03-29 | 2012-12-12 | 飞思卡尔半导体公司 | 弥补注入锁定的装置及方法 |
CN102823137B (zh) * | 2010-03-29 | 2015-04-15 | 飞思卡尔半导体公司 | 弥补注入锁定的装置及方法 |
CN106230661A (zh) * | 2016-08-01 | 2016-12-14 | 北京大学 | 网络数据延迟控制方法 |
CN106230661B (zh) * | 2016-08-01 | 2019-05-14 | 北京大学 | 网络数据延迟控制方法 |
CN108966028A (zh) * | 2018-08-17 | 2018-12-07 | 上海悠络客电子科技股份有限公司 | 一种基于网络状况动态调节播放速度的防抖动方法 |
CN108966028B (zh) * | 2018-08-17 | 2021-04-30 | 上海悠络客电子科技股份有限公司 | 一种基于网络状况动态调节播放速度的防抖动方法 |
Also Published As
Publication number | Publication date |
---|---|
BRPI0714231A2 (pt) | 2013-01-15 |
JP4945638B2 (ja) | 2012-06-06 |
US9479276B2 (en) | 2016-10-25 |
RU2011136136A (ru) | 2013-03-10 |
MX2009002294A (es) | 2009-03-20 |
AU2007297062A1 (en) | 2008-03-20 |
EP2084873B1 (en) | 2018-07-11 |
US20080069127A1 (en) | 2008-03-20 |
KR101411197B1 (ko) | 2014-06-24 |
RU2439828C2 (ru) | 2012-01-10 |
EP2084873A1 (en) | 2009-08-05 |
US20130294463A1 (en) | 2013-11-07 |
RU2009109202A (ru) | 2010-09-20 |
KR20090058522A (ko) | 2009-06-09 |
WO2008033663A1 (en) | 2008-03-20 |
EP2084873A4 (en) | 2016-12-21 |
RU2596808C2 (ru) | 2016-09-10 |
CN101518001B (zh) | 2013-03-27 |
US8483243B2 (en) | 2013-07-09 |
AU2007297062B2 (en) | 2010-10-28 |
JP2010504039A (ja) | 2010-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1886307B1 (en) | Robust decoder | |
KR100968928B1 (ko) | 오디오 스트림 및 비디오 스트림의 동기화 장치 및 방법 | |
CN101518001B (zh) | 用于补偿分组流中的抖动的方法 | |
US7710982B2 (en) | Sound packet reproducing method, sound packet reproducing apparatus, sound packet reproducing program, and recording medium | |
EP1423930B1 (en) | Method and apparatus for reducing synchronization delay in packet-based voice terminals by resynchronizing during talk spurts | |
US9406302B2 (en) | Method and apparatus for processing a multi-channel audio signal | |
WO2006137425A1 (ja) | オーディオ符号化装置、オーディオ復号化装置およびオーディオ符号化情報伝送装置 | |
CN100390772C (zh) | 使漂移数据流重新同步的系统和方法 | |
KR20010083780A (ko) | 멀티미디어 신호를 전송하기 위한 전송 시스템 | |
US7444281B2 (en) | Method and communication apparatus generation packets after sample rate conversion of speech stream | |
WO2002049364A3 (en) | Method and apparatus for adaptive bit rate control in an asynchronized encoding system | |
JP4862136B2 (ja) | 音声信号処理装置 | |
JP2000330592A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150430 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150430 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |