媒体缓冲的制作方法

文档序号:17441509发布日期:2019-04-17 04:49阅读:155来源:国知局
媒体缓冲的制作方法

通信网络越来越多地用于诸如语音和视频通信之类的实时通信。在这样的领域中,构成这样的通信的内容的所发送的数据在通信数据序列内(例如,在对话序列内)的正确时间到达变得更加重要。一些通信网络和传输网络被设计为注重数据的无差错递送超过数据的及时递送,而其他网络使数据的及时递送优先于数据的无差错递送。当使用被设计为使数据的及时递送优先的协议来发送通信时,通信数据的接收终端通常难以评估数据分组是由于发射机的延迟还是由于网络本身的延迟而在序列内迟到。为了解决这些延迟,许多接收机拥有缓冲器,其被称为抖动缓冲器,用于在将所接收的数据分组的内容进一步处理为用于播放的可听通信之前存储这些数据分组。这允许接收机等待一段时间以期望在播放的数据到达序列中的要求尚未接收的音频数据的点之前接收延迟的数据。

一些抖动缓冲器被配置有自适应机制,由此,当接收机接收到其感知为被延迟的分组时,抖动缓冲器的长度增加,以允许更多时间来接收延迟分组。然而,这导致可听通信中的人为暂停,并且可能导致通信方感知到这种延迟,例如导致各方交谈重叠。接收机最终可以确定将不会及时接收到分组,并且然后隐藏缺失的分组。



技术实现要素:

在本文中认识到:在通信的发送侧,常常可以在进行发送之前对要发送的数据是否已经延迟做出评估。这可能是由于某种内部处理延迟,例如cpu或线程停滞。经过这样的评估,音频数据帧或分组可以在进行发送之前被丢弃或压缩以便减轻已经明显的延迟。通过以这种方式改变要发送作为通信的一部分的数据,有可能使接收机感知到丢弃的分组而不是延迟的分组。接收机通常将不会响应于检测到丢弃的分组而扩展其抖动缓冲器。这是因为在注重数据的及时到达超过无差错数据的网络中,损失是可以接受的,并且不会重新发送丢弃的信息。因此,没有理由等待丢弃的分组到达。通过在发送缓冲器处对排队等待发送的数据量进行本地测量,可以确定已经发生了延迟,并且可以采取步骤来丢弃或压缩最旧的缓冲数据。这导致接收机“准时”接收后续数据,防止任何抖动缓冲器的扩展,并使通信中任何人为引入的延迟减少到最低限度。

各个实施例提供了一种发送设备,其包括发送缓冲器、发射机以及控制器。所述发送缓冲器被配置为:对表示实时媒体流的多个分组进行缓冲。所述分组在所述媒体流内具有从最旧到最新的顺序。所述发射机被配置为:在网络上实时发送来自所述缓冲器的所述分组。所述控制器被配置为:测量所述发送缓冲器中的被缓冲以进行发送的所述数据量。在所测量的量超过或有可能超过预定阈值的情况下,所述控制器还被配置为:丢弃或压缩最旧分组或者预定数量的最旧分组。

提供本发明内容以便以简化的形式对下面在具体实施方式中进一步描述的设计构思的选择进行介绍。本发明内容并不旨在标识要求保护的主题的关键特征或重要特征,也不旨在用于限制要求保护的主题的范围。

附图说明

为了更好地理解本发明以及示出本发明可以怎样来实施,现在将通过举例的方式来参考以下附图,在附图中:

·图1示出了包括多个服务的通信网络的示意性图示,每个服务具有多个用户和用户终端的相应用户网络;

·图2示出了用户终端的示意性框图;

·图3示出了如下过程的流程图:测量发送缓冲器中的被缓冲以进行发送的数据量,并且在该量超过预定阈值的条件下丢弃或压缩最旧分组。

·图4a至图4d是一系列示意图,其示出了由于各种发射机延迟和网络延迟而由接收机感知到的不同延迟。

具体实施方式

在下面的描述中,阐述了大量的具体细节以便提供对所描述实施例的更加透彻的理解。然而,对本领域技术人员而言将显而易见的是:可以在没有这些具体细节中的一个或多个细节的情况下实践所描述的实施例。在其他实例中,没有描述公知的特征以避免模糊所描述的实施例。

贯穿本公开内容提及的“一个实施例”或“实施例”意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书的各个地方出现短语“在一个实施例中”或“在实施例中”并不一定全部指的是相同的实施例。此外,在一个或多个实施例中可以以任何合适的方式对特定特征、结构或特性进行组合。

在通信系统中,提供通信网络,所述通信网络可以将两个通信终端链接在一起,使得终端可以在呼叫或其他通信事件中向彼此发送信息。信息可以包括语音、文本、图像或视频。

现代通信系统基于数字信号的传输。诸如语音之类的模拟信息被输入到一个终端的发射机处的模数转换器并被转换成数字信号。然后对数字信号进行编码并将其置于数据分组中,以便通过信道发送到另一个终端的接收机。

每个数据分组包括报头部分和有效载荷部分。数据分组的报头部分包含用于发送和处理数据分组的数据。该信息可以包括唯一标识分组的标识号和源地址,用于检测处理错误的报头校验和以及目的地地址。报头还可以包括说明创建有效载荷中的数据的时间的时间戳以及说明在该特定分组所属的创建的数据分组序列中的位置的序列号。数据分组的有效载荷部分包括来自旨在进行发送的数字信号的信息。该信息可以作为编码帧(例如,语音帧或音频帧)包括在有效载荷中,其中,每个帧表示模拟信号的一部分。通常,每个帧包括长度测量为20毫秒的模拟信号的一部分。然而,这应当被理解为所使用的系统的设计选择,因此可以是模拟信号的任何选择的划分,可以比20毫秒更长和/或更短。

在其上发送信息的信道中的降级将影响在接收机处接收的信息。信道中的降级可能引起分组序列发生变化,延迟一些分组到达接收机并引起其他分组的丢失或丢弃。降级可能是由信道缺陷、噪声和信道过载引起的。通信体验的降级也可能由发射机处的数据分组的发送延迟引起。当接收机被设计为动态地适应所接收数据分组中的感知到的延迟时,这尤其可能。并非所有接收机都能够确定接收侧的分组到达中测量的延迟是由于网络引起的信道劣化还是由于在发射机侧发送数据的延迟。一些网络协议能够提供辅助信息以告知接收机正在发生何种延迟,并且一些接收机被配置为响应于该辅助信息而采取动作。然而,并非所有网络协议(尤其是用于实时通信的网络协议)都能够包括该信息。此外,即使提供,也并非所有的接收机都能够使用该信息。当接收机无法通过辅助信息确定延迟的性质时,解决方案是将所有延迟视为它们是由网络引起的。即通过对在解分组和进一步处理之前存储所有传入数据分组的接收机处的缓冲器长度进行调整来进行响应。该缓冲器通常被称为抖动缓冲器。

抖动缓冲器由网络中的接收终端使用以提供可以在其上接收延迟数据分组的等待时段。这允许接收终端以正确的顺序并且以相对于彼此的正确时间和/或序列将接收的数据分组播放到接收侧用户。因此,抖动缓冲器根据数据分组到达接收终端的时间,防止在接收侧播放的音频信号被人为地压缩或分解。当检测到延迟时,接收机可以扩展其抖动缓冲器的长度,以使延迟分组有更多的时间及时到达,以便在被播放之前正确地放置在音频数据序列中。然而,这可能导致在等待延迟的数据分组的同时将更多的人为延迟引入音频信号,并且结果可能是双向通信会话的对话中的引入注意的重叠和不匹配。响应于发送侧的处理类型延迟的、抖动缓冲器的这样的调整(其可能是临时的和不规则间隔的)在实时通信场景中是不期望的。这是因为抖动缓冲器被设计用于解决由于网络状况导致的更恒定且缓慢衰减的延迟的变化,因此在可能的情况下重新调整回短的长度可以很慢。因此,优选的是,避免响应于分组传输中的任何短期延迟(例如,由于cpu停滞和/或线程停滞)的抖动缓冲器的扩展。

当在cpu上运行的过程停止或被阻止时,发生cpu停滞和线程停滞。一些处理器运行所谓的多线程或多线程处理。在这种类型的处理中,cpu或多核处理器的单个核可以并行执行多个过程或线程。术语过程也可以用作涵盖性术语来描述包括多个线程的整个过程。例如,在os上执行的通信客户端可以要求cpu执行进行呼叫的过程,但是这可以包括多个线程,这些线程包括例如经由麦克风捕获原始音频数据,以及通过具有目标地址的网络接口对该数据进行处理等。在多线程中,在cpu或核上并行运行的每个线程共享该核或cpu的资源。当线程被认为准备运行时,它可以在cpu上运行,并与也准备好运行的任何其他线程共享资源。然而,线程可能在其任务的执行中停滞,即通过经历高速缓存未命中。在这种情况下,另一个线程可以使用可用资源继续其任务,并且cpu以更加高效的方式执行整体。这是因为由于另一个线程的停滞,同时执行的线程将利用任何未使用的资源。这些线程也可以被赋予优先级,并且当在其他地方可能需要cpu资源时,这些线程中的一个运行的线程可以在另一个运行的线程之前或优先于另一个运行的线程被丢弃。这取决于线程执行的任务以及该任务对正在执行的整个过程的编程优先级。例如,在执行语音呼叫的过程中,可能存在正在执行的负责从麦克风捕获原始模拟音频数据的线程,以及负责对该数据进行打包以便进行应用、发送和/或网络层过程的线程。在实时呼叫期间,在第一线程中执行的对实时媒体流数据的捕获将优先于在第二线程中对该数据的进一步处理。这是因为音频数据的同期性质以及在涉及到理解时其对间歇性误差的敏感性要求其捕获中的间隙尽可能少。而进一步处理可以能够解决由于多种方式的停滞而导致的分组传输中的小的延迟。因此,如果cpu应当要求释放资源以用于另外的第三过程,则可以允许第一线程和第二线程中的最低优先级线程优先于另一个线程而停滞。在这种情况下,将允许对捕获的音频数据进行处理的第二线程停滞,但麦克风将继续经由第一线程来捕获音频数据。

适用于发送数字信息的一种类型的通信网络是互联网。用于在互联网协议网络上承载语音信号的协议通常被称为ip语音(voip)。voip是在互联网上或通过任何其他基于ip的网络对语音对话进行的路由。

实时传输协议(rtp)是一种提供端到端网络传输功能的协议,所述功能适用于通过多播或单播网络服务来发送实时数据(例如,音频、视频或仿真数据)的应用。rtp不解决资源预留,也不保证实时服务的服务质量。通过控制协议(rtcp)增强数据传输,以允许以可扩展到大型多播网络的方式来监测数据递送,并提供最小的控制和识别功能。rtp和rtcp被设计为独立于底层传输层和网络层。rtp支持使用序列号和时间戳。序列号针对所发送的每个rtp数据分组递增一,并且可以被接收机用于检测分组丢失并恢复分组序列。时间戳反映了rtp数据分组中第一个八位字节的采样时刻。采样时刻必须来自时间上单调且线性递增的时钟以允许同步和抖动计算。一些底层协议(即,一些网络协议)可能需要封装要定义的rtp分组。通常,底层协议的一个分组包含单个rtp分组,但是如果封装方法允许,则可以包含若干rtp分组。

发明人已经注意到,在发射机侧,有可能预先知道在发送缓冲器中缓冲的数据量何时达到将使得排队的缓冲数据被接收机延迟接收的量。利用在发送数据分组之前在发送侧的先验知识,因此提供了在分组被发送并且接收机检测到延迟之前校正延迟的机会。这可以通过丢弃或压缩最旧分组或者预定数量的最旧分组来完成。最旧分组是那些花费了最多时间等待从发送缓冲器内发送的分组。然后,这些是最有可能被延迟接收的分组。可以从缓冲队列的前面一起丢弃最旧分组。可以丢弃任何数量的分组,直到预期的延迟减小到可接受的余量内,或者直到预期的延迟为零。在压缩最旧分组的情况下,这可能涉及压缩最旧分组内的数据以便适合更少的分组。包含压缩数据的分组的数量越少,随后花费越少的时间来进行发送,并且因此包含在其有效载荷内的信息对接收机而言好像准时到达以供播放。压缩可以涉及对先前已经被打包以便进行发送的音频数据进行解码和重新编码。通过这种方式,有可能欺骗接收机看到丢失而不是延迟。因此,发射机将跳过几个分组而不是发送它们,从而避免在接收机侧累积分组。也就是说,如果缓冲的数据量超过预定阈值,则缓冲器中的某个数量的最旧分组被一起丢弃或压缩。

换句话说,如果在缓冲器处缓冲x个分组,则可以丢弃n个分组,并且相应地发送x-n个分组。

在一些实施例中,如果发射机确定以规则间隔发生停滞,则发射机可以不激发丢弃或压缩发送缓冲器中的最旧分组。在这种规则停滞的情况下,延迟可以由于其恒定性质而被建模为网络延迟,并且接收侧的抖动缓冲器可能充分考虑到这一点。短暂地,不规则发生的停滞或者延迟尖峰却更难以解决。这是因为一些抖动缓冲器在适应回较小尺寸时较慢。通常,会发生像加速、减速或延迟传输以及传输内的相应隐藏的伪像。抖动缓冲器的相应适配可以激发这些伪像中的一些伪像。通过一起丢弃或压缩分组,因为接收机确实准时接收的分组,即使不是移除,也可以使诸如延迟和减速之类的假象最小化。

图1示出了包括用户102(例如,系统的近端用户)、用户终端104(例如,膝上型设备等)、网络106(例如,互联网、云或通过其可以发送通信消息和数字数据的任何其他网络)、服务器108、以及另一个用户终端110(例如,通信事件的接收终端)的另一个用户的通信系统。

近端用户(用户a)是用户终端104的用户。用户终端104连接到网络106。该连接是能够经由网络106实现通信(例如,音频或视频或某种其他这样的通信类型)的连接。服务器108是网络106的服务器,并且可以分布在整个网络中,在一个或多个物理位置中,以及作为软件、硬件或者它们的任意组合。

源终端104被安排为经由通信网络106将数据发送到另一个用户终端110。在本发明的一个实施例中,通信网络是由互联网提供的voip网络。应当领会的是:即使本文中更详细地示出和描述的示例性通信系统使用voip网络的术语,本发明的实施例也可以用于促进数据传输的任何其他合适的通信系统。本发明的实施例尤其适合于异步通信网络。

应当领会的是:即使本文中更详细地示出和描述的示例性通信系统规定了发送终端和接收终端,但这些终端中的每个终端也可以执行相互动作以便提供双向通信链路。

图2示出了用户终端104的示意图。用户终端104包括中央处理单元、cpu或处理模块230,cpu230运行操作用户终端所需的过程并包括操作系统os228。os可以是任何类型,例如windowstm、macostm或linuxtm。cpu连接到各种输入和输出组件,包括显示器212、扬声器214、键盘216、操纵杆218和麦克风220。用于存储数据的存储器组件208连接到cpu。网络接口202还连接到cpu,例如用于与网络106通信的调制解调器。如果用户终端204经由网络接口202到网络106的连接是无线连接,那么无线连接202可以包括用于以无线的方式向网络106发送信号以及以无线的方式从网络106接收信号的天线。能够从终端104提供数据或提取数据的任何其他输入/输出设备也可以连接到cpu。上述提及的输入/输出组件可以合并到用户终端104中以形成终端自身的一部分,或者可以在用户终端104的外部并且经由相应的接口连接到cpu230。用户终端还包括缓冲器224a和224b。缓冲器在图2中示为作为处理器的一部分运行的软件元件,但是它们也可以是与中央处理器分开并与其连接的硬件元件。缓冲器被示为与操作系统(os)分开,然而在替代配置中,它们可以在os上运行。图2的缓冲器被示为与在os上运行的通信客户端分开的实体,然而在其他配置中,缓冲器可以形成通信客户端本身的一部分,因此在客户端内的os上运行。这两个缓冲器都是数据在从用户终端的一个组件接收之后并且在被中继到用户终端104的另一个组件之前可以在其上进行存储的缓冲器。缓冲器224b是连接到麦克风220的麦克风缓冲器,并且被配置为在进一步处理之前存储由麦克风捕获的音频数据。缓冲器224a是发送缓冲器,其中已经形成为用于传输的数据分组的数据等待被传递到网络接口202,在该处数据被形成为诸如ip分组之类的网络层分组。控制器226连接到缓冲器224,并且被配置为:在任何一个时间测量在缓冲器224中存储或缓冲的数据量。控制器可以连接到一个或多个缓冲器,并且可以在任何时间测量任何数量的缓冲器中的缓冲数据。这样,控制器能够确定并激发(即通过到cpu230的连接(图2中未示出))需要根据缓冲器224中测量的数据量执行的任何可能的进一步过程。

os228在cpu230上执行,在此处其管理计算机的硬件资源,并处理经由网络接口202正向网络106发送以及来自网络106的数据。在os228之上运行的是通信客户端软件222。通信客户端222处理应用层数据并用于制定执行通信事件所需的必要过程。例如,通信客户端222可以被安排为从麦克风220接收输入数据,以转换成音频帧,以用于进一步的传输和发送目的。通信客户端222还可以提供用于对数据分组进行寻址的必要信息,使得它们在进行接收的另一个用户终端110处到达其预期接收方。

参考图3和图4,现在描述了一种方法,其用于响应于排队数据的量超过预定阈值,通过丢弃或压缩最旧分组或预定数量的最旧分组来减少在发送缓冲器中排队等待发送的数据量。

图3是如下过程300的流程图:测量发送缓冲器中排队等待发送的数据量,并且在该量超过预定阈值的条件下丢弃或压缩最旧分组。

过程300在步骤s302处开始,由此控制器226测量在发送缓冲器中的被缓冲以进行发送的数据量。这可以在总媒体流时间、样本或帧的总数、或分组的总数中测量。然后,过程进行到步骤s304,其中,控制器确定所测量的缓冲数据量是否超过预定阈值。设置这样的阈值取决于以下某种确定:在递送时接收机是否可能看到队列中的多个分组已经延迟。然后,过程进行到步骤s306,其中,如果步骤s304的答案为否,并且没有超过阈值,则将不丢弃或压缩缓冲器中的分组,并且将发送用于发送的缓冲分组。如果步骤s304处的问题的答案是肯定的,并且已经超过预定阈值(或者可能超过预定阈值),则控制器226被安排为引起缓冲器中最旧分组或者缓冲器中预定数量的最旧分组的丢弃或压缩。要丢弃的分组的预定数量可以取决于发送缓冲器中的最旧分组的时间戳与最新分组的时间戳之间的比较。预定数量可以取决于与发送缓冲器中的最旧分组的当前时间和时间戳有关的信息。预定数量可以基于关于数据分组的时间戳和相同数据分组的发送时间之间的延迟的历史信息。预定数量可以基于关于最后处理停顿的持续时间的信息或者此处提到的信息的任何组合。然后,过程300移动到步骤s308,其中,发送在发送缓冲器内缓冲以进行发送的剩余分组。

图4a至图4d是一系列示意图,其示出了由于各种发射机104延迟和网络106延迟而由进行接收的另一个用户终端110感知到的不同延迟。

图4a至图4d示出了标记为1、2和3的三个数据分组。这三个数据分组示出了包括一定量的媒体流数据及其顺序的一系列数据分组。也就是说,分组1包含按顺序的媒体数据的最旧片段,而分组3包含媒体数据的最新片段。分组以简化状态呈现,并且仅用于表示捕获的媒体数据在发射机-网络-接收机系统中的分段和分发。分组不代表具有相关联协议层或缺少其的任何特定类型的数据分组。已经简化了分组的顺序以帮助解释整体构思,并且不说明在缓冲或发送期间保持的任何顺序。发送终端104用于捕获实时媒体流数据,并将其打包以进一步传输和处理等。在被发送之前,分组被保存在发送缓冲器224a中。

图4a示出了分组1已经在发送缓冲器中,分组2正在移动到发送缓冲器中,并且分组3已经形成并且在其去往发送缓冲器的途中。这些分组的顺序和间隔用于表示它们各自的捕获顺序和相对于彼此的捕获的相对时间。因此,为了在接收端正确地播放媒体,分组应当以这样的顺序播放,并且具有保持媒体的逻辑顺序的定时。图4a示出了完美的系统,其中,分组不在发送终端104中的发送缓冲器224a中聚合,网络106不延迟分组,也不在随后更紧密地对分组进行成组,并且进行接收的另一个用户终端110及时接收分组以进行播放并且按照与捕获这些分组相同的逻辑顺序。410表示接收终端的接收抖动缓冲器,其宽度从左到右表示其时间长度或存储器大小。这是缓冲器在放弃及时接收分组以供播放并且替代地隐藏它们的缺席之前将要等待接收延迟的分组的时间量,或者在等待接收延迟的分组的同时其可以容纳的媒体流数据量。虚线412表示分组1的“准时”位置。这用于说明该媒体分组以及后续媒体分组没有延迟。

图4b示出了系统,其中,缓冲器224a中没有发送侧延迟,但是存在由网络106引入的延迟。分组1和分组2已经延迟。这可以从分组的更紧密成组以及分组2和分组3之间的较小间隔看出。分组1和分组2二者都在虚线412后面,表明进行接收的另一个用户终端110将看到这些分组被延迟了。在容纳该延迟以及按照捕获分组1、分组2和分组3的逻辑顺序播放这些分组的过程中,进行接收的另一个用户终端110的接收抖动缓冲器410已经被扩展。这允许正确地播放分组1、分组2和分组3,但是由于该缓冲器适配,它们也被延迟了额外的量。

图4c示出了在发送终端104的发送缓冲器224a中存在媒体流数据分组的聚合的系统。这种聚合是由于在发送分组的过程之前的一些延迟。例如,延迟可能是由于cpu停滞或处理器线程停滞造成的。出于本示例的目的,网络连接质量良好并且没有添加延迟。因此,从发送终端延迟发送媒体分组,但是接收机在不知道原因的情况下感知到延迟,并且响应于网络引起的延迟以与图4b中相同的方式进行操作。结果,如图4c中那样扩展接收抖动缓冲器410,并且向媒体流引入额外延迟,以便考虑等待延迟分组。

图4d示出了如何在发送分组之前检测图4c的发送缓冲器聚合延迟的类型,并且可以采取响应于检测到累积而采取的动作以便欺骗接收终端看到丢失的分组1而不是延迟的分组1。媒体流分组1、2和3在发送缓冲器224a中聚合。响应于测量被缓冲以进行发送的数据量超过预定阈值,丢弃或压缩分组1。例如,这里的分组1示为具有虚线。如果该分组的丢失在发送终端处被接受并且分组被丢弃,则分组2可以被无延迟地发送。该图示出了如何通过丢弃分组1并且无延迟地发送分组2,分组到达虚线时间线412到达与没有经历延迟的、图4a的分组2相同的位置处。接收机检测到传输中没有延迟,并且接收抖动缓冲器410保持相同的大小。因此,在发送分组之前没有额外的延迟会在延迟被引入系统的情况下被引入,因此在发送任何分组之前可检测和补偿。分组1在网络中时由散列框表示,因为此时它看起来好像已被丢弃。然而,实际上,分组1和分组2可能已经在发送侧以使得分组1和分组2的媒体流数据包含在发送的分组2中的方式被压缩。因此,接收机中的由虚线表示的分组1可以是在分组2中准时递送的但是包括分组1的信息的缺失分组或媒体流数据,然后可以随后播放该分组。仍然实现了不扩展接收/抖动缓冲器410的最终结果,这是因为在接收终端看来分组2已准时到达而没有延迟。

描述该想法的另一种方式如下。

假设发射机具有尚未发送的总共n个分组的数据量。

发送侧:[a1,0,...an,0],其中,ai,j表示在时间j观察到的分组化时间i处的媒体流中的分组。

网络可以对发送的分组施加m个分组化时间的延迟,使得接收机侧具有:[a1,m,...an,m]

如果发射机通过丢弃x个分组或将数据压缩为等效的n-x个分组来修整分组的数量,则发送侧具有以下内容,其中,新的传输b由重新采样或时间压缩产生。

发送侧:[ax+1,0,...an,0]

或者

发送侧:[bx+1,0,...bn,0]

其将被接收机侧分别视为:

[ax+1,m,...an,m]或者[bx+1,m,...bn,m]。

媒体流中分组的顺序是逻辑顺序。例如,假设分组包含包括语音的音频信号,分组的逻辑顺序为:使得当分组按顺序时,相应排序的音频数据传达包括语音的音频信号。当实时捕获实时媒体流时,该顺序与实时流的捕获顺序相同。在分组具有时间戳和/或序列号的情况下,可以使用分组的时间戳和/或序列号来说明顺序,并因此确定顺序。例如,rtp协议在其分组报头内包含这两个值。其他协议可以仅包括时间戳或者可以仅包括序列号。这样,当在接收终端处接收时数据分组可以以正确的顺序放置,使得包含在其内的任何媒体数据以逻辑顺序播放。因此,时间戳和/或序列号提供对关于缓冲器中缓冲的哪些分组包含最旧的媒体流数据的指示。

实时媒体流的媒体数据类型可以是音频数据、视频数据或游戏数据中的任何一种。更具体地说,实时数据可以是呼叫数据。呼叫数据是与在网络上发送的通信相对应的数据。网络可以是类似互联网的网络。呼叫可以是互联网协议语音或voip呼叫。呼叫数据可以是视频呼叫的数据。

可以基于对分组包含的内容的指示来丢弃分组。例如,分组可以包含视觉静止或空白的静音或视频的一部分。可以优先于包含可听声音、非空白视频或移动视频数据的分组来丢弃这样的分组。这与压缩结合执行。因此,它继续使得在接收机看来好像最旧分组已被丢弃或丢失而不是延迟了。

可以知晓关于将接收所发送的分组的特定类型的接收机的信息。例如,可以知晓关于接收终端的抖动缓冲器的适配的行为的信息。这样的反馈信息及其指示可以用于设置被超过或可能被超过的预定阈值。是否测量缓冲器中缓冲的数据量可以取决于接收机的已知类型。例如,响应于延迟的临时尖峰而快速调整其抖动缓冲器并且之后快速返回的接收机可能不会从分组的丢弃或压缩中显著受益,并且该技术可能不被执行。然而,如果确定如果接收机响应于延迟的临时尖峰而缓慢地调整其抖动缓冲器,则该技术可以通过在这些情况下最小化适配来显著提升通信体验。有可能发射机没有获得关于接收机的信息。

有可能通过对在发送用户终端内的另一个另外的缓冲器中缓冲的数据量进行测量而推测出:在分组到达发送缓冲器时,在发送缓冲器中缓冲的分组量有可能超过预定阈值。替代地,可以存在与特定的另外缓冲器相关联的单独的预定阈值。例如,用于捕获实时媒体流的发送终端的捕获缓冲器可以在线程停滞或cpu停滞期间填充超过预定阈值。在线程准备好再次运行时,可以通过在捕获缓冲器中累积的数据分组来更大程度地填充发送缓冲器。另一个缓冲器可以是任何类型的缓冲器,其中,数据在处理之前被存储为分组,以便进行发送以及在发送缓冲器中进行缓冲。

在一些实施例中,当存在对cpu停滞的指示时,控制器可以仅激发分组的丢弃或压缩。特别是cpu的停滞用于对分组进行处理,以便从发射机进行发送。

在一些实施例中,当确定网络状况良好时,控制器可以仅激发分组的丢弃或压缩。也就是说,针对网络上的传输的网络状况是否超过预定传输质量。如果网络状况被认为是坏的或低于某个质量水平,则在分组被发送之后由网络引入的显著延迟可以抵消丢弃排队分组的益处。因此,当网络状况良好时,发送侧可以仅丢弃或压缩排队等待发送的数据分组。在这样的良好的网络状况下,该过程因此更可能显著影响观察到的数据分组的延迟。预定传输质量可以是对网络延时的测量。还可以通过rtcp控制协议确定传输质量。还可以基于对分组丢失的测量或对抖动的测量来确定预定传输质量。本文中提及的任何网络传输质量测量的组合可以提供关于网络状况是否超过预定传输质量的充分指示。例如,分组丢失可以是相关的,就好像它是高的一样,分组的进一步丢弃可以抵消丢弃排队分组的益处。在网络中测量的抖动也可以指示紧张的信道。

可以考虑针对某个时间窗口的抖动分布,并且如果观察到由于发送侧停滞导致的作为异常值的瞬态滞后尖峰,则本文中描述的方法的益处取决于抖动缓冲器对抖动分布的估计是否对这样的异常值敏感。由于路由器队列和/或wi-fi尖峰等,可能会出现这种尖峰。抖动缓冲器可以被设计或不被设计为纳入这些尖峰,或者分类和忽略对抖动的那些观察。可以以不同方式跟踪抖动的统计,例如最小值、最大值、平均值、历史缓冲器或通过直方图。可以通过时间窗口和/或移动平均等向较新数据给予优先权。

应当理解的是:虽然主要结合音频数据描述了本文中的实施例,但本文中描述的方法和装置同样涉及能够由于内部处理延迟(例如,cpu或线程停滞)而在发送缓冲器处进行聚合的任何类型的媒体数据,同时执行与该媒体数据有关的任何处理。例如,视频数据在视频捕获缓冲器中的聚合导致该视频数据在发送缓冲器中的聚合。在另一个示例中,游戏数据在媒体数据缓冲器中的聚合随后导致该游戏数据在发送缓冲器中的聚合。

将领会的是:仅通过举例的方式描述了上述实施例。更加概括地说,根据本文中公开的一个方面,提供了一种发送设备,其包括用于对表示实时媒体流的多个分组进行缓冲的发送缓冲器,分组在媒体流中具有从最旧到最新的顺序。发射机用于在网络上实时发送来自缓冲器的分组。控制器被安排为:测量发送缓冲器中被缓冲以进行发送的数据量,以及在被缓冲以进行发送的数据量超过或可能超过预定阈值的条件下,丢弃或压缩最旧分组或预定数量的最旧分组。

发送设备还可以包括控制器,该控制器被配置为:丢弃或压缩基于对一个或多个另外的分组的内容的指示而选择的所述另外的分组。

发送设备还可以包括对内容的指示,其是关于分组表示实时媒体流的静音或视觉空白部分的指示。

发送设备还可以包括被配置为进行以下操作的控制器:基于测量缓冲器中被缓冲以进行发送的数据量来检测关于被缓冲以进行发送的数据量超过预定阈值的条件。

发送设备还可以包括被配置为进行以下操作的控制器:基于接收对用于处理分组以便从发射机进行发送的cpu的cpu停滞的指示来推测关于被缓冲以进行发送的数据量有可能超过预定阈值的条件。

发送设备还可以包括被配置为进行以下操作的控制器:在针对网络上的传输的网络状况超过预定传输质量的另外的条件下,执行丢弃或压缩。

发送设备还可以包括所述预定传输质量,其包括预定网络延时。

发送设备还可以包括被配置为进行以下操作的控制器:基于接收对表示实时媒体流的多个分组的接收机的行为的指示来推测关于被缓冲以进行发送的数据量有可能超过预定阈值的条件。

发送设备还可以包括对接收机的行为的指示,其表明多个可能的类型之中的抖动缓冲器的类型,所述抖动缓冲器的类型包括更慢地适应的抖动缓冲器以及更快地适应的抖动缓冲器,其中,控制器被配置为:基于所表明的类型来推测关于被缓冲以进行发送的数据量有可能超过预定阈值的条件。

发送设备还可以包括被配置为进行以下操作的控制器:基于关于在实时媒体流的处理中使用的另一个缓冲器包含超过相关联的预定阈值的被缓冲的数据量的指示,推测关于被缓冲以进行发送的数据量有可能超过预定阈值的条件。

发送设备还可以包括是音频和/或视频和/或游戏数据的实时媒体流的媒体。

发送设备还可以包括是呼叫数据和/或tv广播数据的音频和/或视频数据。

发送设备还可以包括是实时捕获的并且顺序与捕获顺序相同的实时媒体流。

发送设备还可以包括这些分组中的具有时间戳的每个分组,并且这些分组的顺序是基于该时间戳确定的。

在实施例中,一种方法包括:在发送缓冲器处对表示实时媒体流的多个分组进行缓冲,分组在媒体流中具有从最旧到最新的顺序。检测发送缓冲器中被缓冲以进行发送的数据量。在被缓冲以进行发送的数据量超过预定阈值的条件下,丢弃或压缩最旧分组或预定数量的最旧分组;以及在网络上实时发送来自缓冲器的剩余分组。

该方法还可以包括丢弃或压缩,其包括:丢弃或压缩基于对一个或多个另外的分组的内容的指示而选择的所述另外的分组。

该方法还可以包括:基于测量缓冲器中被缓冲以进行发送的数据量来检测关于被缓冲以进行发送的数据量超过预定阈值的条件。

该方法还可以包括:基于接收对用于处理分组以便从发射机发送的cpu的cpu停滞的指示来检测关于被缓冲以进行发送的数据量有可能超过预定阈值的条件。

该方法还可以包括丢弃或压缩,其包括:在针对网络上的传输的网络状况超过预定传输质量的进一步条件下的丢弃或压缩。

在实施例中,计算机程序产品包括嵌入在计算机可读存储设备上的代码,并且被配置为当在所述用户终端上运行时执行任何过程语句的方法。

通常,本文中描述的功能中的任意功能(例如,图2所示的功能模块以及图3所示的功能步骤)可以使用软件、固件、硬件(例如,固定逻辑电路系统)或这些实施方式的组合来实现。图2和图3中单独示出的模块和步骤可以实现为或者可以不实现为单独的模块或步骤。本文中所使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或者它们的组合。在软件实现的情况下,模块或者功能表示当在处理器(例如,cpu或一些cpu)上执行时执行特定任务的程序代码。程序代码可以存储在一个或多个计算机可读存储器设备中。本文中描述的技术的特征是独立于平台的,意指这些技术可以在具有各种处理器的各种商用计算平台上实现。例如,用户设备还可以包括使得用户设备的硬件执行操作(例如,处理器功能块)的实体(例如,软件)等。例如,用户设备可以包括计算机可读介质,所述计算机可读介质可以被配置为:保持使用户设备(更具体地说,用户设备的操作系统及相关联硬件)执行操作。因此,这些指令用于配置操作系统和相关联的硬件执行操作并由此导致操作系统和相关联的硬件的的变换执行功能。这些指令可以由计算机可读介质通过各种不同配置向用户设备提供。

计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为向计算设备(例如,经由网络)发送指令(例如,作为载波波形)。计算机可读介质还可以被配置为计算机可读存储介质,并且因此不是信号承载介质。计算机可读存储介质的示例包括:随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器以及可以使用磁、光及其他技术来存储指令和其他数据的其他存储器设备。

虽然以特定于结构特征和/或方法动作的语言对主题进行了描述,但应当理解的是:所附权利要求书中定义的主题并不一定受限于上述特定特征或动作。确切地说,上述特定特征或动作是作为实现权利要求书的示例形式而公开的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1