CN103023813B - 抖动缓冲器 - Google Patents

抖动缓冲器 Download PDF

Info

Publication number
CN103023813B
CN103023813B CN201210411881.7A CN201210411881A CN103023813B CN 103023813 B CN103023813 B CN 103023813B CN 201210411881 A CN201210411881 A CN 201210411881A CN 103023813 B CN103023813 B CN 103023813B
Authority
CN
China
Prior art keywords
data
wobble buffer
transmitter
receptor
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
Application number
CN201210411881.7A
Other languages
English (en)
Other versions
CN103023813A (zh
Inventor
R.瓦芬
M.尼尔森
S.V.安德森
A.杰费里默
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.)
Skype Ltd Ireland
Original Assignee
Skype Ltd Ireland
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 Skype Ltd Ireland filed Critical Skype Ltd Ireland
Publication of CN103023813A publication Critical patent/CN103023813A/zh
Application granted granted Critical
Publication of CN103023813B publication Critical patent/CN103023813B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/20Arrangements for detecting or preventing errors in the information received using signal quality detector
    • H04L1/205Arrangements for detecting or preventing errors in the information received using signal quality detector jitter monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0015Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
    • H04L1/0017Systems 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/0018Systems 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • H04L43/087Jitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems 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)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

用于发送或接收实时通信事件的数据的方法、发送器、接收器和计算机程序产品,数据是从发送器向接收器的抖动缓冲器发送的。在发送器处确定描述在实时通信事件中如何处理数据以从所述发送器向所述抖动缓冲器发送的至少一个处理参数。根据所确定的至少一个处理参数,处理要从发送器向抖动缓冲器发送的数据。基于所确定的至少一个处理参数,从发送器向接收器发送控制信息,其中控制信息由接收器用于控制抖动缓冲器的状态。在实时通信事件中从所述发送器向所述接收器的抖动缓冲器发送已处理数据。

Description

抖动缓冲器
技术领域
本发明涉及抖动缓冲器。具体而言,本发明涉及从发送器向接收器的抖动缓冲器发送实时通信事件的数据。
背景技术
在实时通信事件,诸如音频或视频呼叫中,发送器可以通过通信信道向接收器发送数据。通信信道可以存在于很多不同的可能网络中的一个(或多个)中。例如,通信信道可以存在于因特网或诸如移动电信网络的无线网络中。不利地,在通过通信信道发送时,数据(可能以数据分组的形式发送)可能被延迟或破坏。有多种技术可以用于应对数据在通信信道上发送时的延迟或破坏。
作为范例,可以在接收器处使用抖动缓冲器,以便消除实时通信事件中数据发送延迟变化的效应。这增大了尽管在分组传播延迟中的随机变化(称为抖动)也实现接收器处数据连续回放的可能性。抖动缓冲器置于接收器处,用于在接收器处开始回放之前累积一些数据分组,从而向通信事件中引入额外的延迟(抖动缓冲器延迟),这有助于适应数据分组传播延迟抖动。抖动缓冲器可以根据分组传播延迟中的变化调整其在通信事件期间的延迟。抖动缓冲器还可以对发自发送器的、到达接收器杂乱无章的数据分组排序,从而能够以正确的次序在接收器处回放数据分组。抖动缓冲器也可以丢弃迟到的数据分组,即在实时通信事件中在接收器处安排从抖动缓冲器播出它们的时间之后到达抖动缓冲器的数据分组。
抖动缓冲器的状态描述抖动缓冲器的当前条件,可以包括例如抖动缓冲器延迟、抖动缓冲器尺寸和/或抖动缓冲器中可用空间的指示。可以按照时间量例如秒(或更常见的,毫秒)数或按照内容(例如音频或视频数据)的帧数,表达抖动缓冲器延迟。可以按照数据量,例如比特、字节或分组数量,表达抖动缓冲器大小和抖动缓冲器中的可用空间。
可以根据折衷次数控制抖动缓冲器延迟,包括:
抖动缓冲器延迟和迟到数据分组数量(即在实时通信事件中在接收器处安排从抖动缓冲器播出它们的时间之后到达抖动缓冲器的数据分组数量)之间的折衷。尽管更高的抖动缓冲器延迟减小了迟到分组的量,但造成的回放延迟增大可以不利地影响实时通信的相互作用。因此可以相对于迟到数据分组的数量平衡抖动缓冲器延迟。通过这种方式,如果用于通信事件的通信信道上的条件变化,使得迟到数据分组的数量变化,则可以控制抖动缓冲器延迟,以平衡迟到数据分组数量的变化。
抖动缓冲器延迟的调整和引入到接收信号中的修改量之间的折衷。增大或减小抖动缓冲器延迟表示必须要比预期更慢或更快地在接收器处播出信号的一部分,这可能导致质量劣化。不过,在必要时调整抖动缓冲器延迟仍然可能是有益的,因此可以相对于引入到接收信号中的修改量平衡抖动缓冲器的调整。
通过这种方式,接收器能够控制通信事件中使用的抖动缓冲器延迟。
发明内容
发明人意识到在实时通信事件中处理要发送到抖动缓冲器的数据的方式和抖动缓冲器的状态是互相联系的。此外,发明人意识到,可能有益的是基于抖动缓冲器的状态来控制描述如何处理在实时通信事件中要从发送器向接收器的抖动缓冲器发送的数据的处理参数。类似地,可能有益的是基于用于在实时通信事件中处理要从发送器向抖动缓冲器发送的数据的处理参数来控制抖动缓冲器的状态。在一些实施例中,可以联合地确定处理参数和抖动缓冲器状态。
根据本发明的第一方面,提供了一种从发送器向接收器的抖动缓冲器发送实时通信事件的数据的方法,所述方法包括:在所述发送器处确定至少一个处理参数,所述处理参数描述在实时通信事件中如何处理数据以从所述发送器向所述抖动缓冲器发送;根据所确定的至少一个处理参数,处理要从发送器向抖动缓冲器发送的数据;基于所确定的至少一个处理参数从所述发送器向所述接收器发送控制信息,所述控制信息由所述接收器用于控制所述抖动缓冲器的状态;以及在实时通信事件中从所述发送器向所述接收器的抖动缓冲器发送已处理数据。
有利地,基于(一个或多个)处理参数,使用控制信息来控制抖动缓冲器的状态。这允许以将适合在发送器处理要发送到抖动缓冲器的数据的方式的方式来控制抖动缓冲器的状态。
至少一个处理参数可以包括任何影响接下来在接收器处如何处理已处理数据的参数,以便在接收器处播出。例如,至少一个处理参数可以包括如下至少一项:(i)用以在处理数据期间对数据编码的编码比特率,(ii)FEC深度,(iii)分组化延迟和(iv)交织延迟。
所述控制信息可以指示所确定的至少一个处理参数,所述方法还可以包括在所述接收器处基于指示的至少一个处理参数确定所述抖动缓冲器的状态。替选地,该方法还可以包括在所述发送器处基于所确定的至少一个处理参数确定所述抖动缓冲器的状态,其中所述控制信息可以指示所确定的抖动缓冲器的状态。可以在所述发送器处联合地确定所述至少一个处理参数和所述抖动缓冲器的状态。
可以确定所述处理参数以由此控制所发送数据的至少一个质量参数。所发送数据的所述至少一个质量参数可以包括如下至少一项:(i)编码质量,(ii)比特率,和(iii)相对于分组损失的鲁棒性。
处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤可以包括对数据编码,其中所述至少一个处理参数可以包括用以对数据编码的编码比特率。所述抖动缓冲器的状态可以包括所述抖动缓冲器的大小或所述抖动缓冲器中的可用空间,其中可以基于所述编码比特率确定所述抖动缓冲器的大小或所述抖动缓冲器中的可用空间。
所述已处理数据可以包括数据分组流,并且处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤可以包括产生与所述数据分组中的至少一个相关的校正数据单元,其中所述至少一个处理参数可以包括校正深度,所述校正深度设置允许与所述校正数据单元之一相关的最旧和最新数据分组之间的数据分组流中的最大可允许位移。所述抖动缓冲器的状态可以包括所述抖动缓冲器的延迟,其中可以基于校正深度确定抖动缓冲器的延迟。所述校正数据单元可以是前向纠错数据单元,所述校正深度可以是前向纠错深度。
所述数据可以包括数据单元流,处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤可以包括将所述数据单元分组化成要发送的数据分组,其中所述至少一个处理参数可以包括分组化延迟,所述分组化延迟设置从将所述数据单元分组化成数据分组得到的数据单元的最大可允许延迟。所述抖动缓冲器的状态可以包括所述抖动缓冲器的延迟,其中可以根据分组化延迟确定抖动缓冲器的延迟。
处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤可以包括交织要发送的至少一些数据单元,其中至少一个处理参数可以包括交织延迟,该交织延迟设置从交织数据单元得到的数据单元的最大可允许延迟。所述抖动缓冲器的状态可以包括所述抖动缓冲器的延迟,其中可以根据交织延迟确定抖动缓冲器的延迟。
所述抖动缓冲器状态可以包括如下至少一项:(i)所述抖动缓冲器的大小,(ii)所述抖动缓冲器的延迟,和(iii)所述抖动缓冲器中的可用空间。所述抖动缓冲器状态可以是所述抖动缓冲器的当前状态或所述抖动缓冲器的将来状态。
根据本发明的第二方面,提供了一种用于向接收器的抖动缓冲器发送实时通信事件的数据的发送器,所述发送器包括:确定模块,用于确定至少一个处理参数,所述处理参数描述在实时通信事件中如何处理数据以从所述发送器向所述抖动缓冲器发送;处理模块,用于根据所确定的至少一个处理参数处理要从发送器向抖动缓冲器发送的数据;以及发送模块,用于(i)基于确定的处理参数向所述接收器发送控制信息,所述控制信息由所述接收器用于控制所述抖动缓冲器的状态,以及(ii)在实时通信事件中向所述接收器的抖动缓冲器发送已处理数据。
根据本发明的第三方面,提供了一种用于从发送器向接收器的抖动缓冲器发送实时通信事件的数据的计算机程序产品,所述计算机程序产品包含在非暂态计算机可读介质上并且配置为使得在处理器上执行时执行这里所描述任何方法的步骤。
根据本发明的第四方面,提供了一种在接收器的抖动缓冲器处从发送器接收实时通信事件的数据的方法,所述方法包括:基于至少一个处理参数在所述接收器处从所述发送器接收控制信息,其中根据至少一个处理参数在所述发送器处处理数据以在实时通信事件中发送;基于接收的控制信息,控制抖动缓冲器的状态;以及在所述接收器的抖动缓冲器处从所述发送器接收所述实时通信事件的数据。
根据本发明的第五方面,提供了一种用于从发送器接收实时通信事件的数据的接收器,所述接收器包括:接收模块,用于基于至少一个处理参数从所述发送器接收控制信息,其中根据至少一个处理参数在所述发送器处处理数据以在实时通信事件中发送;一种用于从所述发送器接收实时通信事件的数据的抖动缓冲器;以及用于基于接收的控制信息来控制抖动缓冲器的状态的控制模块。
根据本发明的第六方面,提供了一种用于在接收器的抖动缓冲器处从发送器接收实时通信事件的数据的计算机程序产品,所述计算机程序产品包含在非暂态计算机可读介质上并且配置为使得在处理器上执行时执行这里描述的任一种方法的步骤。
根据本发明的第七方面,提供了一种用于从这里所描述的发送器向这里所描述的接收器发送实时通信事件中的数据的通信系统。
如上所述,在一个方面中,提供一种在接收器的抖动缓冲器处从发送器接收实时通信事件的数据的方法,所述方法包括:基于至少一个处理参数在所述接收器处从所述发送器接收控制信息,其中根据至少一个处理参数在所述发送器处处理数据以在实时通信事件中发送;基于接收的控制信息,控制抖动缓冲器的状态;以及在所述接收器的抖动缓冲器处从所述发送器接收所述实时通信事件的数据。
所述控制信息可以指示所述至少一个处理参数,且所述方法还可以包括在所述接收器处基于指示的至少一个处理参数确定所述抖动缓冲器的状态。
可以在所述发送器处基于所述至少一个处理参数确定所述抖动缓冲器的状态,且所述控制信息可以指示所确定的抖动缓冲器的状态。
处理要从所述发送器向所述抖动缓冲器发送的数据可以包括对数据编码,且所述至少一个处理参数可以包括用以对数据编码的编码比特率,且所述抖动缓冲器的状态可以包括所述抖动缓冲器的大小或所述抖动缓冲器中的可用空间,其中所述方法还可以包括基于所述编码比特率确定所述抖动缓冲器的大小或所述抖动缓冲器中的可用空间。
所述数据可以包括数据分组流,且处理要从所述发送器向所述抖动缓冲器发送的数据可以包括产生与所述数据分组中的至少一个相关的校正数据单元,且所述至少一个处理参数包括校正深度,所述校正深度设置允许与所述校正数据单元之一相关的最旧和最新数据分组之间的数据分组流中的最大可允许位移,且所述抖动缓冲器的状态可以包括所述抖动缓冲器的延迟,其中所述方法还可以包括基于所述校正深度确定所述抖动缓冲器的延迟。所述校正数据单元可以是前向纠错数据单元,所述校正深度可以是前向纠错深度。
所述数据可以包括数据单元流,且处理要从所述发送器向所述抖动缓冲器发送的数据可以包括将所述数据单元分组化成要发送的数据分组,所述至少一个处理参数包括分组化延迟,所述分组化延迟设置从将所述数据单元分组化成数据分组得到的数据单元的最大可允许延迟,其中所述抖动缓冲器的状态可以包括所述抖动缓冲器的延迟,且其中所述方法还可以包括根据所述分组化延迟确定所述抖动缓冲器的延迟。
所述数据可以包括数据单元流,且处理要从所述发送器向所述抖动缓冲器发送的数据可以包括交织至少一些要发送的数据单元,所述至少一个处理参数包括交织延迟,所述交织延迟设置从交织所述数据单元得到的数据单元的最大可允许延迟,其中所述抖动缓冲器的状态可以包括所述抖动缓冲器的延迟,且其中所述方法还可以包括根据所述交织延迟确定所述抖动缓冲器的延迟。
所述抖动缓冲器状态可以包括如下至少一项:(i)所述抖动缓冲器的大小,(ii)所述抖动缓冲器的延迟,和(iii)所述抖动缓冲器中的可用空间。
所述抖动缓冲器状态可以是所述抖动缓冲器的当前状态或所述抖动缓冲器的将来状态。
附图说明
为了更好地理解本发明并示出如何可以将其付诸实施,现在将以举例方式参考以下附图,其中:
图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能够处理数据(例如从存储器106检索)以(例如使用处理器104)形成包括多个数据分组的数据流。然后可以通过网络在通信信道上向接收器108的抖动缓冲器114发送数据流。如上所述,在从抖动缓冲器输出以在接收器108处(例如利用处理器110)处理之前,在抖动缓冲器中短时间(亦即,“抖动缓冲器延迟”)存储数据。接收器108处的处理可能涉及对来自数据流的数据解分组和解码。可以在接收器108处的存储器112中存储数据,或者从接收器108例如向用户输出数据。数据流中的数据可能涉及发送器102的用户和接收器108的用户之间的实时通信事件(诸如语音呼叫或视频呼叫)。
从发送器102向接收器108发送数据所经的网络可以是能够提供适当通信信道的任何适当网络。网络可以是广域网(WAN)或局域网(LAN)。例如,网络可以是内部网、因特网或诸如移动电话网络的电话网。可以在分别用于通过网络发送和接收数据流的任何适当设备或装置中实施发送器102和接收器108。例如,可以将发送器102和接收器108实现为用户装置,诸如能够连接到网络的个人计算机或电话。
抖动缓冲器114的状态在抖动缓冲器114从发送器102接收到数据时以及在从抖动缓冲器114取出数据以在接收器108中处理时而改变。可以根据从发送器102接收直到取出以在接收器108中处理将在抖动缓冲器114中存储数据的时间(抖动缓冲器延迟),或根据抖动缓冲器114中数据内容的帧数或根据例如测量为抖动缓冲器114中存在的数据比特数或字节数的数据量,由描述抖动缓冲器114中当前数据量的参数(诸如抖动缓冲器114的延迟或大小)描述抖动缓冲器114的状态。抖动缓冲器114的状态也可以描述抖动缓冲器114中的可用空间,可以将其确定为抖动缓冲器114的最大允许大小减去抖动缓冲器114的当前大小。
可以看出,抖动缓冲器114的状态影响接收器108处如何接收数据。因此,在抖动缓冲器114的状态变化时,可能有利的是根据抖动缓冲器114的当前状态改变处理数据以发送到接收器108的方式。因此发明人意识到,向发送器102发送接收器108的抖动缓冲器状态(例如抖动缓冲器114的当前大小或延迟和抖动缓冲器114中的可用空间)可能是有益的,其中可以基于抖动缓冲器114的状态控制发送器的处理模块工作。
参考图2,描述了从发送器102向接收器108的抖动缓冲器114发送数据的第一种方法。在步骤S202中,发送器102从接收器108的抖动缓冲器114接收抖动缓冲器状态信息(如图1所示)。抖动缓冲器状态信息表示抖动缓冲器114的当前状态,例如可以指示抖动缓冲器114的当前延迟或大小,还可以指示抖动缓冲器114中的可用空间。抖动缓冲器状态信息可以指示抖动缓冲器114的其他属性,其在确定如何最好地处理数据以从发送器102向接收器108的抖动缓冲器114发送时可能有用。
在步骤S204中,基于在步骤S202中接收的抖动缓冲器信息来控制发送器102的至少一个处理参数。(一个或多个)处理参数描述在实时通信事件中如何处理数据以从发送器102向接收器108的抖动缓冲器114发送。可以在步骤S204中控制的可能处理参数的范例包括编码比特率、FEC深度、分组化延迟和交织延迟。下文更详细地描述了这些范例。本领域的技术人员将明了,可以用与这里给出的范例类似的方式控制用于处理数据以从发送器102向接收器108的抖动缓冲器114发送的其他处理参数。
在步骤S206中,根据在步骤S204中确定的(一个或多个)处理参数处理数据以在发送器102处发送。可以由发送器102中的若干处理模块处理数据。例如,可以有编码模块、FEC模块、分组化模块和交织模块。每个模块都可以根据在步骤S204中确定的(一个或多个)处理参数工作。通过根据在步骤S204中确定的(一个或多个)处理参数处理数据,以适于根据抖动缓冲器114的状态在抖动缓冲器114处被接收这样的方式处理数据。
在步骤S208中,从发送器102向接收器108的抖动缓冲器114发送已处理数据。通过网络发送数据,不利地,在发送数据时可能有一些可变延迟或破坏。如上所述,在接收器108处使用抖动缓冲器114有助于克服由数据发送时的可变延迟和破坏引入的问题。
因此上文描述了一种从发送器102向接收器108发送实时通信事件中的数据的方法,由此基于在接收器108处接收数据的抖动缓冲器114的状态来控制在发送器102处处理数据以向接收器108发送的方式。
如下文所述,当前的抖动缓冲器状态影响实时通信事件中用于处理数据以发送到抖动缓冲器114的若干处理模块的性能。
⒈编码器比特率
发送器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处的数据输出中将没有延迟,并且根据增大的比特率,数据质量能够保持很高。
因此可以看出,用于对从发送器102向接收器108的抖动缓冲器114发送的数据编码的编码比特率可以依赖于由在步骤S202中发送器102处从接收器108接收的抖动缓冲器状态信息指示的抖动缓冲器114状态进行控制。
⒉前向纠错
可以将数据流中的数据分成数据分组,以通过发送器102和接收器108之间的通信信道发送。在理想的系统中,通信信道是无损的,从而在接收器108的抖动缓冲器114处接收从发送器102通过通信信道发送的每个数据分组。不过,在真实的物理系统中,通信信道可能是有损耗的,表示一些发送的数据分组将在通信信道上损失,这样将不会在接收器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,那么可以在接收器处(利用FEC数据单元404)成功恢复数据分组402中的数据。如图4b所示,可以使用模块408来产生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。有限域(Galois域)算术可以用于组合原始数据分组。例如,混合模块418可以确定应用于三个数据分组412、414和416的XOR函数的逐个比特结果,以产生FEC数据单元420。在另一种方法中,利用Galois域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导致的额外算法延迟。不过,为了重建在接收器108处损失的数据分组,在接收器108处采取延迟,因为FEC数据单元的产生和发送晚于其所基于的数据分组。可以在图5中示出的时序图看出这点。图5示出了其中使用数据流的三个数据分组(502,504和506)产生FEC数据单元508的状况。在产生全部三个数据分组502、504和506之前,不能产生FEC数据单元。因此,在发送器102处产生FEC数据单元508之前,将从发送器102发送数据分组502和504。因此,最早可以发送FEC数据单元508的时间就在数据分组506之后。图5中示出了这种情形。数据分组和FEC数据单元的发送花费有限量的时间。图5示出了通过网络在有损通信信道上发送期间数据分组502的损失(510)。不过,数据分组504和506和FEC数据单元508全都在接收器108处被成功接收。可以使用数据分组504和506与FEC数据单元508来恢复接收器108处损失的数据分组502。不过,在接收器108的抖动缓冲器114处接收到全部三个数据分组504和506以及FEC数据单元508之前,不能恢复损失的数据分组502。因此,如图5所示,在接收器108处应当接收到数据分组502的时间(如果其未损失)和可以利用FEC数据单元508恢复数据分组的时间之间存在对数据分组502进行FEC恢复所需的延迟。如果不满足数据流的延迟要求,则将判定损失的数据分组502在到达FEC数据单元508之前在接收器108处不可解码。这将很可能导致FEC方案的性能显著下降。
不过,不必由FEC在接收器108处引入这种延迟作为额外的延迟。例如,在接收器108处可能已经存在所需的延迟。接收器108处延迟的一种可能原因是存在抖动缓冲器114。如上所述,抖动缓冲器114向数据流中引入延迟,以便缓解分组到达时间的随机变化(抖动)。如果在应当从抖动缓冲器114输出数据分组502(如果在发送期间未损失)的时间之前接收到FEC数据单元508,那么可以有可能恢复数据分组502而不会在接收器108处在抖动缓冲器114已经引入的延迟之外引入任何额外延迟。应当选择FEC深度,以便保持损失的数据分组和FEC数据单元之间的延迟,这可以用于在接收器108的延迟要求之内恢复损失的数据分组。因此,对于实时数据发送(例如,视频呼叫或音频呼叫),可以将FEC深度设置为较低数字。
给定抖动缓冲器114的尺寸,发送器102处的FEC方案可以选择最高可能深度,而不会进一步增大(或最小限度地增大)接收器108处的延迟。在抖动缓冲器114的大小增大时,FEC的深度相应增大。在要减小抖动缓冲器的大小时,相应地减小FEC的深度(或在接收器108处引入额外延迟以应对FEC深度)。为了避免后一种情况下FEC性能突然下降,在响应于期望的抖动缓冲器大小减小而减小FEC深度之前不应当减小抖动缓冲器114的大小(或者应当在接收器处引入额外的延迟以应对FEC深度)。
⒊分组化
发送器102可以包括处理模块,用于在实时通信事件中将数据分组化成数据分组以发送到接收器108。可以在发送器102处在硬件或软件(例如在CPU104上执行)中实现处理模块。用于将数据分成数据分组(例如,形式为数据分组的包头和其他这样的实施细节)的协议可以取决于要在其上发送数据的通信信道的性质,例如要通过其发送数据分组的网络类型。
在编码数据单位小时,可能有利的是将它们放入一个更大的数据分组中发送,而不是利用独立的小数据分组发送。这减小关联的分组包头开销。换言之,由于发送更少的数据分组,所以有更少的分组包头,这样就减小了发送的分组包头数据量。
图6示出了要从发送器102向接收器108发送数据流的六个相继数据单元6021到6026的范例。在图6中所示的范例中,在数据分组中发送数据单元,由此在每个数据分组中发送三个数据单元。亦即,仅发送两个更大的分组,而不是发送六个小分组,每个分组仅包含数据单元之一。例如,在图6中所示的范例中,从发送器102向接收器108发送两个数据分组604和606。数据分组604包括前三个数据单元(数据单元1、2和3),而数据分组606包括后三个数据单元(数据单元4、5和6)。
在数据单元的这种分组化减小了分组包头开销,其以延迟为代价。我们将这一延迟称为分组化延迟。例如,在图6所示的状况中,数据单元1在产生数据单元3之前不被发送,因为数据单元1、2和3全部在数据分组604中共同发送。这意味着,数据单元1在发送器102处被产生以及在接收器108处被接收之间的延迟比数据单元3的对应延迟更高。图6中,分组化延迟被示为如果每个数据单元被独立发送则在接收器108处会接收到数据单元1的时间和在数据分组604中接收到数据单元1的时间之间的时间间隔。
不过,如果接收器108能够容忍数据单元1的分组化延迟,例如,如果在接收器108处接收到数据分组604之前,在接收器108处解码和/或回放不需要数据单元1,那么分组化延迟不会变成数据单元发送的额外延迟/成本。由于接收器108处的抖动缓冲器延迟,可能是这种情况。例如,抖动缓冲器114可以具有充分多更早的数据(数据流中的先前数据单元1)以在数据分组604到达之前提供连续解码和/或回放。因此,抖动缓冲器114的状态,尤其是当前抖动缓冲器的延迟将影响可以容忍的分组化延迟量。
发送器102处实施的分组化方案使用在步骤S202中在发送器102处从接收器108接收的抖动缓冲器状态信息以控制所发送数据的分组化延迟。例如,可以控制分组化延迟,使得给定抖动缓冲器114的抖动缓冲器延迟,它被最大化,而不会进一步增大(或最小限度增大)所发送数据流的数据单元总延迟。因此,可以控制分组化延迟使其对应于抖动缓冲器114的延迟。这意味着,可以控制分组化延迟以等于(或近似等于)抖动缓冲器114的延迟。
4.交织
发送器102可以包括处理模块用于在实时通信事件中对数据单元交织以发送到接收器108。可以在发送器102处在硬件或软件(例如在CPU104上执行)中实现处理模块。用于交织数据单元的协议可能取决于要在其上发送数据的通信信道的性质,例如,要通过其发送交织数据单元的网络类型。
使用交织以通过非相继方式布置数据单元,以便在发送期间分布和最小化分组损失的效果。交织减小了由于数据流发送期间分组损失或分组损失突发而使相继数据单元未到达接收器108的概率。与损失相继数据单元相比,损失不相继的数据单元通常导致数据流质量的更小下降。此外,交织增大了相邻数据单元可用于隐藏损失的数据单元的概率,这从而通常导致损失单元更高的隐藏质量。在形成数据分组时以及在发送数据分组时都可以使用交织。
在一个范例中,在发送数据分组时使用交织。图7示出了六个相继的数据单元,其中将每个单元放到独立的数据分组(7021到7026)中,以从发送器102向接收器108发送。在如上所述的其他实施例中,可以将超过一个数据单元分组到每个数据分组,以在发送器102处根据分组化方案发送。在不应用交织时,按照{1,2,3,4,5,6}的次序,即按照相继次序发送数据分组702。在这种情况下,发送期间的损失突发(相继数据分组的损失)导致数据流的相继数据单元损失,这可能对于接收器108处所接收数据质量尤其不利。
不过,在应用交织时,然后数据分组发送的次序不是按照数据单元的相继次序。例如,图7示出了按照{1,3,5,2,4,6}的次序发送的数据分组。在这种情况下,发送期间的损失突发(相继数据分组的损失)可能导致数据流的不相继数据单元损失,这可能对于接收器108处所接收数据质量没有那么不利。例如,可以在接收器处正确接收到数据流中的相邻数据单元,其可以用于隐藏损失的数据单元。
尽管交织减小了发送期间数据分组损失的影响,但其代价是延迟。防止顺序发送数据单元表示将仅在产生和发送数据流中较晚数据单元之后才发送较早的数据单元。在以上范例中,仅在产生并发送数据单元3和5之后才发送数据单元2。因此,在数据单元1之后接收器108处将不会立即有数据单元2。为了便于在接收器108处连续回放数据流,可以更慢地播放数据单元1,直到接收到数据单元2,或者可以用正常速度播放数据单元1但起点被延迟,或利用其组合。就一切情况而论,交织需要接收器108处的回放延迟,这称为“交织延迟”。图7中将交织延迟示为如果相继发送数据单元则在接收器108处会接收到数据单元2的时间和由于交织数据分组而接收到数据单元2的时间之间的时间间隔。
不过,仅仅由于交织,未必需要在接收器108处引入延迟。如上所述,由于抖动缓冲器114,接收器处可能已经存在延迟。如果接收器108能够容忍数据单元2的交织延迟,例如,如果在接收器108处接收到数据单元2之前,在接收器108处解码和/或回放不需要数据单元2,那么交织延迟不会变成数据单元发送的额外延迟/成本。由于接收器108处的抖动缓冲器延迟,可能是这种情况。例如,抖动缓冲器114可以具有充分多更早的数据(数据流中的先前数据单元2)以在数据单元2到达接收器108之前提供连续解码和/或回放。因此,抖动缓冲器114的状态,尤其是当前抖动缓冲器的延迟将影响可以容忍的交织延迟量。
发送器102处实施的交织方案使用在步骤S202中在发送器102处从接收器108接收的抖动缓冲器状态信息以控制所发送数据的交织延迟。例如,可以控制交织延迟,使得给定抖动缓冲器114的抖动缓冲器延迟,它被最大化,而不会进一步增大(或最小限度增大)所发送数据流的数据单元总延迟。因此,可以控制交织延迟使其对应于抖动缓冲器114的延迟。这意味着,可以控制交织延迟以等于(或近似等于)抖动缓冲器114的延迟。
在另一个范例中,在形成数据分组以从发送器102向接收器108发送时,使用交织。将若干编码数据单元放到每个数据分组中。考虑六个相继的数据单元1、2、3、4、5、6,以及将三个数据单元分组化成第一数据分组而另外三个数据单元分组化成第二数据分组的情况。如果不应用交织,那么第一数据分组会包括前三个数据单元{1,2,3},而第二数据分组会包括后三个数据单元{4,5,6}。在这种情况下,发送期间的数据分组损失导致数据流的相继数据单元损失,这可能对于接收器108处所接收数据质量尤其不利。
不过,在实施交织时,第一数据分组可以包括数据单元{1,3,5},而第二数据分组可以包括数据单元{2,4,6}。在这种情况下,发送期间的数据分组损失导致数据流的不相继数据单元损失,这可能对于接收器108处所接收数据质量没有那么不利。例如,可以在接收器处正确接收到数据流中的相邻数据单元,其可以用于隐藏损失的数据单元。
在本范例中,发送器102引入了延迟,即分组化和交织延迟的组合。不过,如上所述,如果由于抖动缓冲器114的延迟,接收器处已经存在这种组合延迟,它可能不是额外的延迟。因此,可以共同控制交织延迟和分组化延迟,使得组合延迟(分组化延迟+交织延迟)对应于抖动缓冲器114的延迟,如步骤S202中在发送器102处接收的抖动缓冲器状态信息所示。
因此,上面描述了基于接收器108的抖动缓冲器114状态控制发送器102的处理模块工作的方法。可以联合控制处理参数。通过这种方式,基于抖动缓冲器114的状态,控制描述如何处理数据以发送到接收器108的处理参数,从而优化处理数据的方式以适合抖动缓冲器114的状态。
在上述实施例中,抖动缓冲器114的状态是抖动缓冲器114的当前状态。在替选实施例中,向发送器102指示的抖动缓冲器状态可以是抖动缓冲器的将来状态,指示抖动缓冲器可能在从发送器102向接收器108的抖动缓冲器114发送数据时的将来某个点具有的状态。
参考图8,现在描述另一种优化发送器102处使用的处理参数和抖动缓冲器114状态之间关系的方法。
在步骤S802中,确定会在处理数据以发送到接收器108时对发送器102使用将是有益的处理参数。这些处理参数可以是如上所述基于抖动缓冲器114状态确定的处理参数的调节版本。替选地,可以在步骤S802中确定处理参数而不考虑抖动缓冲器114的状态。如上所述,处理参数可以包括编码比特率、FEC深度、分组化延迟和交织延迟中的一种或多种。
在步骤S804中,使用在步骤S802中确定的处理参数来确定会适于接收已经根据在步骤S802中确定的处理参数处理过的数据的抖动缓冲器114的状态。例如,如果增大编码比特率,那么可能需要增大抖动缓冲器114中的可用空间以适应由于编码比特率增大而要发送的额外数据。应当根据数据编码比特率的变化并根据发送路径的瓶颈来调整抖动缓冲器的大小。如果抖动缓冲器中的可用空间是发送路径中的瓶颈,那么应当减小抖动缓冲器114的当前大小以允许在抖动缓冲器114处接收更多数据。替选地,如果通信信道是发送路径中的瓶颈,并且增大比特率导致传播延迟增大,那么抖动缓冲器114必须要确保具有充分多的更早数据,以保证在等待新数据时连续回放。
作为另一范例,如果用于产生要发送的数据流数据单元的FEC数据单元的FEC深度增大,那么可能需要增大抖动缓冲器114的延迟,从而可以在需要它们之前在抖动缓冲器114处接收到FEC数据单元,以便校正数据单元发送中的误差。作为另一范例,如果分组化延迟和交织延迟之一或两者增大,那么可能需要相应地增大抖动缓冲器114的延迟,从而在需要从抖动缓冲器114输出数据单元之前在接收器108的抖动缓冲器114接收到它们。确定在步骤S804中确定的抖动缓冲器状态以优化抖动缓冲器114用于接收在发送器102处基于处理参数处理的数据的操作。
在步骤S806中,从发送器102向接收器108发送在步骤S804中确定的抖动缓冲器状态的指示。可以在从发送器向接收器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中,发送器102中用于处理数据以发送到接收器108的抖动缓冲器114的处理参数与用于控制抖动缓冲器114状态的抖动缓冲器控制信息一起被确定。共同确定处理参数和抖动缓冲器控制信息,使得它们彼此适合(或“优化”)。因此,处理根据处理参数处理的数据,使得其得到优化以由工作于抖动缓冲器控制信息指示的抖动缓冲器状态中的抖动缓冲器114接收。在发送器102处执行步骤S902的联合确定。
在步骤S904中,从发送器102向接收器108发送抖动缓冲器控制信息。可以在从发送器向接收器108发送数据的同时发送抖动缓冲器控制信息,或者可以在从发送器向接收器108发送数据之前发送抖动缓冲器控制信息。抖动缓冲器控制信息的发送将需要从发送器102向接收器108发送少量的比特,其可以从发送器102向接收器108在独立数据分组中发送或者附到现有数据分组中。
在步骤S906,在接收器108处使用抖动缓冲器控制信息以设置抖动缓冲器114的状态。例如,可以根据已经在步骤S902中与处理参数一起确定的抖动缓冲器控制信息来设置抖动缓冲器114的大小或延迟。
在步骤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的(一个或多个)处理参数的指示。在那种情况下,接收器108基于从发送器102接收的处理参数的指示来确定抖动缓冲器114的状态。
图10是从发送器102向接收器108发送实时通信事件数据的过程的流程图。在步骤S1002中,确定发送器102中用于处理数据以发送到接收器108的抖动缓冲器114的处理参数。可以确定处理参数以改善已处理数据的质量。
在步骤S1004中,从发送器102向接收器108发送控制信息。如上所述,控制信息可以包括在步骤S1002中确定的抖动缓冲器114的状态指示和/或处理参数的指示。可以在从发送器102向接收器108发送数据的同时发送控制信息,或者可以在从发送器102向接收器108发送数据之前发送控制信息。控制信息的发送将需要从发送器102向接收器108发送少量的比特,其可以从发送器102向接收器108在独立数据分组中发送或者附到现有数据分组中。
在步骤S1006中,在接收器108处使用控制信息以设置抖动缓冲器114的状态。例如,可以根据控制信息设置抖动缓冲器114的大小或延迟。
在步骤S1008中,在发送器102处使用在步骤S1002中确定的处理参数来处理实时通信事件的数据。
在步骤S1010中,从发送器102向接收器108的抖动缓冲器114发送已处理数据。如上所述,抖动缓冲器114将处在适于接收已经根据在步骤S1002中确定的处理参数处理过的数据的状态。
例如,发送器102可以仅仅基于对应处理模块(例如处理模块的发送器和接收器部分的组合)的性能来决定处理参数的最佳值,而不是联合地优化处理参数和抖动缓冲器114的状态。例如,在发送器102处确定用于FEC方案的处理参数时,发送器102处的FEC编码器可能决定增大FEC深度以改善数据流从发送期间的分组损失恢复的能力。接收器108处的FEC解码器将相应地增大其延迟。如果抖动缓冲器114的延迟低于对应于新FEC深度的延迟,那么在接收器108处播出数据时可能有问题。在现有技术的系统中,FEC解码器处的新延迟将被抖动缓冲器视为增大的延迟/抖动。抖动缓冲器然后将相应地调整其延迟,但这种调整可能发生得太晚或太快,因而接收器108处播出的信号质量可能受影响。不过,相反,根据上述方法,发送器102处的FEC编码器在FEC深度改变之前通知抖动缓冲器114,那么抖动缓冲器114就有时间为FEC延迟的变化做准备。在这种情况下,抖动缓冲器114将为延迟增大做准备,并将更慢播放其内容,同时等待更多数据分组到达。这将改善在接收器108处播出的信号质量。
示出的上述方法步骤(尤其是图2、8、9和10中所示的方法步骤)可以实现于发送器102和接收器108处的硬件或软件中。例如,在软件中执行方法步骤时,可以通过在发送器102和接收器108的处理模块上从计算机程序产品执行指令来实施它们。
本领域的技术人员将明了,可以通过任何适当方式组合上述不同实施例的特征。
此外,尽管已经参考优选实施例特别示出并描述了本发明,但本领域的技术人员将理解,在不脱离如所附权利要求界定的本发明范围的情况下可以在形式和细节上做出各种改变。

Claims (9)

1.一种从发送器向接收器的抖动缓冲器发送实时通信事件的数据的方法,所述方法包括:
在所述发送器处确定至少一个处理参数,所述处理参数描述在实时通信事件中如何处理数据以从所述发送器向所述抖动缓冲器发送;
根据所确定的至少一个处理参数,处理要作为数据分组的流从发送器向所述抖动缓冲器发送的数据,所述处理数据包括产生与所述数据分组中的至少一个相关的校正数据单元,所述至少一个处理参数包括校正深度,所述校正深度设置允许与所述校正数据单元之一相关的最旧和最新数据分组之间的数据分组的流中的最大可允许位移;
基于所确定的至少一个处理参数,从所述发送器向所述接收器发送控制信息,所述控制信息有效地使得所述接收器能够控制所述抖动缓冲器的状态;以及
在实时通信事件中从所述发送器向所述接收器的抖动缓冲器发送已处理数据。
2.根据权利要求1所述的方法,其中:
(i)所述控制信息指示所确定的至少一个处理参数,且其中所述方法还包括在所述接收器处基于指示的至少一个处理参数确定所述抖动缓冲器的状态,或者
(ii)所述方法还包括在所述发送器处基于所确定的至少一个处理参数确定所述抖动缓冲器的状态,其中所述控制信息指示所确定的抖动缓冲器的状态。
3.根据权利要求2所述的方法,其中在所述发送器处联合地确定所述至少一个处理参数和所述抖动缓冲器的状态。
4.根据任一前述权利要求所述的方法,其中所确定的至少一个处理参数可用于控制所发送数据的至少一个质量参数,并且其中所发送数据的所述至少一个质量参数包括如下至少一项:(i)编码质量,(ii)比特率,或者(iii)相对于分组损失的鲁棒性。
5.根据权利要求1所述的方法,其中处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤还包括对数据编码,且其中所述至少一个处理参数包括用以对数据编码的编码比特率,且其中所述抖动缓冲器的状态包括所述抖动缓冲器的大小或所述抖动缓冲器中的可用空间,其中基于所述编码比特率确定所述抖动缓冲器的大小或所述抖动缓冲器中的可用空间。
6.根据权利要求1所述的方法,其中所述抖动缓冲器的状态包括所述抖动缓冲器的延迟,其中基于所述校正深度确定所述抖动缓冲器的延迟,且其中所述校正数据单元是前向纠错数据单元,所述校正深度是前向纠错深度。
7.根据权利要求1所述的方法,其中所述数据包括数据单元的流,且其中处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤包括将所述数据单元分组化成要发送的数据分组,且其中所述至少一个处理参数包括分组化延迟,所述分组化延迟设置从将所述数据单元分组化成数据分组得到的所述数据单元的最大可允许延迟,且其中所述抖动缓冲器的状态包括所述抖动缓冲器的延迟,且其中根据所述分组化延迟确定所述抖动缓冲器的延迟。
8.根据权利要求1所述的方法,其中所述数据包括数据单元流,且其中处理要从所述发送器向所述抖动缓冲器发送的数据的所述步骤包括交织至少一些要发送的数据单元,且其中所述至少一个处理参数包括交织延迟,所述交织延迟设置从交织所述数据单元得到的数据单元的最大可允许延迟,且其中所述抖动缓冲器的状态包括所述抖动缓冲器的延迟,且其中根据所述交织延迟确定所述抖动缓冲器的延迟。
9.一种用于向接收器的抖动缓冲器发送实时通信事件的数据的发送器,所述发送器包括:
确定模块,用于确定至少一个处理参数,所述处理参数描述在实时通信事件中如何处理数据以从所述发送器向所述抖动缓冲器发送;
处理模块,用于根据所确定的至少一个处理参数来处理要作为数据分组的流从发送器向抖动缓冲器发送的数据,其包括产生与所述数据分组中的至少一个相关的校正数据单元,所述至少一个处理参数包括校正深度,所述校正深度设置允许与所述校正数据单元之一相关的最旧和最新数据分组之间的数据分组的流中的最大可允许位移;以及
发送模块,用于(i)基于确定的至少一个处理参数向所述接收器发送控制信息,所述控制信息有效地使得所述接收器能够控制所述抖动缓冲器的状态,以及(ii)在实时通信事件中向所述接收器的抖动缓冲器发送已处理数据。
CN201210411881.7A 2011-10-25 2012-10-25 抖动缓冲器 Active CN103023813B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1118392.8A GB2495927B (en) 2011-10-25 2011-10-25 Jitter buffer
GB1118392.8 2011-10-25

Publications (2)

Publication Number Publication Date
CN103023813A CN103023813A (zh) 2013-04-03
CN103023813B true CN103023813B (zh) 2016-06-15

Family

ID=45373367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210411881.7A Active CN103023813B (zh) 2011-10-25 2012-10-25 抖动缓冲器

Country Status (3)

Country Link
US (2) US8948214B2 (zh)
CN (1) CN103023813B (zh)
GB (3) GB2495927B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
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
GB2495928B (en) 2011-10-25 2016-06-15 Skype Jitter buffer
GB2495927B (en) 2011-10-25 2015-07-15 Skype Jitter buffer
GB2495929B (en) 2011-10-25 2014-09-03 Skype Jitter buffer
PL3011692T3 (pl) 2013-06-21 2017-11-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Sterowanie buforem rozsynchronizowania, dekoder sygnału audio, sposób i program komputerowy
ES2667823T3 (es) 2013-06-21 2018-05-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Escalador de tiempo, decodificador de audio, procedimiento y programa informático mediante el uso de un control de calidad
EP2822230B1 (de) * 2013-07-04 2017-10-18 Omicron electronics GmbH Datenübertragung über einen Speicher einer Kommunikationsvorrichtung
US9246852B2 (en) * 2013-11-05 2016-01-26 National Instruments Corporation Lossless time based data acquisition and control in a distributed system
US9740436B2 (en) * 2014-11-14 2017-08-22 International Business Machines Corporation Elastic file system management in storage cloud environments
CN113206773B (zh) * 2014-12-23 2024-01-12 杜比实验室特许公司 与语音质量估计相关的改进方法和设备
US10652120B2 (en) 2015-05-07 2020-05-12 Dolby Laboratories Licensing Corporation Voice quality monitoring system
US9749178B2 (en) 2015-09-18 2017-08-29 Whatsapp Inc. Techniques to dynamically configure target bitrate for streaming network connections
US10412779B2 (en) * 2015-09-18 2019-09-10 Whatsapp Inc. Techniques to dynamically configure jitter buffer sizing
KR102532645B1 (ko) * 2016-09-20 2023-05-15 삼성전자 주식회사 적응적 스트리밍 서비스에서 스트리밍 어플리케이케이션으로 데이터를 제공하는 방법 및 장치
CN112527782B (zh) * 2019-09-19 2023-09-22 北京京东振世信息技术有限公司 一种数据处理的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1541470A (zh) * 2001-08-10 2004-10-27 Ħ��������˾ 确定重新排序缓冲器容量的方法和通过射频链路传送数据的方法
CN101507203A (zh) * 2006-08-22 2009-08-12 诺基亚公司 抖动缓冲器调节

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2281680B (en) 1993-08-27 1998-08-26 Motorola Inc A voice activity detector for an echo suppressor and an echo suppressor
US5543853A (en) 1995-01-19 1996-08-06 At&T Corp. Encoder/decoder buffer control for variable bit-rate channel
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
US6826177B1 (en) 1999-06-15 2004-11-30 At&T Corp. Packet telephony appliance
US6980569B1 (en) 1999-10-18 2005-12-27 Siemens Communications, Inc. Apparatus and method for optimizing packet length in ToL networks
AU1359601A (en) 1999-11-03 2001-05-14 Tellabs Operations, Inc. Integrated voice processing system for packet networks
FI107680B (fi) * 1999-12-22 2001-09-14 Nokia Oyj Menetelmä videokuvien lähettämiseksi, tiedonsiirtojärjestelmä, lähettävä videopäätelaite ja vastaanottava videopäätelaite
FI108692B (fi) 1999-12-30 2002-02-28 Nokia Corp Menetelmä ja laite datapakettien prosessoinnin ajoittamiseksi
US7058568B1 (en) 2000-01-18 2006-06-06 Cisco Technology, Inc. Voice quality improvement for voip connections on low loss network
US6754342B1 (en) 2000-07-31 2004-06-22 Cisco Technology, Inc. Method and apparatus for concealing mute in an IP-based telephony system
DE10041512B4 (de) 2000-08-24 2005-05-04 Infineon Technologies Ag Verfahren und Vorrichtung zur künstlichen Erweiterung der Bandbreite von Sprachsignalen
US6829244B1 (en) 2000-12-11 2004-12-07 Cisco Technology, Inc. Mechanism for modem pass-through with non-synchronized gateway clocks
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
US20040204935A1 (en) 2001-02-21 2004-10-14 Krishnasamy Anandakumar Adaptive voice playout in VOP
US6904059B1 (en) * 2001-03-06 2005-06-07 Microsoft Corporation Adaptive queuing
US6820054B2 (en) 2001-05-07 2004-11-16 Intel Corporation Audio signal processing for speech communication
US20040233931A1 (en) * 2001-09-12 2004-11-25 Ron Cohen Method for calculation of jitter buffer and packetization delay
US20040002339A1 (en) 2002-06-28 2004-01-01 Nortel Networks Limited Method and apparatus for allocating bandwidth resources
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
US7269141B2 (en) 2002-09-24 2007-09-11 Accton Technology Corporation Duplex aware adaptive playout method and communications device
US7289451B2 (en) 2002-10-25 2007-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Delay trading between communication links
CN1751518B (zh) * 2003-02-18 2010-12-01 诺基亚有限公司 图像编码方法
CA2489268C (en) 2003-05-10 2008-10-14 Hwan-Joon Kwon Apparatus and method for controlling a reverse traffic rate in a mobile communication system
AU2004301258B2 (en) 2003-07-16 2007-04-26 Microsoft Technology Licensing, Llc Peer-to-peer telephone system and method
GB2405773B (en) * 2003-09-02 2006-11-08 Siemens Ag A method of controlling provision of audio communication on a network
US20050201471A1 (en) * 2004-02-13 2005-09-15 Nokia Corporation Picture decoding method
EP1754327A2 (en) * 2004-03-16 2007-02-21 Snowshore Networks, Inc. Jitter buffer management
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
EP2189978A1 (en) 2004-08-30 2010-05-26 QUALCOMM Incorporated Adaptive De-Jitter Buffer for voice over IP
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
US20060218636A1 (en) 2005-03-24 2006-09-28 David Chaum Distributed communication security systems
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
US20090016333A1 (en) 2006-06-14 2009-01-15 Derek Wang Content-based adaptive jitter handling
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
GB0705329D0 (en) 2007-03-20 2007-04-25 Skype Ltd Method of transmitting data in a communication system
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 ソニー株式会社 送信装置および方法、並びに、受信装置および方法
US9686570B2 (en) * 2010-02-12 2017-06-20 Thomson Licensing Method for synchronized content playback
US8633963B2 (en) 2010-04-27 2014-01-21 Lifesize Communications, Inc. Determining buffer size based on retransmission latency
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
GB2495927B (en) 2011-10-25 2015-07-15 Skype Jitter buffer
GB2495928B (en) 2011-10-25 2016-06-15 Skype Jitter buffer
GB2495929B (en) 2011-10-25 2014-09-03 Skype Jitter buffer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1541470A (zh) * 2001-08-10 2004-10-27 Ħ��������˾ 确定重新排序缓冲器容量的方法和通过射频链路传送数据的方法
CN101507203A (zh) * 2006-08-22 2009-08-12 诺基亚公司 抖动缓冲器调节

Also Published As

Publication number Publication date
GB2520867B (en) 2016-05-18
US20150110135A1 (en) 2015-04-23
CN103023813A (zh) 2013-04-03
GB2495927A (en) 2013-05-01
GB2520866B (en) 2016-05-18
GB201118392D0 (en) 2011-12-07
US20130100969A1 (en) 2013-04-25
US8948214B2 (en) 2015-02-03
GB2520866A (en) 2015-06-03
GB201501928D0 (en) 2015-03-25
US9246644B2 (en) 2016-01-26
GB2495927B (en) 2015-07-15
GB2520867A (en) 2015-06-03
GB201501929D0 (en) 2015-03-25

Similar Documents

Publication Publication Date Title
CN103023813B (zh) 抖动缓冲器
CN102984090B (zh) 一种用于发送实时通信事件数据到接收器的抖动缓冲器的发送器及其方法
US9258084B2 (en) Method and implementation for network coefficents selection
EP2766995B1 (en) Encoding apparatus and encoding method in data communication system
JP5442816B2 (ja) 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
CN102984091B (zh) 抖动缓冲器
CN108174234A (zh) 一种流媒体传输方法及系统
CN110224793B (zh) 一种基于媒体内容的自适应fec方法
KR102251278B1 (ko) 일종 미디어 컨텐츠에 기반한 fec 메커니즘
US10020914B2 (en) Methods and apparatus for maximum utilization of a dynamic varying digital data channel
US20150006991A1 (en) Graceful degradation-forward error correction method and apparatus for performing same
CN110868616A (zh) 一种5g网络下低延时高可靠视频传输方法
US10833710B2 (en) Bandwidth efficient FEC scheme supporting uneven levels of protection
CN108667557A (zh) 一种基于媒体内容的自适应fec编码矩阵设计方法
KR20100112151A (ko) 네트워크 카드 및 정보 처리 장치
KR100916312B1 (ko) 적응적 가중 오류 정정 부호화 및 다중 표현열 부호화를사용한 비디오 전송 장치 및 그 방법
CN113489645B (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