CN102984091B - 抖动缓冲器 - Google Patents
抖动缓冲器 Download PDFInfo
- Publication number
- CN102984091B CN102984091B CN201210411922.2A CN201210411922A CN102984091B CN 102984091 B CN102984091 B CN 102984091B CN 201210411922 A CN201210411922 A CN 201210411922A CN 102984091 B CN102984091 B CN 102984091B
- Authority
- CN
- China
- Prior art keywords
- data
- wobble buffer
- receiver
- transmitter
- packet
- 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.)
- Active
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 346
- 238000012545 processing Methods 0.000 claims abstract description 133
- 238000004891 communication Methods 0.000 claims abstract description 75
- 238000000034 method Methods 0.000 claims abstract description 60
- 230000005540 biological transmission Effects 0.000 claims abstract description 29
- 238000012937 correction Methods 0.000 claims description 33
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000006073 displacement reaction Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 19
- 230000002349 favourable effect Effects 0.000 description 12
- 238000005457 optimization Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000001934 delay Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009885 systemic effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
Classifications
-
- 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
- H04L65/80—Responding to QoS
-
- 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
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0015—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
- H04L1/0017—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy where the mode-switching is based on Quality of Service requirement
- H04L1/0018—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy where the mode-switching is based on Quality of Service requirement based on latency requirement
-
- 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
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
- H04L7/005—Correction by an elastic buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0009—Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
用于从发送器发送实时通信事件数据到接收器的抖动缓冲器的方法、发送器和计算机程序产品,所述方法包括联合确定(i)至少一个处理参数,该处理参数描述数据是如何被处理以从发送器发送到抖动缓冲器,以及(ii)抖动缓冲器控制信息,用于指示接收器如何控制抖动缓冲器状态。发送抖动缓冲器控制信息到接收器。根据所确定的至少一个处理参数处理数据以从发送器发送到抖动缓冲器;并且从发送器发送处理后的数据到接收器的抖动缓冲器。
Description
技术领域
本发明涉及抖动缓冲器。特别地,本发明涉及从发送器发送实时通信事件数据到接收器的抖动缓冲器。
背景技术
在实时通信事件中,如音频或视频呼叫,发送器可以通过通信信道发送数据给接收器。通信信道可以存在于多个不同的可能的网络中的一个(或多个)中。例如,通信信道可存在于互联网上或如移动电信网络的无线网络上。不利地,当数据(可以数据分组的形式被发送)通过通信信道发送,该数据可能被延迟或损坏。当数据通过通信信道发送,可采用多种技术处理数据的延迟或损坏。
作为一个示例,抖动缓冲器可以被用在接收器,以消除实时通信事件中数据发送延迟的变化的影响。尽管存在数据分组传播延迟(称为抖动)的随机变化,但这仍然增加了在接收器实现数据的连续回放的可能性。抖动缓冲器被放置在接收器,并被用于在接收器开始回放之前累积一些数据分组,从而引入额外的延迟(抖动缓冲器延迟)到通信事件,以帮助容纳数据分组传播延迟抖动。在通信事件期间,所述抖动缓冲器可根据在数据分组传播延迟中的变化来调整其延迟。所述抖动缓冲器也可以对发自发送器并且乱序地到达接收器的数据进行排序,以使得数据分组可以以正确的顺序在接收器回放。抖动缓冲器也可以丢弃迟到的数据分组,即在实时通信事件中被安排从接收器的抖动缓冲器中播放的时间之后到达抖动缓冲器的数据分组。
抖动缓冲器状态描述了抖动缓冲器的当前条件,并且可以包括,例如,抖动缓冲器延迟、抖动缓冲器大小和/或抖动缓冲器可用空间的指示。抖动缓冲器延迟可以表示为一定量的时间,例如,若干秒(或更常见的是,毫秒)或多个内容帧,例如,音频或视频数据的内容帧。抖动缓冲器大小和抖动缓冲器可用空间可表示为数据的量,例如多个比特、字节或分组。
可以根据多个权衡来控制抖动缓冲器延迟,包括:
1.抖动缓冲器延迟和迟到数据分组的数量(即在从实时通信事件中被安排从接收器的抖动缓冲器中播放的时间之后到达抖动缓冲器的数据分组的数量)之间的权衡。虽然更高的抖动缓冲器延迟减少了迟到数据分组的数量,但所导致的回放延迟的增加,可对实时通信的交互产生不利影响。因此,抖动缓冲器延迟可以与迟到数据分组的数量相平衡。在这种方式中,如果用于通信事件的通信信道的情况变化,以使得迟到数据分组的数据量变化,可控制所述抖动缓冲器延迟以平衡迟到数据分组的数量的变化。
2.抖动缓冲器延迟调整和引入到所接收的信号中的修正量之间的权衡。抖动缓冲器延迟的增加或减少意味着部分信号在接收器比预定播放地更慢或更快,这会导致质量的下降。然而,必要时调整抖动缓冲器延迟,这仍然是有利的,所以抖动缓冲器的调整可以与引入到所接收的信号中的修正量相平衡。
在这种方式中,接收器可以控制使用在通信事件中的抖动缓冲器延迟。
发明内容
本发明人已经认识到,在实时通信事件中数据被处理用于发送到抖动缓冲器的方式和抖动缓冲器状态是彼此链接的。此外,本发明人已经认识到,基于抖动缓冲器状态控制处理参数是有利的,所述处理参数描述在实时通信事件中,数据是如何被处理以从发送器发送到接收器的抖动缓冲器。同样的,基于处理参数控制抖动缓冲器状态是有利的,所述处理参数在实时通信事件中被用于处理数据以从发送器发送到抖动缓冲器。在某些实施例中,处理参数和抖动缓冲器状态可被联合确定。
根据本发明的第一方面,提供了一种从发送器发送实时通信事件数据到接收器的抖动缓冲器的方法,该方法包括:联合确定(i)至少一个处理参数,所述处理参数描述数据是如何被处理以从发送器发送到抖动缓冲器,以及(ii)抖动缓冲器控制信息,用于指示接收器如何控制抖动缓冲器状态;发送抖动缓冲器控制信息到接收器;根据所确定的至少一个处理参数处理数据以从发送器发送到抖动缓冲器;并且从发送器发送处理后的数据到接收器的抖动缓冲器。
可在发送器中执行所述联合确定,并且发送抖动缓冲器控制信息到接收器的步骤可包括从发送器向接收器发送抖动缓冲器控制信息。或者,可在控制节点执行所述联合确定,并且发送抖动缓冲器控制信息到接收器的步骤可包括从控制节点向接收器发送抖动缓冲器控制信息,并且所述方法可以进一步包括从控制节点向发送器发送至少一个处理参数的指示。
有利的是,所述(多个)处理参数和抖动缓冲器控制信息被联合确定。当已处理的数据被发送到抖动缓冲器,这允许数据以适于抖动缓冲器状态的方式(根据处理参数)被处理。
所述至少一个处理参数可包括影响已处理数据随后在接收器如何被处理以便在接收器播放的任何参数。例如,所述至少一个处理参数可包括以下至少一个:(i)编码比特率,在数据的处理期间,数据以该编码比特率被编码,(ii)前向纠错(FEC)深度,(iii)分组延迟,以及(iv)交织延迟。
在一些实施例中,在下列约束中所述(多个)处理参数被确定从而控制所发送的数据的至少一个质量参数:根据抖动缓冲器控制信息指示的抖动缓冲器的所述状态,所发送的数据可从接收器的抖动缓冲中恢复。并且其中所发送的数据的所述至少一个质量参数包括以下至少一个:(i)编码质量、(ii)比特率、以及(iii)防止分组丢失的鲁棒性。
在一些实施例中,所述方法进一步包括:确定至少一个处理参数的调整后的版本;根据至少一个处理参数的调整后的版本确定抖动缓冲器调整后的状态,所述抖动缓冲器调整后的状态适于接收已被处理的数据;并且从发送器向接收器发送指示抖动缓冲器的调整后的状态的额外的抖动缓冲器状态信息,其中,根据至少一个处理参数的调整后的版本,数据被处理以从发送器发送到抖动缓冲器。有利的是,在这些实施例中,额外的抖动缓冲器状态信息允许根据发送器中使用的(多个)处理参数来控制抖动缓冲器状态。在这种方式下,可控制所述抖动缓冲器状态以适于(多个)处理参数,在发送器中使用所述处理参数以处理数据,用于在实时通信事件中向所述抖动缓冲器发送所述数据。此外,确定至少一个处理参数调整后的版本的步骤可以包括确定根据至少一个处理参数调整后的版本处理数据以从发送器发送到抖动缓冲器将导致好处。所述好处可以是,例如,所发送的数据的编码质量、所发送的数据的比特率、所发送的数据防止分组丢失的鲁棒性、或在接收器减少的回放延迟。
在一些实施例中,处理数据以从发送器发送到抖动缓冲器的步骤包括了编码所述数据,并且所述至少一个处理参数包括编码所述数据的编码比特率。该方法可进一步包括从抖动缓冲器控制信息中确定抖动缓冲器的大小或抖动缓冲器中的可用空间,其中,基于所确定的抖动缓冲器的大小或抖动缓冲器中的可用空间,确定所述编码比特率。该方法可进一步包括:确定是抖动缓冲器还是用于实时通信事件的通信信道为从发送器向接收器发送数据的发送路径的瓶颈,其中,基于是抖动缓冲器还是通信信道为所发送数据的发送路径中的瓶颈的确定,可以确定所述编码比特率。
在一些实施例中,所处理的数据包括数据分组流,并且处理数据以从发送器发送到抖动缓冲器的步骤包括:生成与数据分组的至少一个有关的纠正数据单元,并且所述至少一个处理参数包括纠正深度,所述纠正深度设置了数据分组流中被允许与纠正数据单元中的一个相关的最老的和最新的数据分组之间的最大允许位移。所述方法可以进一步包括:从抖动缓冲器控制信息中确定抖动缓冲器延迟,其中,确定所述纠正深度,从而依赖于所确定的抖动缓冲器延迟控制通过使用纠正数据单元在接收器中恢复所发送的数据分组所引起的延迟。例如,使用纠正数据单元在接收器处恢复所发送的数据分组所引起的延迟,可对应于所确定的抖动缓冲器延迟。在一个示例中,所述纠正数据单元是前向纠错数据单元,并且纠正深度是前向纠错深度。
在一些实施例中,所述数据包括数据单元流,并且处理数据以从发送器发送到抖动缓冲器的步骤包括:将数据单元分组为数据分组以用于发送,并且所述至少一个处理参数包括分组延迟,所述分组延迟设置了数据单元分组为数据分组所导致的数据单元的最大允许延迟。抖动缓冲器控制信息可确定抖动缓冲器延迟,其中,确定所述分组延迟依赖于所确定的抖动缓冲器延迟。例如,分组延迟可以被确定以使得它对应于所确定的抖动缓冲器延迟。
在一些实施例中,所述数据包括数据单元流,处理数据以从发送器发送到抖动缓冲器的步骤可以包括:交织至少一些数据单元以用于发送,并且所述至少一个处理参数可以包括交织延迟,所述交织延迟设置了交织所述数据单元所导致的数据单元的最大允许延迟。抖动缓冲器控制信息可确定抖动缓冲器延迟,其中,确定所述交织延迟依赖于所确定的抖动缓冲器延迟。例如,交织延迟可以被确定以使得它对应于所确定的抖动缓冲器延迟。
抖动缓冲器状态可包括以下至少一个:(i)抖动缓冲器大小,(ⅱ)抖动缓冲器延迟,以及(iii)抖动缓冲器中的可用空间。抖动缓冲器状态可以是抖动缓冲器的当前状态,或抖动缓冲器的将来状态。
所述联合确定(i)至少一个处理参数,所述处理参数描述数据是如何被处理以从发送器发送到抖动缓冲器,以及(ii)抖动缓冲器控制信息,用于指示接收器如何控制抖动缓冲器状态的步骤可以连续地或周期性地在实时通信事件期间执行。
根据本发明的第二方面,提供了一种发送器,用于发送实时通信事件数据到接收器的抖动缓冲器,所述发送器包括:确定装置,用于联合确定(i)至少一个处理参数,所述处理参数描述数据是如何被处理以从发送器发送到抖动缓冲器,以及(ii)抖动缓冲器控制信息,用于指示接收器如何控制抖动缓冲器状态;处理装置,用于根据所确定的至少一个处理参数处理数据以从发送器发送到抖动缓冲器;以及发送装置,用于将抖动缓冲器控制信息发送到接收器,并且用于从发送器向接收器的抖动缓冲器发送处理后的数据。
根据本发明的第三方面,提供了一种计算机程序产品,用于从发送器发送实时通信事件数据到接收器的抖动缓冲器,该计算机程序产品被实现在非瞬时计算机可读介质上,并被配置为当在处理器上执行时,进行此处描述的方法的步骤。
附图说明
为更好的理解本发明并且示出本发明是如何实施的,将以示例的形式参考附图,其中:
图1示出了根据优选实施例的通信系统;
图2是根据优选实施例的从发送器向接收器发送数据的第一过程的流程图;
图3是一个曲线图,示出在一个示例中的视频帧的序列中的字节数;
图4a示出了如何可以生成FEC数据单元的第一示例;
图4b示出了如何可以生成FEC数据单元的第二示例;
图4c示出了如何可以生成FEC数据单元的第三示例;
图5表示了根据优选实施例的在通信系统中使用FEC所发送的数据流;
图6表示了根据优选实施例的在通信系统中所发送的分组数据流;
图7表示了根据优选实施例的在通信系统中所发送的交织数据流;
图8是根据优选实施例的调整所述接收器的抖动缓冲器状态的流程图;
图9是根据优选实施例的从发送器向接收器发送数据的第二过程的流程图;以及
图10是根据优选实施例的从发送器向接收器发送数据的第三过程的流程图。
具体实施方式
现在将仅以示例的方式来描述本发明的优选实施例。
参考图1,现在描述根据优选的实施例的通信系统100。该通信系统100包括发送器102和接收器108。发送器102包括用于处理数据的处理器104和用于存储数据的存储器106。接收器108包括用于处理数据的处理器110,用于存储数据的存储器112,和用于从发送器102接收数据的抖动缓冲器114。
在操作中,发送器102可(例如,使用处理器104)处理(例如,从存储器106中检索的)数据以形成数据流,所述数据流包括多个数据分组。之后,可在通信信道上穿过网络向接收器108的抖动缓冲器114发送数据流。如上所述,在数据从抖动缓冲器输出以用于在接收器108中处理(例如,使用处理器110)之前,该数据短时间内被存储在抖动缓冲器(即“抖动缓冲器延迟”)。在接收器108中的处理可以包括从数据流中解分组和解码数据。该数据可以存储在接收器108的存储器112中,或从接收器108例如输出到用户。数据流中数据与发送器102的用户和接收器108的用户之间的实时通信事件(诸如语音呼叫或视频呼叫)有关。
发送器102向接收器108发送数据的网络可以是任何合适的、有能力提供合适的通信信道的网络。该网络可以是广域网(WAN)或局域网(LAN)。作为示例,网络可以是内部网,互联网或诸如移动电话网络的电话网络。发送器102和接收器108可以被实现在通过网络分别发送和接收数据流的任何合适的装置或设备中。例如,发送器102和接收器108可以被实现为用户设备,诸如有能力连接到网络的个人计算机或电话。
当抖动缓冲器114从发送器102接收到数据时,以及当数据从抖动缓冲器114中移除以在接收器108中处理时,抖动缓冲器114的状态改变。抖动缓冲器114的状态可由诸如抖动缓冲器114的延迟或114的大小的参数来描述。按照数据从发送器102接收开始直到移除以用于在接收器108中处理为止将在抖动缓冲器114中存储的时间(所述抖动缓冲器延迟),或按照在抖动缓冲器114中的数据的内容的帧的数目,或按照数据量,例如以存在于抖动缓冲器114的数据的比特数或字节数来计量,该参数描述了目前抖动缓冲器114中的数据量。抖动缓冲器114的状态也可描述抖动缓冲器114中的可用空间,所述可用空间被确定为抖动缓冲器114的最大所允许的大小减去抖动缓冲器114当前大小。
可以看出,抖动缓冲器114的状态影响如何在接收器108接收数据。因此当抖动缓冲器114的状态变化时,依照抖动缓冲器114的当前状态,改变处理数据以发送到接收器108的方式可能是有利的。因此,本发明人已经认识到,发送接收器108的抖动缓冲器状态(例如,抖动缓冲器114当前的大小或延迟,以及抖动缓冲器114中的可用空间)到发送器102,这是有利的,其中,可以基于抖动缓冲器114的状态控制所述发送器的处理模块的操作。
参照图2,其中描述了从发送器102发送数据到接收器108的抖动缓冲器114的第一方法。在步骤S202中,发送器102接收来自接收器108的抖动缓冲器114的抖动缓冲器状态信息(如图1所示)。所述抖动缓冲器状态信息指示抖动缓冲器114的当前状态,并且可以例如指示当前抖动缓冲器114的延迟或大小,并且还可以指示在抖动缓冲器114中的可用空间。抖动缓冲器状态信息可以指示抖动缓冲器114的其他属性,这在确定如何最好地处理数据以从发送器102发送到接收器108的抖动缓冲器114中是有用的。
在步骤S204中,基于在步骤S202中接收到的抖动缓冲器信息控制发送器102的至少一个处理参数。所述(多个)处理参数描述在实时通信事件中,数据是如何被处理以从发送器102发送到接收器108的抖动缓冲器114中。在步骤204中可以控制的可能的处理参数的示例包括编码比特率、FEC深度、分组延迟和交织延迟,在下面更详细地描述这些示例。对于本领域技术人员显而易见的是,其它用于处理数据以从发送器102发送到接收器108中的抖动缓冲器114中的处理参数可以此处给定的示例相类似的方式被控制。
在步骤S206中,根据在步骤204中确定的(多个)处理参数,在发送器102处理数据以用于发送。所述数据可以被发送器102中的多个处理模块处理。例如,可以存在编码模块、FEC模块、分组模块和交织模块。每个模块都可以根据在步骤S204中确定的(多个)处理参数来操作。通过根据在步骤S204中确定的(多个)处理参数处理数据,所述数据以适于根据抖动缓冲器114的状态在所述抖动缓冲器114接收的方式被处理。
在步骤S208中,处理后的数据从发送器102发送到接收器108中的抖动缓冲器114。所述数据通过网络被发送,不利地,当发送时所述数据可能存在一些可变延迟或损坏。如上所述,在接收器108处使用抖动缓冲器114有助于克服发送时数据的可变延迟和损坏引起的问题。
因此,存在如上所述的在实时的通信事件中从发送器102发送数据到接收器108的方法,由此,基于在接收器108接收所述数据的抖动缓冲器114的状态,控制数据在发送器102被处理以发送到接收器108的方式。
所述当前抖动缓冲器状态影响多个处理模块的性能,所述多个处理模块用于在实时通信事件中处理数据以发送到抖动缓冲器114,如下面举例说明。
1.编码器比特率
发送器102可以包括在实时通信事件中编码数据以发送到接收器108的处理模块。所述处理模块可在发送器102的硬件或软件中实现(例如,在CPU104上执行)。可以使用任何合适的已知的编码技术编码所述数据。特定的编码技术可适合于不同类型的数据。例如,如果所述数据包括来自发送器102的用户的语音,则编码技术可以包括特定的语音编码器,用于编码所述数据的语音部分。例如,也可以使用其他的编码技术压缩数据以发送到接收器108。使用编码比特率处理所述数据,使得编码后的数据具有特定的编码比特率。通常较高的编码率会导致更高质量的信号,但需要通过通信信道发送更多的数据到接收器108。
发送器102可基于要被发送的输入信号,和/或基于数据要被发送的通信信道的条件来调整它的编码比特率。例如,输入信号可以是视频信号,并且编码器可以产生瞬时比特率中的突增(尖峰),如图3所示。图3示出的曲线图表示一旦在发送器102编码,视频信号的每帧字节数。可以看出对于每个视频帧,编码比特率是不相同的,并且特别地,一些视频帧(例如帧号0和帧号100)以比其他视频帧高得多的比特率被编码。发生视频信号的帧的比特率的变化,是因为不同的编码技术被用于编码不同的视频帧。当输入信号是音频信号时,可会出现类似的情况。例如,当音频或视频信号的一部分独立于先前已编码的部分而进行编码,那么编码后的视频或音频帧的比特率通常是相对高的。这与其它可以使用差分编码技术编码的视频或音频帧形成鲜明对比,并且因此,那些其他的视频或音频帧的编码比特率通常是相对低的。编码比特率的突增的另一个示例是,当输入信号的一部分依赖于先前已编码的部分进行编码,但使用了较少的有效比特率的差分编码模式。在实施例中,当输入信号是一个视频信号,对于一些视频帧中避免差分编码是有利的(即使比特率增加),例如在所述输入视频信号的突然变化的情况下(例如视频信号中场景变化),或当希望停止归因于分组丢失的错误传播效果。
编码后的数据的瞬时比特率尖峰导致更大的数据分组和/或更大数量的数据分组,所述数据分组在实时通信事件中从发送器102发送到接收器108中的抖动缓冲器114。这种数据量的增加,需被接收器108的抖动缓冲器114容纳。如果所允许的最大抖动缓冲器的大小,例如以比特/字节或分组的数量来表示,比需要被放置在抖动缓冲器114中的数据量低,那么一些数据将被丢弃。这会导致在实时通信事件中通信系统100性能下降。
在另一种情况下,编码后的数据中的瞬时比特率尖峰会导致所产生的数据分组的更高的传播延迟。在这种情况下,在等待新的数据分组到达时,抖动缓冲器有足够的较早数据用于播放是有利的。
根据图2中所示的方法,发送器102的编码模块可以根据抖动缓冲器114的当前大小,或根据抖动缓冲器114当前可用的空间(即,最大允许大小减去当前大小)适配其编码比特率。编码比特率是在步骤S204中根据抖动缓冲器114的状态进行控制的处理参数。如果抖动缓冲器114的可用空间很小,那么,发送器102的编码模块的应避免要被发送到抖动缓冲器114的数据的比特率的突增。另一方面,在实时通信事件中的数据发送的瓶颈可以是发送器102和接收器108之间的通信信道(而不是抖动缓冲器114的可用空间)。在这种情况下,数据的比特率的增加可能会导致所产生的数据分组的传播延迟增加,这是因为它们是通过通信信道发送的,同时在等待的新的分组到达时,抖动缓冲器114具有足够的较早数据以提供用于播放(如抖动缓冲器114当前大小所指示)。在这种情况下,尽管有更高的传播延迟,编码器仍可增加所述比特率(基于抖动缓冲器114的当前大小的指示),这是因为所述抖动缓冲器可继续输出它已经收到的较早的数据,所以在接收器108的数据的输出中将没有延迟,并且根据增加的比特率可以保持高的数据质量。
因此,可以看出,可依赖于如在步骤中202中发送器102从接收器108所接收的抖动缓冲器状态信息所指示的抖动缓冲器114的状态控制用于编码数据以从发送器102发送到接收器108的抖动缓冲器114的编码比特率。
2.前向纠错
在数据流中的数据可以被分成在发送器102和接收器108之间的通信信道上发送的数据分组。在理想的系统中,通信信道是无损的,使得从发送器102通过通信信道发送的每一个数据分组,都在接收器108的抖动缓冲器114被接收。然而,在真实的物理系统中,通信信道是有损耗的,意味着,所发送的一些数据分组将在通信信道上丢失,并因此将不在接收器108的抖动缓冲器114被接收。这是有害的。纠正方案可以用于帮助在接收器108中恢复至少一些丢失的数据分组。
作为示例,前向纠错(FEC)是可以用来对抗通信信道中分组丢失的纠正方案。FEC产生除了原始数据单元之外的冗余数据(诸如FEC数据单元),并且在通信信道上发送的数据流中包含FEC数据单元。发送原始的和冗余的FEC数据的FEC方案被称为系统性FEC方案。不发送原始数据的FEC方案被称为非系统性方案。在后一种情况下,发送的数据的总量仍然是高于原始数据的量,以提供冗余。为了简化,但不失一般性,我们在此讨论系统FEC方案。冗余FEC数据单元可被放置在其自己的分组中,独立于数据流中的数据分组。可替换地,或另外地,FEC数据单元可被附加(或“捎带”)到数据流中的原始数据分组。为了简化,但不失一般性,我们在此讨论独立的原始的和FEC数据分组。当一些原始数据分组在通信信道上丢失,成功到达的FEC数据单元和成功到达的数据分组可以被用来恢复(至少一些)丢失的数据分组。也就是说,在接收器的解码器看来,相比于通信信道的实际分组丢失,FEC减少了分组丢失。
图4a,4b和4c示出了如何生成FEC数据单元的三个示例。如图4a中所示,FEC数据单元404可以生成为数据流中原始数据分组402的一个精确拷贝。通过将数据分组402和FEC数据单元404二者包括在数据流中,所述数据分组402中的数据被发送两次。因此如果数据分组402在发送过程中丢失,但FEC数据单元404被成功地接收,则数据分组402中的数据可以被成功地在接收器(使用FEC数据单元404)恢复。如图4b中所示,模块408可用来生成FEC数据单元410,所述FEC数据单元410是以低比特率编码的原始数据分组406的拷贝。如果数据分组406在发送过程中丢失,但FEC数据单元410被成功地接收,则基于FEC数据单元410,数据分组406中的数据可以至少部分地在接收器恢复。应当注意,如果数据分组402和406具有相同的大小(例如,相同的比特数),那么FEC数据单元410将具有比FEC数据单元404更小的大小(例如,更少的比特)。因此,虽然FEC数据单元404在数据分组402的恢复中比FEC数据单元410在数据分组406的恢复中更加有用,但生成如在图4b中所示的FEC数据单元可以是有利的,这是因为FEC数据单元410比FEC数据单元404在数据流的通信信道上使用了更少的可用比特率。如在图4c中所示,混合模块418可以用来从多个原始的数据分组中,例如,数据分组412,414和416中生成FEC数据单元420。有限域(伽罗华域)运算可被用于组合原始数据分组。例如,混合模块418可确定应用到三个数据分组412,414和416的异或(XOR)函数的逐比特(bit-by-bit)结果,以生成FEC数据单元420。在另一种方法中,通过使用伽罗华域GF(28)运算,数据分组412,414和416逐字节相结合,以生成FEC数据单元420。在这个意义上,FEC数据单元420是原始数据分组412,414和416的组合或混合的结果。如果数据分组412,414和416的一个在发送过程中丢失,但其他两个数据分组和FEC数据单元420被成功地接收到,则丢失的数据分组中的数据可以被成功地在接收器(使用其他两个数据分组和FEC数据单元420)恢复。
因此可以看出,FEC数据单元可以许多不同的方式生成。不同的FEC方案描述了生成FEC数据单元的不同的方式。FEC方案可描述与FEC数据单元的生成有关的因素,诸如:所生成的FEC数据单元的数量;哪些数据分组被用来生成FEC数据单元;如何发送FEC数据单元(例如,作为单独的分组,或通过将FEC数据单元附加到数据分组);以及FEC数据单元被放置在数据流中的何处。FEC方案的丢失恢复性能描述了FEC方案使用FEC数据单元在接收器恢复丢失的数据分组的能力。
通常,数据流中的FEC数据单元数目的增加改进了FEC方案的丢失恢复性能。然而,数据流中的FEC数据单元数目的增加带来了比特率效率的成本。
FEC方案的丢失恢复性能在很大程度上取决于FEC开销和FEC深度。
FEC开销描述了相对于原始数据的量的冗余数据量(例如,相对于原始分组的数量的FEC包的数目)。更高的开销通常会提高FEC方案的丢失恢复性能。在另一方面,更高的开销带来了比特率效率的成本。如果原始数据的编码比特率保持不变,则冗余的增加导致总比特率的增加。可替换地,如果总比特率受限制,则冗余的增加带来原始数据数据的编码比特率降低的代价。
FEC深度描述了可被FEC数据单元保护(即组合成FEC数据单元)的最旧的和最新的数据分组(包括二者)之间的位移。换句话说,它描述了可以组合成FEC数据单元的原始数据分组的最大数目。较高的深度提供了更多的针对FEC数据单元的数据分组的不同组合的可能性,从而实现例如对于不同的信道条件的FEC方案的更高灵活性。在一个极端的例子中,当FEC数据单元被限制为一个原始数据分组的拷贝,则较高的深度提供了原始数据分组的和它的拷贝(FEC数据单元)在时间上的更大独立性的可能性。在突发性分组丢失的情况下,这是有利的,因为它最小化了通信信道上原始数据分组和拷贝(FEC数据单元)在突发中丢失的概率。
FEC深度与发送延迟有关。FEC数据单元组合了先前生成的原始数据分组,因此在发送器102没有因使用FEC而引起的额外的算法延迟。然而,因为FEC数据单元的生成和发送晚于其所基于的数据分组,为了在接收器108重构丢失的数据分组,我们假设了接收器108的延迟。这可在图5所示的时序图中看出。图5示出数据流的三个数据分组(502,504和506)被用来生成FEC数据单元508的情况。直到所有三个数据分组502,504和506都已生成,才能生成FEC数据单元。因此,在发送器102处生成FEC数据单元508之前,数据分组502和504将从发送器102发送。因此,可以发送FEC数据单元508最早是紧接在数据分组506之后。在图5中显示了此场景。数据分组和FEC数据单元的发送需要一些有限的时间量。图5描绘了发送期间数据分组502通过网络在有损通信信道上的丢失(510)。但是,数据分组504和506与FEC数据单元508都成功地在接收器108接收。在接收器108,数据分组504和506与FEC数据单元508可以被用来恢复丢失的数据分组502。然而,丢失的数据分组502不能被恢复,直到所有三个(数据分组504和506和FEC数据单元508)都已在接收器108的抖动缓冲器114被接收。因此,如在图5中所示,数据分组502的FEC恢复需要在接收器108应当接收到数据分组(如果它没丢失)的时间与可以使用FEC数据单元508恢复所述数据分组的时间之间的延迟。如果用于数据流的延迟要求不满足时,在接收器108,FEC数据单元508的到来之前,丢失的数据分组502将被声明为不可解码。这将很可能会导致FEC方案的性能显著下降。
但是,在接收器108,这种延迟不必作为额外的延迟由FEC引入。例如,所需的延迟可能已经存在于接收器108。接收器108的延迟的一个可能的原因是抖动缓冲器114的存在。如上所述,抖动缓冲器114引入了延迟到数据流中,以便减轻分组到达时间的随机变化(抖动)。如果在数据分组502即将从抖动缓冲器114(如果它未在发送过程中丢失)被输出的时间之前,FEC数据单元508被接收,那么在接收器108有可能恢复数据分组502,而不用在抖动缓冲器114已经引入的延迟之上引入任何额外的延迟。应选择FEC深度以便保持丢失的数据分组和FEC数据单元之间的延迟,所述FEC数据单元可用来在接收器108恢复延迟要求内丢失的数据分组。因此,对于实时数据发送(例如视频呼叫或音频呼叫),FEC深度被设置为相对较低的数。
在发送器102处FEC方案在给定抖动缓冲器114的大小后可选择可能的最高深度,而无需进一步增加(或最低限度的增加)接收器108的延迟。抖动缓冲器114的大小增加时,FEC深度会相应增加。当抖动缓冲器的大小减小时,FEC深度相应减少(或额外的延迟被引入接收器108,以应付FEC深度)。为了避免在后者的情况下的突然的FEC的性能下降,在响应于所期望的抖动缓冲器大小减少而减小FEC深度之前,抖动缓冲器114的大小应不被降低(或额外的延迟应被引入接收器以应付FEC深度)。
3.分组
发送器102可包括用于将数据分组为数据分组以在实时通信事件中发送到接收器108的处理模块。该处理模块可被实现在发送器102的硬件或软件中(例如,在CPU104上执行)。用于将数据分成数据分组(例如数据分组的报头的形式,以及其他类似的实施细节)的协议,可以取决于数据要被发送的通信信道的性质,例如数据分组要被发送所通过的网络的类型。
当编码数据单元很小时,将它们放置到一个更大的数据分组用于发送,而不是使用单独的小数据分组,这个是有利的。这减少了相关联的分组报头开销。换句话说,因为较少的数据分组被发送,也就有更少的分组报头,并且因此被发送的分组报头数据的数量被减少。
图6示出了一个示例,其中数据流的6个连续的数据单元6021到6026要从发送器102发送到接收器108。在图6中所示的示例中,数据单元在数据分组中被发送,从而在每个数据分组中三个数据单元被发送。也就是说,不是发送6个小的数据分组,其中每一个仅包含一个数据单元,而是只有两个较大的数据分组被发送,例如,在图6中所示的示例中,两个数据分组604和606从发送器102发送到接收器108。数据分组604包括前三个数据单元(数据单元1,2和3)并且数据分组606包括接下来的三个数据单元(数据单元4,5和6)。
虽然数据单元的这种分组降低了分组报头开销,但带来了延迟的代价。我们称此延迟为分组延迟。例如,在图6所示的情况下,因为数据单元1,2和3都在数据分组604一起发送,所以数据单元3被生成之前,数据单元1还没有被发送。这意味着,数据单元1在发送器102中被生成和在接收器108中被接收之间,比相应的数据单元3的延迟具有更高的延迟。分组延迟在图6中被示作为如果每个数据单元被分开发送数据单元1将在接收器108被接收的时间与数据分组604中的数据单元1被接收的时间之间的时间间隔。
然而,如果接收器108能容忍数据单元1的分组延迟,例如,如果直到数据分组604在接收器108被接收,数据单元1才被要求在接收器108进行解码和/或回放,那么分组延迟不成为数据单元在发送中的额外延迟/成本。这可以是由于在接收器108的抖动缓冲器延迟导致的情况。例如,抖动缓冲器114可以具有足够的较早数据(数据流中在数据单元1之前),以在数据分组604到达之前提供连续的解码和/或回放。因此,抖动缓冲器114的状态,特别是当前的抖动缓冲器延迟会影响可以容忍的分组延迟的量。
实现在发送器102的分组方案使用在步骤S202中发送器102从接收器108接收的抖动缓冲器状态信息来控制所发送的数据的分组延迟。例如,分组延迟可以被控制,使得在给定抖动缓冲器114的抖动缓冲器延迟的情况下,分组延迟被最大化,且不用进一步增加(或最低限度地增加)所发送的数据流的数据单元的总延迟。因此分组延迟可被控制,使得其对应于抖动缓冲器114的延迟。这意味着,分组延迟可被控制为等于(或近似相等于)抖动缓冲器114的延迟。
4.交织
发送器102可包括用于交织数据单元以在实时通信事件中发送到接收器108的处理模块。该处理模块可被实现在发送器102的硬件或软件中(例如,在CPU104上执行)。用于交织数据单元的协议可以取决于数据要被发送的通信信道的性质,例如要发送已交织的数据单元所通过的网络的类型。
交织用于以非顺序的方式安排数据单元,以便分发并且最小化发送过程中的分组丢失的影响。交织降低了由于在数据流的发送过程中的分组丢失或分组丢失突发而引起的连续的数据单元没有到达接收器108的概率。相比起丢失连续的数据单元,丢失非连续的数据单元通常会导致更少的数据流质量下降。此外,交织增加了邻近数据单元可用于隐蔽丢失的数据单元的概率,从而通常会导致较高的丢失单元的隐蔽质量。交织可以用于形成数据分组时以及发送数据分组时。
在一个示例中,在发送数据分组时使用交织。图7示出了6个连续的数据单元,其中每个单元被放置到单独的数据分组(7021到7026)以用于从发送器102发送到接收器108。在如上所述的其它实施例中,根据发送器102的分组方案,一个以上的数据单元可以分组到每个数据分组以用于发送。当没有施加交织,数据分组702以顺序{1,2,3,4,5,6}发送,也就是连续的顺序。在这种情况下,在发送过程中的丢失突发(连续的数据分组的丢失)导致数据流的连续的数据单元的丢失,其对于在接收器108接收的数据的质量特别有害。
然而,当施加交织时,则数据分组的发送顺序不是连续的数据单元顺序。例如,图7示出的数据分组被发送的顺序为{1,3,5,2,4,6}。在这种情况下,在发送过程中的丢失突发(连续的数据分组的丢失)可以导致数据流的非连续的数据单元丢失,其对于在接收器108接收的数据的质量不是那么有害。例如,数据流中相邻的数据单元可能会在接收器被正确地接收,其可用于隐蔽丢失的数据单元。
虽然交织降低了发送过程中的数据分组丢失的影响,但它带来了延迟的代价。避免数据单元的连续的发送,意味着只有数据流中后面的数据单元被生成以及发送之后,前面的数据单元才被发送。在上面的示例中,只有在数据单元3和5被生成和发送之后,数据单元2才被发送。因此,在接收器108,在数据单元1之后不可立即提供数据单元2。为了便于在接收器108连续回放数据流,数据单元1可以慢慢播放直到接收到数据单元2,或以正常速度播放数据单元1但具有延迟的开始,或者使用其组合。在所有的情况下,交织需要接收器108中的播放时延迟,被称为“交织延迟”。交织延迟在图7中示为如果数据单元被连续发送数据单元2将在接收器108被接收的时间与由于数据分组的交织数据单元2被接收的时间之间的时间间隔。
然而,不必在接收器108处由于单独交织而引入延迟。如上所述,由于抖动缓冲器114,延迟可能已经存在于接收器处。如果接收器108能容忍数据单元2的交织延迟,例如,如果直到数据单元2在接收器108被接收,数据单元2才被要求在接收器108解码和/或回放,那么交织延迟不成为数据单元的发送中的额外延迟/成本。这可以是由于在接收器108的抖动缓冲器延迟导致的情况。例如,抖动缓冲器114可以具有足够的较早数据(数据流中在数据单元2的前面),以在数据单元2到达接收器108之前提供连续的解码和/或回放。因此,抖动缓冲器114的状态,特别是当前的抖动缓冲器延迟会影响可以容忍的交织延迟的数量。
实现在发送器102的交织方案使用在步骤S202中发送器102从接收器108接收的抖动缓冲器状态信息来控制所发送的数据的交织延迟。例如,交织延迟可以被控制,使得在给定抖动缓冲器114的抖动缓冲器延迟的情况下,交织延迟被最大化,且不用进一步增加(或最低限度地增加)所发送的数据流的数据单元的总延迟。因此交织延迟可被控制,使得其对应于抖动缓冲器114的延迟。这意味着,交织延迟可被控制为等于(或近似等于)抖动缓冲器114的延迟。
在另一个示例中,在形成用于从发送器102发送到接收器108的数据分组时使用交织。多个已编码的数据单元放入每个数据分组。让我们考虑6个连续的数据单元1,2,3,4,5,6以及其中数据单元的三个被分组到第一数据分组并且其他三个数据单元被分组到第二数据分组的情况。如果没有被施加交织,则第一数据分组将包括前三个数据单元{1,2,3}而第二数据分组将包括接下来的三个数据单元{4,5,6}。在这种情况下,在传输过程中的数据分组的丢失导致数据流的连续数据单元的的丢失,其对于在接收器108接收的数据的质量特别有害。
然而,当实现交织时,第一数据分组可包括数据单元{1,3,5}而第二数据分组可包括数据单元{2,4,6}。在这种情况下,在传输过程中的数据分组的丢失导致数据流的不连续的数据单元的丢失,其对于在接收器108接收的数据的质量不是那么有害。例如,数据流中相邻的数据单元可能会在接收器被正确地接收,其可用于隐蔽丢失的数据单元。
在这个示例中,发送器102引入了分组和交织延迟的组合延迟。然而,如上所述,如果由于抖动缓冲器114的延迟,这种组合延迟已经存在于接收器,则它不会是额外的延迟。因此,交织延迟和分组延迟可以被一起控制,使得组合延迟(分组延迟+交织延迟)对应于在步骤S202中发送器102接收的抖动缓冲器状态信息中所指示的抖动缓冲器114的延迟。
因此,存在上述的用于基于接收器108的抖动缓冲器114的状态控制发送器102的处理模块的操作的方法。处理参数可被联合控制。在这种方式中,基于抖动缓冲器114的状态控制描述如何处理数据以发送到接收器108的处理参数,以使得最优化对数据进行处理的方式,以适应抖动缓冲器114的状态。
在上述的实施例中,抖动缓冲器114的状态是抖动缓冲器114的当前状态。在可替代的实施例中,指示给发送器102的抖动缓冲器的状态可以是抖动缓冲器的未来状态,其指示了当数据从发送器102发送到接收器108的抖动缓冲器114时,抖动缓冲器在未来的某个时刻可能具有的状态。
参照图8,现在描述优化在发送器102使用的处理参数与抖动缓冲器114的状态之间的关系的另一种方法。
在步骤S802中,当处理数据以用于发送到接收器108时,对发送器102使用起来有利的处理参数被确定。基于如上所述的抖动缓冲器114的状态,这些处理参数可以是已经确定的处理参数的调整版本。可替换地,在步骤S802中,可以确定处理参数而不考虑抖动缓冲器114的状态。如上所述,处理参数可以包括编码比特率、FEC深度、分组延迟和交织延迟中的一个或更多。
在步骤S804中,使用在步骤S802中所确定的处理参数来确定的抖动缓冲器114的状态,所述抖动缓冲器114的状态适合于接收已根据步骤S802所确定的处理参数处理的数据。例如,如果编码比特率增加,则抖动缓冲器114中可用的空间需要增加,以容纳由于编码比特率的增加而引起的要被发送的额外的数据。抖动缓冲器大小依赖数据编码比特率的变化以及依赖于发送路径上的瓶颈进行适配。如果抖动缓冲器中的可用空间是发送路径中的瓶颈,那么抖动缓冲器114的当前大小应降低,以允许更多的数据在抖动缓冲器114被接收。可替换地,如果通信信道是发送路径中的瓶颈并且比特率的增加导致传播延迟增加,则抖动缓冲器114必须确保它具有足够多的较早的数据,以确保在等待新数据的同时连续回放。
作为另一个示例,如果被用来生成用于要发送的数据流的数据单元的FEC数据单元的FEC深度增加,则抖动缓冲器114的延迟可能需要增加,以使得在需要FEC数据单元以便纠正数据单元传送中的错误之前,该FEC数据单元可在抖动缓冲器114被接收。作为另一个例子,如果分组延迟和交织延迟中一个或两个增加,则抖动缓冲器114的延迟需要相应增加,以使得在数据单元被要求从抖动缓冲器114输出之前,该数据单元在接收器108的抖动缓冲器114被接收。在步骤S804中确定的抖动缓冲器状态被确定为优化抖动缓冲器114的操作以用于接收数据,所述数据基于发送器102的处理参数而被处理。
在步骤S806中,在步骤S804中确定的抖动缓冲器状态的指示从发送器102发送到接收器108。抖动缓冲器状态可在发送数据的同时从发送器发送到接收器108,或者,抖动缓冲器状态在发送数据之前从发送器发送到接收器108。抖动缓冲器状态的指示的发送将需要从发送器102到接收器108的小量比特的发送,其可以在独立的数据分组中发送,或捎带到现有的从发送器102到接收器108的数据分组。
在步骤S808中,基于已接收到来自发送器102的抖动缓冲器状态的指示,调整接收器108的抖动缓冲器114的状态。这样,抖动缓冲器114被置于适合(即优化)接收从发送器102发送到接收器108的抖动缓冲器114的数据的状态。因此,当数据在发送器102被处理(根据如上所述的处理参数)并发送到接收器108的抖动缓冲器114时,则抖动缓冲器114处于适合接收该数据的状态。
如上所述,FEC方案可发送关于所期望的FEC深度增加的信息,分组方案可发送关于所期望的分组延迟增加的信息,并且交织方案可发送有关所期望的连续数据单元分离度增加的信息。在这些情况下,为了实现更高的防止分组丢失的鲁棒性,抖动缓冲器114应该增加其大小(即它的延迟)。一般地,发送器102可发送关于期望的抖动缓冲器大小(延迟)的增加或减少的信息到接收器108。
参照图9,现在描述优化在发送器102使用的处理参数与抖动缓冲器114的状态之间的关系的另一种方法。在图9中所示的方法中,处理参数(在发送器102使用以处理用于传输到接收器108的数据)和接收器108的抖动缓冲器114的状态被联合及自适应优化。优化(优化手段)涉及的参数可以包括编码质量和比特率、防止分组丢失的鲁棒性和延迟。
在步骤S902中,利用控制抖动缓冲器114状态的抖动缓冲器控制信息联合确定在发送器102中被使用以处理用于传输到接收器108的抖动缓冲器114的数据的处理参数。处理参数与抖动缓冲器控制信息被一起确定,以使得它们对于彼此相互适应(或“优化”)。因此,根据处理参数被处理的数据以这样一种方式被处理:其被优化以通过抖动缓冲器114被接收,所述抖动缓冲器114在由抖动缓冲器控制信息所指示的抖动缓冲器状态中操作。在发送器102执行步骤S902中的联合确定。
在步骤S904中,从发送器102发送抖动缓冲器控制信息到接收器108。抖动缓冲器控制信息可在与数据发送相同的时间从发送器发送到接收器108,或抖动缓冲器控制信息可在数据发送之前从发送器发送到接收器108。抖动缓冲器控制信息的发送,将需要从发送器102到接收器108的小量比特的发送,其可以在独立的数据分组中发送,或捎带到现有的从发送器102到接收器108的数据分组。
在步骤S906中,抖动缓冲器控制信息被用在接收器108以设置抖动缓冲器114的状态。例如抖动缓冲器114的大小或延迟可以根据抖动缓冲器控制信息设置。在步骤S902中,所述抖动缓冲器控制信息与所述处理参数被联合确定。
在步骤S908中,发送器102使用在步骤S902中的确定的处理参数对数据进行处理。
在步骤S910中,已处理的数据从发送器102发送到接收器108的抖动缓冲器114。如上所述,抖动缓冲器114处于适合接收已根据在步骤S902中确定的处理参数处理的数据的状态。
在上所述的涉及图9方法中,在发送器102执行处理参数和抖动缓冲器控制信息的联合确定,之后从发送器102发送抖动缓冲器控制信息到接收器108,使得抖动缓冲器114的状态可以被相应地设置。然而,在替代的实施例中,在接收器108执行处理参数和抖动缓冲器控制信息的联合确定,之后抖动缓冲器状态的指示和/或所确定的处理参数的指示从接收器108发送到发送器102,使得发送器102可以相应地控制处理参数。
在其它实施例中,在控制节点(而不是发送器102和接收器108)执行处理参数和抖动缓冲器控制信息的联合确定,并且抖动缓冲器控制信息从控制节点发送到接收器108,使得抖动缓冲器114的状态可以被相应地设置,并且所确定的处理参数的指示可从控制节点发送到发送器102,使得发送器102可以使用所确定的处理参数来处理数据以发送到接收器108。
联合确定处理参数和抖动缓冲器114的状态是有利的,使得在发送器102的数据处理和接收器108的抖动缓冲器114的状态相对于彼此优化。
改进通信系统的操作的一种方式是发送器102发送控制信息到接收器108,其中,所述接收器108基于所述控制信息控制抖动缓冲器114的状态。这允许发送器102确定处理参数,其利用处理参数处理数据以发送到接收器108,例如,以改善处理后的数据的质量。然后,基于处理参数确定抖动缓冲器114的状态。可在发送器102确定抖动缓冲器状态,随后发送到接收器108的控制信息包括抖动缓冲器114的确定状态的指示。可替代地,从发送器102发送到接收器108的控制信息可包括(多个)处理参数的指示,所述(多个)处理参数用在发送器102处理实时通信事件数据以传输到接收器108。在这种情况下,基于从发送器102接收到的处理参数的指示,接收器108确定抖动缓冲器114的状态。
图10是从发送器102发送实时通信事件数据到接收器108的过程的流程图。在步骤S1002中,确定在发送器102中用以处理数据以发送到接收器108的抖动缓冲器114的处理参数。处理参数以改进处理后的数据的质量的方式被确定。
在步骤S1004中,从发送器102发送控制信息到接收器108。如上所述,控制信息可包括抖动缓存器114的状态的指示和/或在步骤S1002中确定的处理参数的指示。控制信息可在与数据发送相同的时间从发送器102发送到接收器108,或控制信息可在数据发送之前从发送器102发送到接收器108。控制信息的发送,将需要从发送器102到接收器108的小量比特的发送,其可以在独立的数据分组中发送,或捎带到现有的从发送器102到接收器108的数据分组。
在步骤S1006中,控制信息被用在接收器108以设置抖动缓冲器114的状态。例如,根据所述控制信息可以设置抖动缓冲器114的大小或延迟。
在步骤S1008中,使用在步骤S1002中确定的处理参数,在发送器102处理实时通信事件数据。
在步骤S1010中,从发送器102发送处理后的数据到接收器108的抖动缓冲器114。如上所述,抖动缓冲器114将处于适合接收已根据步骤S1002中确定的处理参数处理的数据的状态。
例如,发送器102可仅基于相应的处理模块(例如,处理模块的发送器和接收器部分的组合)的性能决定处理参数的最佳值,而不是联合优化处理参数与抖动缓冲114的状态。例如,当在发送器102确定用于FEC方案的处理参数,发送器102的FEC编码器可决定增加FEC深度以改进数据流从传输过程的分组丢失中恢复的能力。接收器108的FEC解码器将相应地增加它的延迟。如果抖动缓冲114的延迟低于新的FEC深度所对应的延迟,则在接收器108数据播放中存在问题。在现有技术的系统中,在FEC解码器的新的延迟将被抖动缓冲器视为增加的延迟/抖动。然后抖动缓冲器将相应地调整延迟,但这种调整可能发生为时已晚或过快,并且在接收器108的信号播放质量可能因此受到影响。然而,与此相反,根据上述的方法,在FEC深度的变化之前,发送器102中的FEC编码器通知抖动缓冲器114,之后抖动缓冲器114有时间来为FEC延迟的变化做准备。在这种情况下,抖动缓冲器114将为增加的延迟做准备,并且更慢地播放其内容同时等待进一步的数据分组到达。这将改进在接收器108播放的信号的质量。
如上所述的方法步骤(尤其是图2、8、9和10中所示的方法步骤)可以实现为在发送器102和接收器108的硬件或软件中。例如,其中的方法步骤是在软件中执行,它们可通过在发送器102和接收器108的处理装置上执行来自计算机程序产品的指令来实现。
上面描述的不同实施例的特征可以任何合适的方式被组合,这在本领域技术人员看来是显而易见的。
此外,尽管本发明已参照优选的实施例被特别的示出和描述,但是本技术领域的技术人员将会理解,可以在形式和细节上做出各种改变而不脱离所附权利要求中所定义的本发明的范围。
Claims (9)
1.一种用于从发送器(102)发送实时通信事件数据到接收器(108)的抖动缓冲器(114)的方法,所述方法包括:
联合确定(i)至少一个处理参数,所述处理参数描述数据是如何被处理以从所述发送器(102)发送到所述抖动缓冲器(114),以及(ii)抖动缓冲器控制信息,用于指示所述接收器(108)如何控制所述抖动缓冲器(114)的状态;
发送所述抖动缓冲器控制信息到所述接收器(108);
根据所确定的至少一个处理参数处理数据以从所述发送器(102)发送到所述抖动缓冲器(114),所述处理数据包括通过生成与数据分组的至少一个有关的纠正数据单元处理数据分组的流,所述至少一个处理参数包括纠正深度,所述纠正深度设置了数据分组流中被允许与纠正数据单元中的一个相关的最老的和最新的数据分组之间的最大允许位移;并且
从所述发送器(102)发送处理的数据到所述接收器(108)的抖动缓冲器(114)。
2.根据权利要求1所述的方法,其中要么:
(i)在所述发送器(102)执行所述联合确定,并且其中所述发送所述抖动缓冲器控制信息到所述接收器(108)的步骤包括:从所述发送器(102)发送所述抖动缓冲器控制信息到所述接收器(108),要么
(ii)在控制节点执行所述联合确定,并且其中所述发送所述抖动缓冲器控制信息到所述接收器(108)的步骤包括:从所述控制节点发送所述抖动缓冲器控制信息到所述接收器(108),并且其中所述方法进一步包括从所述控制节点发送至少一个处理参数的指示到所述发送器(102)。
3.如权利要求1或2所述的方法,其中所述处理参数被确定从而在以下约束内控制所发送的数据的至少一个质量参数:根据抖动缓冲器控制信息指示的所述抖动缓冲器(114)的状态,所发送的数据能够从所述接收器(108)的抖动缓冲器(114)中恢复;并且其中所述至少一个所发送的数据的质量参数包括以下至少一个:(i)编码质量、(ii)比特率、以及(iii)防止分组丢失的鲁棒性。
4.如权利要求1或2所述的方法,其中所述处理数据以从发送器(102)发送到抖动缓冲器(114)的步骤包括编码数据,并且其中所述至少一个处理参数包括编码所述数据的编码比特率,
其中所述抖动缓冲器控制信息确定了所述抖动缓冲器(114)的大小或所述抖动缓冲器(114)中的可用空间,其中基于所确定的抖动缓冲器(114)大小或所确定的抖动缓冲器(114)中的可用空间控制所述编码比特率,并且
其中所述方法进一步包括确定是所述抖动缓冲器(114)还是用于实时通信事件的通信信道为从所述发送器(102)到所述接收器(108)发送的数据的发送路径的瓶颈,其中,基于是所述抖动缓冲器(114)还是所述通信信道为所发送的数据的发送路径的瓶颈的确定,确定所述编码比特率。
5.如权利要求1或2所述的方法,其中所述抖动缓冲器控制信息确定了所述抖动缓冲器(114)的延迟,其中,确定所述纠正深度,从而依赖于所确定的抖动缓冲器(114)延迟确定通过使用纠正数据单元在所述接收器(108)恢复所发送的数据分组而引起的延迟,并且
其中,所述纠正数据单元是前向纠错数据单元,并且纠正深度是前向纠错深度。
6.如权利要求1或2所述的方法,其中所述处理数据以从所述发送器(102)发送到所述抖动缓冲器(114)的步骤包括将所述数据单元分组为数据分组以用于发送,并且其中所述至少一个处理参数包括分组延迟,所述分组延迟设置了将所述数据单元分组为数据分组所导致的数据单元的最大允许延迟,并且
其中所述抖动缓冲器控制信息确定所述抖动缓冲器(114)的延迟,其中,确定所述分组延迟依赖于所确定的所述抖动缓冲器(114)的延迟。
7.如权利要求1或2所述的方法,其中处理数据以从所述发送器(102)发送到所述抖动缓冲器(114)的步骤包括交织至少一些数据单元以用于发送,并且其中所述至少一个处理参数包括交织延迟,所述交织延迟设置了交织所述数据单元所导致的数据单元的最大允许延迟,并且其中所述抖动缓冲器控制信息确定所述抖动缓冲器(114)的延迟,其中确定所述交织延迟依赖于所确定的所述抖动缓冲器(114)的延迟。
8.如权利要求1或2所述的方法,进一步包括:
确定至少一个处理参数的调整后版本;
确定所述抖动缓冲器(114)的调整后状态,所述抖动缓冲器(114)的调整后状态适于接收已根据至少一个处理参数的调整后版本处理的数据;并且
从所述发送器(102)向所述接收器(108)发送指示所述抖动缓冲器(114)的调整后状态的额外的抖动缓冲器控制信息,
其中,根据至少一个处理参数的调整后版本,数据被处理以从所述发送器(102)发送到所述抖动缓冲器(114)。
9.一种用于发送实时通信事件数据到接收器(108)的抖动缓冲器(114)的发送器(102),所述发送器(102)包括:
确定装置,用于联合确定(i)至少一个处理参数,所述处理参数描述数据是如何被处理以从所述发送器(102)发送到所述抖动缓冲器(114),以及(ii)抖动缓冲器控制信息,用于指示所述接收器(108)如何控制所述抖动缓冲器(114)的状态;
处理装置(104),用于根据所确定的至少一个处理参数处理数据以从所述发送器(102)发送到所述抖动缓冲器(114),其中处理数据进一步包括通过生成与数据分组的至少一个有关的纠正数据单元处理数据分组的流,所述至少一个处理参数包括纠正深度,所述纠正深度设置了数据分组流中被允许与纠正数据单元中的一个相关的最老的和最新的数据分组之间的最大允许位移;以及
发送装置,用于将抖动缓冲器控制信息发送到所述接收器(108),并且用于从所述发送器(102)向所述接收器(108)的所述抖动缓冲器(114)发送处理的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1118401.7 | 2011-10-25 | ||
GB1118401.7A GB2495928B (en) | 2011-10-25 | 2011-10-25 | Jitter buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102984091A CN102984091A (zh) | 2013-03-20 |
CN102984091B true CN102984091B (zh) | 2016-05-11 |
Family
ID=45373374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210411922.2A Active CN102984091B (zh) | 2011-10-25 | 2012-10-25 | 抖动缓冲器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8948213B2 (zh) |
CN (1) | CN102984091B (zh) |
GB (1) | GB2495928B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0705329D0 (en) | 2007-03-20 | 2007-04-25 | Skype Ltd | Method of transmitting data in a communication system |
GB2492830B (en) | 2011-07-14 | 2018-06-27 | Skype | Correction data |
US10498359B2 (en) | 2011-07-14 | 2019-12-03 | Microsoft Technology Licensing, Llc | Correction data |
GB2520866B (en) | 2011-10-25 | 2016-05-18 | Skype Ltd | Jitter buffer |
GB2495929B (en) | 2011-10-25 | 2014-09-03 | Skype | Jitter buffer |
KR102127641B1 (ko) | 2014-06-20 | 2020-06-30 | 삼성전자주식회사 | 응용 계층 순방향 오류 정정 방식을 사용하여 제공되는 방송 서비스의 수신을 제어하는 방법 및 장치 |
US9928844B2 (en) * | 2015-10-30 | 2018-03-27 | Intel Corporation | Method and system of audio quality and latency adjustment for audio processing by using audio feedback |
RU2766575C2 (ru) | 2017-07-21 | 2022-03-15 | Сони Корпорейшн | Передающий модуль, способ передачи, приемный модуль, способ приема и программа |
US10764670B2 (en) * | 2018-05-09 | 2020-09-01 | Apple Inc. | System having device-mount audio mode |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5565924A (en) * | 1995-01-19 | 1996-10-15 | Lucent Technologies Inc. | Encoder/decoder buffer control for variable bit-rate channel |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6366959B1 (en) * | 1997-10-01 | 2002-04-02 | 3Com Corporation | Method and apparatus for real time communication system buffer size and error correction coding selection |
US6980569B1 (en) | 1999-10-18 | 2005-12-27 | Siemens Communications, Inc. | Apparatus and method for optimizing packet length in ToL networks |
US7167451B1 (en) | 2000-12-21 | 2007-01-23 | Cisco Technology, Inc. | User controlled audio quality for voice-over-IP telephony systems |
FI118830B (fi) | 2001-02-08 | 2008-03-31 | Nokia Corp | Tietovirran toisto |
US6904059B1 (en) | 2001-03-06 | 2005-06-07 | Microsoft Corporation | Adaptive queuing |
AU2002343188A1 (en) | 2001-09-12 | 2003-03-24 | Orton Business Ltd. | Method for calculation of jitter buffer and packetization delay |
US7251241B1 (en) | 2002-08-21 | 2007-07-31 | Cisco Technology, Inc. | Devices, softwares and methods for predicting reconstruction of encoded frames and for adjusting playout delay of jitter buffer |
GB2405773B (en) * | 2003-09-02 | 2006-11-08 | Siemens Ag | A method of controlling provision of audio communication on a network |
JP2007532053A (ja) | 2004-03-16 | 2007-11-08 | スノーシヨア・ネツトワークス・インコーポレーテツド | ジッター・バッファーの管理 |
US7676722B2 (en) | 2004-03-31 | 2010-03-09 | Sony Corporation | Multimedia content delivery using pre-stored multiple description coded video with restart |
DE102004039186B4 (de) | 2004-08-12 | 2010-07-01 | Infineon Technologies Ag | Verfahren und Vorrichtung zur Kompensation von Laufzeitschwankungen von Datenpaketen |
US20060080436A1 (en) | 2004-10-07 | 2006-04-13 | Nokia Corporation | System and method for multimedia streaming using interleaved packetization |
US8218439B2 (en) | 2004-11-24 | 2012-07-10 | Sharp Laboratories Of America, Inc. | Method and apparatus for adaptive buffering |
US7743183B2 (en) | 2005-05-23 | 2010-06-22 | Microsoft Corporation | Flow control for media streaming |
US20070133405A1 (en) | 2005-12-08 | 2007-06-14 | Microsoft Corporation | Congestion controller for network transmissions |
US7787377B2 (en) | 2006-02-03 | 2010-08-31 | Telefonaktiebolaget Lm Ericsson (Publ) | Selective redundancy for Voice over Internet transmissions |
US20080101398A1 (en) * | 2006-10-31 | 2008-05-01 | Nokia Corporation | Transmission scheme dependent control of a frame buffer |
US8279884B1 (en) | 2006-11-21 | 2012-10-02 | Pico Mobile Networks, Inc. | Integrated adaptive jitter buffer |
JP4936542B2 (ja) * | 2007-08-14 | 2012-05-23 | キヤノン株式会社 | 通信制御装置、通信制御方法、及びコンピュータプログラム |
US8001260B2 (en) | 2008-07-28 | 2011-08-16 | Vantrix Corporation | Flow-rate adaptation for a connection of time-varying capacity |
JP5482178B2 (ja) * | 2009-12-16 | 2014-04-23 | ソニー株式会社 | 送信装置および方法、並びに、受信装置および方法 |
JP5587435B2 (ja) | 2010-02-12 | 2014-09-10 | トムソン ライセンシング | コンテンツ再生の同期方法及び同期装置 |
US8502859B2 (en) * | 2010-04-27 | 2013-08-06 | Lifesize Communications, Inc. | Determining buffer size based on forward error correction rate |
US8693355B2 (en) | 2010-06-21 | 2014-04-08 | Motorola Solutions, Inc. | Jitter buffer management for power savings in a wireless communication device |
US9253105B2 (en) * | 2010-12-30 | 2016-02-02 | Nokia Technologies Oy | Methods and apparatuses for facilitating determination of a state of a receiver buffer |
GB2492830B (en) | 2011-07-14 | 2018-06-27 | Skype | Correction data |
GB2495929B (en) | 2011-10-25 | 2014-09-03 | Skype | Jitter buffer |
GB2520866B (en) | 2011-10-25 | 2016-05-18 | Skype Ltd | Jitter buffer |
-
2011
- 2011-10-25 GB GB1118401.7A patent/GB2495928B/en active Active
-
2012
- 2012-08-24 US US13/594,638 patent/US8948213B2/en active Active
- 2012-10-25 CN CN201210411922.2A patent/CN102984091B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5565924A (en) * | 1995-01-19 | 1996-10-15 | Lucent Technologies Inc. | Encoder/decoder buffer control for variable bit-rate channel |
Also Published As
Publication number | Publication date |
---|---|
US8948213B2 (en) | 2015-02-03 |
GB201118401D0 (en) | 2011-12-07 |
US20130100968A1 (en) | 2013-04-25 |
GB2495928A (en) | 2013-05-01 |
GB2495928B (en) | 2016-06-15 |
CN102984091A (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102984090B (zh) | 一种用于发送实时通信事件数据到接收器的抖动缓冲器的发送器及其方法 | |
CN102984091B (zh) | 抖动缓冲器 | |
US9246644B2 (en) | Jitter buffer | |
KR100554062B1 (ko) | 패킷 채널을 통한 멀티미디어 통신 방법 | |
KR102295788B1 (ko) | 데이터 스트리밍의 순방향 오류 정정 | |
CN1183723C (zh) | 在分组数据系统中传递分组的方法和设备 | |
EP2719103B1 (en) | Adaptive generation of correction data units | |
US20040123211A1 (en) | Method and apparatus for multimedia communication over packet channels | |
CN108174234A (zh) | 一种流媒体传输方法及系统 | |
US20170237525A1 (en) | Methods and apparatus for maximum utilization of a dynamic varying digital data channel | |
CN108696491A (zh) | 音频数据的发送处理方法与装置、接收处理方法与装置 | |
CN113242155A (zh) | 一种数据包丢包的恢复方法、系统及计算机可读存储介质 | |
US8594075B2 (en) | Method and system for wireless VoIP communications | |
CN110868616A (zh) | 一种5g网络下低延时高可靠视频传输方法 | |
WO2022105753A1 (zh) | 网络数据编码传输方法及装置 | |
KR100535888B1 (ko) | 2차원 순방향 에러 정정방법 및 이를 이용한 데이터통신방법 | |
KR20060011677A (ko) | 다중 채널 구조 무선 통신 시스템에서 헤더 정보 송수신장치 및 방법 | |
Belim et al. | Network Steganography Based on Error Correction Code | |
KR20150145661A (ko) | 응용 계층 순방향 오류 정정 방식을 사용하여 제공되는 방송 서비스의 수신을 제어하는 방법 및 장치 | |
KR101801565B1 (ko) | 통신 시스템에서 데이터 송수신 장치 및 방법 | |
JPH0646079A (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 |