CN108370378B - 对音频流进行编码的方法、系统和计算机可读存储介质 - Google Patents
对音频流进行编码的方法、系统和计算机可读存储介质 Download PDFInfo
- Publication number
- CN108370378B CN108370378B CN201680073029.XA CN201680073029A CN108370378B CN 108370378 B CN108370378 B CN 108370378B CN 201680073029 A CN201680073029 A CN 201680073029A CN 108370378 B CN108370378 B CN 108370378B
- Authority
- CN
- China
- Prior art keywords
- bandwidth
- audio
- processing resources
- available
- allocated
- 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
Images
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/167—Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/002—Dynamic bit allocation
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/22—Mode decision, i.e. based on audio signal content versus external parameters
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
- G10L19/00—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
- G10L19/04—Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
- G10L19/16—Vocoder architecture
- G10L19/18—Vocoders using multiple modes
- G10L19/24—Variable rate codecs, e.g. for generating different qualities using a scalable representation such as hierarchical encoding or layered encoding
-
- 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/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
-
- 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/70—Media network packetisation
-
- 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
- H04L65/762—Media network packet handling at the source
-
- 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
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
Abstract
音频流被编码以经由通信信道发送给接收设备。要被发送的音频流在处理器上执行的音频编码器处被接收。处理器具有一定量的可用处理资源。通信信道的可用带宽被确定。基于所确定的带宽,可用处理资源的一部分被分配给音频编码器。如果所确定的带宽低于带宽门限,则所分配的部分更大。音频编码器使用处理资源的所分配的部分对音频流进行编码,以及经由通信信道将经编码的音频流发送给接收设备。
Description
技术领域
本发明涉及音频流,尤其涉及对音频流进行编码的技术。
背景技术
音频流可以经由通信信道从发送设备(例如,用户设备或媒体服务器)发送给接收设备(例如,另一用户设备)。通信信道可以例如是在通信网络上的信道,例如基于分组的通信网络,例如因特网。例如在通过网络进行的呼叫中,传输可以基于VoIP(IP语音)技术。也就是说,音频流可以作为两个或更多个用户之间的呼叫的部分或经由网络进行的其他一些其他实时媒体通信事件来发送。为了使通信事件能够发生,接收设备的用户可以在接收设备上执行通信客户端的实例。通信客户端设立必要的VoIP连接以允许在通信事件期间与发送设备进行通信。发送设备也可以是其上通信客户端的另一实例被执行的用户设备。替代地,发送设备可以是媒体服务器;例如,在三个或更多个用户之间的群组呼叫(会议呼叫)中,每个用户可以将他们的音频流发送给媒体中继服务器,并且因此服务器可以选择性地混合接收到的音频流以发送给参加会议呼叫的其他用户。
在本公开内容的上下文中,音频流意指被流式传输给接收设备的音频数据,由此当音频数据在接收设备处被接收时,可以在接收设备处播放音频数据,即使后续音频数据的传输继续发生。这与例如下载到接收设备的音频数据形成对比,其可能以小于其比特率的传输速率被发送,使得接收设备的用户在他们可以开始其播放而无需缓冲制品之前需要等待音频的全部(或至少大部分)被下载。在音频数据被流式传输的情况下,实际上可能在接收设备处存在对接收到的音频数据的一些缓冲。例如,如果音频数据是以每帧为基础被编码的,则接收的音频数据可以被缓冲以允许在它们被解码和播放之前接收整个帧。替代地或另外地,可以使用一些缓冲来为音频数据的不同片段(例如,不同的音频帧)的到达时间的变化(有时被称为抖动)提供鲁棒性。
音频流可以在由音频编码器发送之前被编码。音频编码器可以用软件来实现,即被实现为在处理器上执行的代码。处理器可以由一个CPU或多个CPU构成。处理器具有一定量的可用处理资源,其指代处理器的每单位时间(例如,每秒)可用的时钟循环的数量,并且可以例如用例如Hz、MHz或GHz等来表达。音频编码器可以进行操作以通过向其应用压缩算法来降低未编码的音频流的比特率。压缩算法可以包括:无损压缩(例如,熵编码),由此信息不会由于编码而从音频流丢失;有损压缩,由此信息选择性地从音频流被丢弃;或有损和无损压缩的组合。从音频流丢弃信息允许其比特率被降低,但可能以降低经编码的音频流的感知质量(即,如由消费经编码的音频流的用户感知的音频质量)为代价。注意到,术语“编码”和“压缩”在本文中关于音频流被可交换地使用。
不同的压缩算法可以是能够达成等效的比特率降低的,但是就感知质量的降低而言具有不同的代价。例如,更复杂的压缩算法可以是能够更仔细地选择如何从音频流丢弃信息的,并且因此可以是能够达成音频流的比特率的期望降低的,同时与他们较不复杂的对应物相比,使感知质量的降低最小化。另一方面,更复杂的压缩算法与他们较不复杂的对应物相比可能具有更大的算法复杂度,使得他们与他们较不复杂的对应物相比需要更大部分的可用处理资源。算法复杂度是对算法处理给定数量的输入比特所需的处理器时钟循环的数量的测量,并且可以使用所谓的“大O”记号来表达,其中,在该上下文中O(N)表示由编码器编码N比特音频所需的时钟循环的近似数量。为了简洁起见,算法复杂度在本文中简称为复杂度。某些音频编码器提供了不同复杂度的多个音频编码模式,由此,与更低复杂度模式相比,更高复杂度模式消耗更多的处理资源。具有该功能的目前可用的音频编解码器包括例如Silk和Opus编解码器。
发明内容
本领域中已知的是,通过将更多处理资源分配给在处理器上执行的音频编码器,例如通过在可用的情况下选择音频编码器的更高复杂度编码模式或通过一些其他资源分配单元,可能的是在一定程度上增加由编码器生成的经编码的音频流的感知质量,这是因为增加的分配允许编码器应用更复杂的压缩。然而,本公开内容认识到,虽然可以通过在编码器被限制为以相对低的输出比特率操作时增加分配给音频编码器的处理资源的量来达成经编码的音频流的感知质量的显著增加(输出比特率是由编码器生成和输出经编码的音频流比特的速率),但是作为对比,当编码器自由地以相对高的输出比特率操作时,分配的处理资源的量的等效增加可能带来感知音频质量的最佳边际改善。换言之,本公开内容认识到,以具有对感知音频质量产生极小的影响的更高输出比特率来减少被分配以供编码器使用的处理资源的量。
本主题在对音频流进行编码以经由通信信道发送给接收设备的上下文中利用这一点,以在一方面使用于对音频流进行编码的处理资源的量最小化与另一方面使所得的经编码的音频流的感知质量最大化之间提供平衡。要被发送的音频流在处理器上执行的音频编码器处被接收。处理器具有一定量的可用处理资源。通信信道的可用带宽被确定。基于所确定的带宽,将可用处理资源的一部分分配给音频编码器。与如果所确定的带宽高于带宽门限相比,如果所确定的带宽低于带宽门限,则所分配的部分更大。音频编码器使用处理资源的所分配的部分对音频流进行编码,以及经由通信信道将经编码的音频流发送给接收设备。
可用带宽构成经编码的音频流的经编码的音频数据可以经由通信信道被发送的最大速率,并因此对音频编码器的输出比特率(即,对每一时间单位可以由音频编码器输出并经由通信信道流式传输的经编码的音频流的经编码的音频数据的量)施加上限。随着带宽减小,上限降低。因此,在更高的带宽下,音频编码器可以自由地以更高的输出比特率操作,并且(如由本公开内容认识到的)因此能够使用更少的处理资源来使感知音频失真最小化。然而,在相对低的信道带宽下,编码器被限制以更低的输出比特率操作,并且因此需要更多的处理资源以能够保持感知音频质量的可接受的水平。换言之,编码器能够在更高的带宽处利用更少的处理资源达成感知音频质量的可接受的水平,这是因为在那种情况下更高的输出比特率可以用于编码。
注意到,提供本概括是为了以简要形式介绍在以下详细描述中被进一步描述的对构思的选择。本概括并不意在标识所主张的主题的关键特征或基本特征,也不意在用于限制所主张的主题的范围。此外,虽然在本概括中阐述了本主题的某些技术效果,但是主题不在该方面受限,并且其他技术效果可以在各种实施例中被达成,例如但不限于在详细描述中描述的那些技术效果。
附图说明
为了更好地理解本主题并且示出可以如何实现本主题的实施例,通过示例的方式仅对以下附图进行参考,其中:
图1示出了通信系统的示意性框图;
图2示出了示出通信网络的分层架构的示意性框图;
图3示出了由媒体服务器实现的编码系统的功能模块;
图4示出了用于对音频流进行编码的方法的流程图;以及
图5示出了用户设备的示意性框图。
具体实施方式
群组音频和视频呼叫可以被托管在服务器上。来自多个参与者的音频在服务器处被混合在一起、编码、打包并发送给参与者。利用现代编解码器(例如,Silk和Opus)的音频编码是CPU密集型的,这是因为他们旨在在低比特率下达成高感知音频质量。音频编码器的复杂度直接影响可以在服务器上托管的会议数量。以下描述了动态管理编解码器复杂度以改善服务器规模并对质量产生极小的影响的方法。该方法提供了服务器规模和音频质量之间的最佳折衷。
诸如Silk和Opus之类的现代编解码器通常支持多个复杂度模式,其中,最高复杂度模式提供最佳质量但需要对服务器可扩展性产生不利影响的最多的处理资源。例如,Silk和Opus提供了低和高复杂度模式以及介于二者之间的一个或多个模式。低复杂度(LC)模式通常比高复杂度(HC)模式低一个数量级的计算成本。问题是,当可用比特率低时,与HC模式相比,LC模式导致差的感知音频质量,如由平均意见分数(MOS)测量的。另外,当通过两个编码器处理音频信号(其中,解码器处于二者之间)(被称为串联编码)时,LC模式导致比HC模式显著更低的MOS。串联编码针对被托管在服务器上的群组音频呼叫发生,其中,来自个体参与者的经编码的比特流本地地在客户端处被编码,并且然后在被发送给其他客户端之前在服务器处被解码、混合和重新编码。
有利于音频质量的一种解决方案将是总是以高复杂度模式运行编码器。然而,由于更少的呼叫可以由每个服务器盒托管,这将操作成本增加了一个数量级。
有利于服务器规模的第二替代方案将是总是在低复杂度模式中运行编码器。然而,这将导致低比特率条件下的差的音频质量。
第三替代方案将是确保音频总是被分配足够的比特以用于编码,这是因为在高比特率条件下LC和HC质量之间的差异是微不足道的。这遭受两个缺点。首先,不是所有的客户端都有足够的可用带宽,例如移动和WiFi客户端。其次,可以将可从音频中释放而不牺牲音频质量的任何比特指派给视频,以改善感知的视频质量。
作为对比,本主题的实施例提供在一方面使跨被托管在服务器上的所有呼叫的感知质量(包括一个或多个参与者具有有限带宽的那些呼叫)最大化与另一方面使由音频编码消耗的处理资源的量最小化之间的平衡。该主题可以在服务器(例如,托管呼叫的媒体中继服务器)处或客户端处被实现。对于服务器端的实施方式而言,使处理资源使用最小化释放处理资源以托管另外的呼叫。对于客户端侧的实施方式,从音频释放资源允许例如更高质量的视频编码(例如,视频通话的视频数据的更高质量的视频编码),这是因为释放的资源可以被重新分配给视频编码器。在一些情况下,这也应用于服务器侧的实施方式:虽然一些服务器不执行编码而是只转发视频分组,但其他服务器可能例如在需要转码的情况下执行一些视频编码(例如,如果由呼叫者使用的视频编码格式不被被呼叫者支持)。
以下通过示例的方式描述了本主题的实施例。首先描述了他们可以被应用于其中的有用上下文。
图1示出了通信系统1的框图。通信系统1包括:通信网络8,由第一、第二和第三用户2a、2b、2c分别操作的第一、第二和第三用户设备4a、4b、4c连接到所述通信网络8;以及媒体中继服务器10。
网络8在该示例中是基于分组的互联网络(互联网),例如因特网,其包括多个路由器3,所述路由器3在互联网8的个体网络之间路由数据。然而,网络8可以是另一类型的网络,例如蜂窝网络或PSTN。例如,在用户设备4a、4b、4c是移动设备的情况下,他们可以例如经由蜂窝网络连接到因特网。
每个用户设备4a、4b、4c都包括对应的处理器6a、6b、6c(包括一个或多个CPU),在其上通信客户端的对应的实例被执行。通信客户端包括用于经由网络8在通信系统1内实现通信事件的软件,例如经由媒体中继服务器10在第一、第二和第三用户2a、2b、2c之间进行的会议呼叫。用户设备4a、4b、4c可以例如是膝上型或桌上型计算机、电话(智能电话)、平板设备等。
通信系统1可以是基于VoIP系统的。这些系统对用户可以是有益的,这是因为与常规的固定线路或移动蜂窝网络相比他们经常具有显著更低的成本,特别是对于长距离通信。客户端软件设立VoIP连接以及提供其他功能,例如注册和用户认证(例如,基于诸如用户名和相关联密码之类的登录凭证)。
在用户2a、2b、2c之间的会议呼叫期间,经由用户设备4a、4b、4c中的每一者的麦克风来捕获音频数据,并且由在该设备上运行的客户端实例本地地编码以生成本地编码的音频流(分别被表示为5a、5b和5c),所述音频流被打包并在网络8上被发送给媒体中继服务器10。例如,流的每个分组可以包含一个完整的本地编码的音频帧。
媒体中继服务器10包括网络接口12(经由其媒体中继服务器10连接到网络8)和连接到网络接口12的至少一个处理器14a。处理器14a可以包括一个或多个CPU,例如,处理器14a可以是比较单个CPU的单核处理器或包括多个互连CPU的多核处理器。通常,本公开内容不限于任何特定形式的处理器,并且通常处理器意指能够执行软件模块(例如,音频编码器)并具有有限量的处理资源的任何装置,所述有限量的处理资源当被同时执行时必须以某种方式在那些软件模块之中被共享。
处理器14a处理从用户设备4a、4b、4c接收的本地编码的音频流5a、5b、5c,以针对每个用户设备4a、4b、4c生成单个对应的混合音频流7a、7b、7c(即,每个参与会议呼叫的用户设备一个混合流),其经由网络接口12并在网络8上从媒体服务器10发送给该用户设备。这在以下被详细描述,但对于现在足够的是说,在生成混合音频流7a、7b、7c时,在处理器14a上执行的软件必须解码接收到的流5a、5b、5c,相应地混合他们以生成未编码的混合音频,并且然后将其自己的音频编码应用于未编码的混合音频以生成混合流7a、7b、7c。在该示例中,针对每个用户(例如,2a)混合音频流(例如,5a)是通过将其他用户(例如,2b、2c)的音频流混合在一起而生成的,使得用户(例如,2a)可以听到所有其他用户说话,但没有将他自己的语音音频反馈给他。因此,每个混合音频流是不同的并且是针对其预期的用户被定制的。以该方式,媒体中继服务器10托管用户2a、2b、2c之间的群组会议呼叫。
在媒体中继服务器10处的对混合音频流的编码特别需要大量处理资源。如将显而易见的,可用处理资源的所需的部分随着参与呼叫的用户数量的增加而增加,这是因为每个新用户代表必须被编码的另外的、定制的混合流。此外,尽管在图1中未显式地示出,但媒体中继服务器10可以以该方式同时托管多个会议呼叫,其中,每个呼叫都需要其自己的可用处理资源的分配。即使在给定呼叫上没有生成针对每个用户的定制的音频流(例如,在通过将所有用户的所有音频流混合在一起而生成针对所有用户的一个混合音频流的情况下),在新的呼叫被建立之后,仍然需要更多的处理资源。如此,假定可用处理资源有限的情况下,媒体中继服务器10只能托管特定数量的呼叫和/或参与用户。
图1仅示出了通信系统1的三个用户2a、2b、2c,但是如将容易领会的是,可以存在通信系统1的许多更多的用户,他们中的每一者都操作他们自己的设备和客户端以使他们能够经由通信网络8与其他用户通信。虽然在本示例中在三个用户2a、2b、2c之间进行会议呼叫,但三个以上的用户可以参与会议呼叫。
图2示出了如何可以在媒体中继服务器10与用户设备(其在该示例中为第一用户设备4a)之间在网络8上建立信道12a。网络8具有多个网络层,即链路层14(最低层)、链路层14上方的网络层15、网络层15上方的传输层16和传输层16上方的应用层17。网络层可以例如根据TCP/IP套件。应用层17提供在不同主机(即,连接到网络8的计算机设备,例如媒体中继服务器10和用户设备4a)上运行的过程之间的过程对过程通信。传输层16提供不同主机之间的端对端通信,包括提供主机(例如,媒体中继服务器10和用户设备4a)之间的端对端连接以供在其上运行的过程使用。互联网层15经由路由器3提供路由,即互联网8的不同个体网络之间的通信。链路层14例如经由在链路层14处操作的网络交换机和/或集线器等提供在互联网8的相同个体网络中的相邻节点的物理网络地址(例如,MAC(“介质访问控制”)地址)之间的通信。
在该示例中,信道12a是在网络8的应用层17处的应用层信道,其在媒体中继服务器10和在用户设备4a上运行的通信客户端的实例之间被建立。其为服务器10和客户端之间的过程对过程信道。应用层信道12a转而可以经由服务器10与用户设备4a之间的一个或多个传输层信道(经常被称为端对端或主机对主机信道)被建立。每个传输层信道转而经由用户设备4a、服务器10中的一者与路由器3之间或者多对路由器3之间的网络层信道被建立,所述网络层信道转而又是经由互联网8的个体网络内的链路层信道建立的。
针对第一用户2a生成的经编码的音频流5a经由信道12a被发送给第一用户设备4a。信道12a具有可用带宽,其构成信道12a的可用于音频的最大吞吐量。也就是说,可用带宽构成可能要经由信道12a发送的经编码的音频数据的上限,所述上限由信道的总带宽和相同信道被用于发送其他数据的程度来确定。注意到,术语“信道带宽”和“最大信道吞吐量”(或类似术语)在本文中被可互换地使用。可用带宽例如可以以kbps(千比特每秒)表达,或等效地以Hz、MHz、GHz等表达,该等效在本领域中已经被很好地建立。为了能够经由信道12a发送经编码的流5a,即为了能够经由信道12a将混合的经编码的音频数据流式传输给用户设备4a,出于以上所讨论的原因,经编码的音频流5a的比特率不应当超过该可用带宽,或者至少应当仅仅短暂地超过它。
如以下详细描述的,信道12a的可用带宽被估计以用于配置在媒体中继服务器10上执行的音频编码器(28,图3)的操作。经编码的音频流7a由编码器28生成并经由信道12a发送给第一用户设备4a。
在本公开内容的上下文中,经由其发送经编码的音频流的信道的“可用带宽”意指可用于经编码的音频流的带宽。取决于上下文,这可能是信道的总带宽,或者其可能只是总带宽的部分,例如在只有总带宽的部分可用于经编码的音频流的情况下,这是因为其必须与需要总带宽的其自己的部分的其他数据共享信道。
在以下描述的特定示例中,信道12a的可用带宽指代信道12a的总带宽中的可用于经编码的音频流7a的部分,其是(至少近似)信道12a的总带宽减去对在打包音频流时生成的相关联的报头数据以及经由相同信道12a发送的任何另外的相关联的VoIP数据(例如,经由相同信道12a发送的控制数据和/或任何其他类型的VoIP数据)进行传输所需的带宽。然而,术语不限于以下描述的特定示例。
虽然在当前示例中信道12a是应用层信道,但是主题在这方面不受限制。通常,为此目的估计其可用带宽的信道12a可以是构成媒体中继服务器10与用户设备4a之间的完整通信路径的任何适当的信道,例如服务器10和用户设备4a之间的在互联网层15处的端对端信道,或者可以在可以具有或可以不具有分层架构的网络上或者通过任何其他方式建立的任何其他这样的信道。
图3示出了编码系统20的功能框图。编码系统表示通过在媒体服务器10的处理器14a上执行流管理软件而实现的功能。
在本文的以下部分中,通过其第一经编码的混合音频流7a根据第二和第三用户的本地编码的音频流5b、5c生成并且经由信道12a被发送给第一用户设备4a的机制。因此,仅示出了用于此目的的编码系统20的那些模块。
然而,将领会的是,可以使用相同的机制来根据本地编码的第一和该流5a、5c生成第二经编码的混合音频流7b,并且根据流5a、5b生成第三经编码的混合音频流7c;并且经编码的混合流5b、5c可以经由服务器10和那些设备4b、4c之间的等效信道从服务器10发送给第二和该用户设备4b、4c。
编码系统20被示出为包括以下功能模块:解包器22b、22c,每个所述解包器被连接以接收第二和第三本地编码的音频流5b、5c中的对应的一者;音频解码器24b、24c,每个所述音频解码器具有连接到解包器22b、22c的对应的一者的输出的输入;音频混合器26,其具有两个输入,每个所述输入连接到解码器24b、24c的对应的一者的输入;音频编码器28,其具有连接到混合器26的输出的输入;打包器30,其具有连接到编码器28的输出的输入;编码模式选择器32,其具有连接到编码器28的第二输入的输出;速率选择器33,其具有连接到编码器28的第三输入的输出;以及带宽估计器34,其具有连接到模式选择器32的输入和速率选择器33的输入的输出。每个功能模块22b-34表示流管理代码的功能的对应部分。图3的框图仅是代表性的,并且在系统20中包括另外的模块,例如抖动处理模块等。
音频编码器28被配置为根据由混合器26生成的未编码的混合音频流40a来生成要发送给第一用户设备4a的经编码的音频流7a(见下文)。例如,音频编码器28可以在每帧基础上对混合音频流40a进行编码,其中,每个帧例如由音频流40a的20ms音频数据形成。
音频编码器28具有至少两种不同复杂度的可选编码模式—以上描述的类型的高复杂度(即,HC)模式和低复杂度(即,LC)模式。模式选择器32被配置为选择这些模式中的一者并且配置编码器28以在图3中由标记为EM的箭头表示的选择的编码模式下进行操作。模式选择器32被配置为基于由带宽估计器34生成的信道12a的可用带宽(即,可用于音频的带宽)的估计BW来选择性地在不同模式之间切换编码器28的操作(见下文)。在将编码器28配置为LC模式时,处理器14a的可用处理资源的一部分被分配给编码器28。在随后切换到HC模式时,所分配的部分的大小增加,这是因为模式选择器32允许编码器28通过选择HC模式来执行更复杂但资源密集的音频压缩。
编码器28还可以具有一个或多个另外的中间复杂度模式,具有在LC模式和HC模式的复合度之间某处的复杂度。为了简单起见,仅参考HC模式和LC模式描述以下示例,但如鉴于以下内容将显而易见的是,这些技术可以被扩展到更大数量的不同复杂度的编码模式。
音频编码器以由速率选择器33选择的当前输出比特率进行操作。当前选择的输出比特率意指音频编码器28当前被配置为输出经编码的音频流7a的比特的最大速率。也就是说,速率选择器33将编码器配置为将编码器的输出速率设置为期望的比特率BR,使得由音频编码器28生成的经编码的音频流7a具有期望的比特率BR。经编码的音频流7a的期望的比特率BR由速率选择器33选择。在该示例中,该选择基于由带宽估计器34生成的带宽估计BW,以确保BR≤BW。也就是说,为了确保经编码的音频流7a的比特率BR基本上不超过信道12a中的可用于经编码的音频流7a的吞吐量;如果确实如此,则完全经由信道12a来流式传输由编码器28输出的经编码的音频数据将是不可能的,这是因为编码器28将在每一时间间隔输出比在该时间间隔可能经由信道12a发送的数据更多的数据。这例如可能导致音频流7a的分组的传输的累积延迟和/或引起音频流的分组不得不持续地被丢弃—这二者如果被允许持续太久,都会导致感知的音频质量的严重劣化。
如上所述,在该示例中,需要为报头数据(例如,如由打包器30生成的)以及VoIP客户端的需要带宽的任何其他组件预留一些带宽。带宽估计器34将所有这一点纳入考量并且将总信道带宽中的与信道12a的总带宽减去预留的带宽相对应的部分分配给音频编码器28。在该示例中,图3的带宽估计BW与该分配的部分相对应,即其是对总信道带宽中的对于经编码的音频流7a可用的部分的估计,而不是对总信道带宽本身的估计。带宽估计BW例如可以由带宽估计器34生成,所述带宽估计器估计信道12a的总带宽,以及然后将该总估计减少确保总带宽的根据需要为其他数据保留的足够部分的量。
速率选择器33可以响应于带宽估计BW的变化而相应地改变期望的比特率BR,以当更多带宽变得可用于对可用信道带宽(在一些情况下,高达独立于可用带宽的最大比特率)进行最佳的使用时增加它,以及当带宽变得更有限时而降低它,以确保速率RT基本上不超过可用于音频的最大吞吐量BW。
换言之,编码器28以响应于信道的可用带宽的变化而适配的输出比特率对音频流40a进行编码,使得输出比特率BR基本上不超过可用信道带宽。在本文中“基本上”意指比特率BR在一些情况下可以在短时间内间歇地超过可用信道带宽(其可以被解释为短暂地,例如,通过丢弃其中音频流40a由打包器30封装的分组中的一者或多者),条件是采取步骤以随后将其减少到可用于音频的吞吐量BW或到低于所述吞吐量BW。
在该示例中,这是通过速率选择器33达成的,所述速率选择器33使用由带宽估计器34生成的带宽估计BW来设置编码器28的输出比特率BR。替代地,音频编码器的输出比特率BR可以通过一些其他单元依赖于信道的(物理)可用带宽来适配,在一些情况下,不必使用对可用信道带宽本身的测量或估计。例如,通过监测媒体服务器10的缓冲器中的经编码的音频数据的缓冲和/或通过监测信道12a上的分组丢失,其中,如果缓冲器变得过载和/或如果分组丢失过多,则输出比特率BR被减少,以便确保输出比特率BR基本上不超过可用信道带宽,即被分配给音频的带宽,其如所指出的是总信道带宽减去开销和由其他模块需要的任何带宽BW。
现在将参考图4来描述音频编码方法,所述图4示出了方法的流程图。该方法是由媒体服务器10的编码系统20实现的、计算机实现的方法。
在步骤S2处,本地编码的音频流5b/5c在媒体中继服务器10处被接收,并且分别由解包器22b/22c和解码器24b/24c解包和解码。在步骤S4处,经解码的流由混合器26混合,以生成针对第一用户2a的未编码的混合音频流40a。
在步骤S6处,通过带宽估计器34估计媒体中继器10之间的信道12a的可用带宽。所估计的带宽由图3中标记为BW的输出表示。出于选择编码器28的编码模式的目的,将所估计的带宽与至少第一带宽门限T1进行比较(S8),并且在步骤S10处,该方法取决于所估计的带宽BW高于第一带宽门限T1还是低于第一带宽门限T1来进行分支,以便选择合适的编码模式。在步骤S12、S16或S18处,取决于信道12a上的条件以及在一些情况下处理器14a上的负载来选择编码模式,如以下更详细解释的。只要该模式保持被选择,编码器28就在该选择的模式下进行操作以对混合音频流40a进行编码(S20)。
在音频流40a正在被编码的同时,模式选择可以被切换到新模式,使得之后混合音频流40a以新选择的模式被编码。
经编码的音频流7a由打包器30打包,并且经由通信信道12a被发送给第一用户设备4a。例如,由打包器30生成的每个分组可以包含由编码器28生成的一个完整的经编码的音频帧,使得每个分组由作为其有效载荷和相关联的报头数据的编码器帧形成。
尽管在图4中未显式地示出,但编码器28被初始配置为独立于步骤S6的带宽估计默认地在LC模式下进行操作。也就是说,处理资源中的被分配给编码器28的部分具有独立于信道12a的可用带宽的初始大小,如由LC模式定义的。
带宽估计器34在后台运行,以周期性地提供对信道12a的可用带宽的估计。只要所估计的带宽BW保持高于第一带宽门限T1,LC模式就保持被选择(S12)。如果且当所估计的带宽降至低于第一带宽门限T1时,在一些情况下,编码器可以由模式选择器32配置为其HC模式(S16),从而将处理资源中的被分配给编码器28的部分的大小增加到由HC模式定义的大小。然而,如以下更详细描述的,如果在步骤S10处所估计的带宽低于T1,则该方法并不总是前进到步骤S16:在一些情况下,该方法还在步骤S14处考虑处理器14a上的当前负载(例如,CPU负载),即对当前可用处理资源的测量,在图3中被表示为LD。
与在步骤S12处(即如果带宽估计BW低于T1)相比,处理器14a的可用处理资源中的被分配给编码器28的部分在步骤S16处(即如果带宽估计BW高于T1)更大,这是由于在步骤S16处选择的复杂度模式高于在步骤S12处选择的复杂度模式。
可以基于服务器规模和音频质量之间的期望的折衷来选择第一带宽门限T1。
如果后续带宽估计增加,如果且当所估计的带宽BW达到第一带宽门限T1时,一个选项是模式选择器32将编码器28的模式切换回LC模式。然而,如果所估计的带宽BW在第一门限T1周围波动,则这可能引起LC模式和HC模式之间的频繁切换。为了防止在复杂度模式之间的这样的频繁切换,如果且当带宽估计降至低于T1时,模式选择器32可以从LC模式切换到HC模式,但是如果且当带宽估计随后增加到达到不同于并且可能大于T1的第二带宽门限T2时,仅切换回LC模式到HC模式。
替代地或另外地,模式选择器32可以在编码器从一个复杂度模式切换到另一复杂度模式之前强制特定的最小时间段;也就是说,使得模式切换以不大于独立于信道12a的可用带宽的最大模式切换速率的速率而发生。
因为所估计的带宽BW(即,为音频分配的带宽)以这种方式变化,所以速率选择器33将以以上描述的方式并行地适配经编码的音频流7a的期望的比特率BR。因此,随着带宽增加到高于T2,输出比特率BR将由速率选择器33相应地增加,这转而意味着编码器28能够使用更少的处理资源来使经编码的音频流7a的感知失真最小化。相反,当带宽降至低于T1时,速率选择器33将降低输出比特率BR,以确保完全经由信道12a来流式传输编码器28的输出仍然是可能的,在该情况下,编码器28需要更多的处理资源来保持经编码的音频流7a的可接受的感知质量。
如上所述,除了基于可用带宽来配置复杂度模式之外,还将服务器CPU负载纳入考量可能是有益的。例如,如果在单个服务器上托管涉及若干低带宽客户端的多个会议,则在HC模式下可能存在对编码器的过度要求。为了避免这一点,除了带宽估计BW之外,还可以使用对处理器14a的处理器负载(例如,CPU负载)的测量(图3中被表示为LC)。负载测量与可用处理资源的量相关,其中,更高负载表示更少可用资源。
返回图4,如果在步骤S10处确定可用带宽低于第一带宽门限T1,该方法取决于对当前处理器负载LD的测量是否超过负载门限(意味着处理器14a的可用资源的量低于相应的可用性门限)而进行分支(S14)。如果否,则该方法前进到如以上描述的步骤S16,在所述步骤S16处HC编码模式针对编码器28而被选择。然而,如果处理器负载高于负载门限,则该方法前进到步骤S18,在所述步骤S18处编码模式中的一者在将高当前处理器负载纳入考量的情况下被选择。
例如,在负载LC已达到负载门限之后,用于加入呼叫的新参与者的编码器可以仅限于LC模式,使得在步骤S18处在第一用户2a是新参与者的情况下,即使他的可用带宽低于T1,LC模式也被选择。
替代地,可以执行全局优化以基于对每个编码器的可用带宽的排序的列表来调整所有活动的编码器的复杂度模式。也就是说,可以通过将更多可用处理资源分配给N个最低带宽参与者的编码器来优先考虑这N个最低带宽参与者(N>1)。替代地或另外地,可以根据一个或多个服务质量(QoS)来执行对处理资源的分配,以便将对处理资源的分配偏向具有更高QoS水平的编码器。例如,在两个编码器具有对于他们基本上相同的可用于音频的带宽但具有不同的QoS水平的情况下,可用处理资源的更大部分可以被分配给具有更高QoS水平的编码器。
在又一替代方案中,当处理器负载过重时,对于视频呼叫,可以在S18处总是选择HC模式以维持音频质量,而对在相同处理器14a上执行的一个或多个其他软件模块的一个或多个处理资源分配被减少以释放处理资源从而允许HC模式音频编码。
如上所述,本技术还可以在用户设备4a、4b、4c上执行的客户端处被实现。在该情况下,在S18处可以总是选择HC模式以维持音频质量,其中,对在相同处理器14a上执行的视频编码器的处理资源分配被减少以释放处理资源从而允许HC模式音频编码。也就是说,在那种情况下,可以为了音频质量而牺牲视频质量。可以在执行一个或多个视频编码器的媒体服务器处使用相同的技术,例如以执行转码。
如图5示出的,第一用户设备4a接收经编码和经打包的混合音频流7a。在第一用户设备4a的处理器6a上执行的客户端实现解包器52和解码器54。解包器52接收了经打包的混合音频流7a并对其进行解包,并且解码器将解码算法应用于经解包的流7a以生成经解码的音频流55a,以用于经由第一用户设备的扬声器装置46输出给第一用户2a。因为由服务器侧编码器28应用的压缩是有损的,所以经解码的音频流55a的音频数据与在媒体服务器10处生成的原始的未编码的混合音频流40a不完全相同。然而,在应用图4的技术时,确保的是由原始音频数据40a的音频与经解码的流55a的音频之间的差异引起的任何感知失真(即,如由第一用户2a感知到的)被最小化,同时仍然最高效地使用媒体服务器10处可用的处理资源。
就为了能够解码经编码的音频流7a,解码器54不需要知道已使用了哪个编码模式的意义而言,服务器10处的任何编码器模式切换对于第一用户设备4a上的客户端是不可见的。因此,所选择的模式不需要由服务器10用信号的方式发送给客户端。例如,Silk和Opus音频代码允许在不知道用于编码的复杂度模式的情况下进行解码。尽管如此,也并不排除使用确实用信号方式发送所选择的模式的替代的多模编码器的可能性。
如所指出的,为了简单起见,以上方法仅考虑两个编码模式。但是如将显而易见的是,技术可以被扩展以支持另外的中间编码模式,其具有确定何时发生各种编码模式之间的切换的另外的门限。
尽管未在图3中显式地示出,但如提及的,编码系统还可以包括在相同处理器14a上执行的一个或多个视频编码器。例如,在处理器14a上执行的视频编码器可以从用户设备4a、4b或4c中的一者接收本地编码的视频流,并且进行重新编码例如以降低其比特率以发送给另一用户设备(例如,具有有限的用于视频的带宽的移动设备)和/或以与其他用户设备中的一者兼容—被称为转码。通过图4的方法优化针对音频编码器的对处理资源的分配来释放处理资源,可以使更多的处理资源可用于分配给视频编码器,以在感知音频质量方面没有有任何显著的牺牲的情况下实现视频质量的改善。
如所指出的,如以上使用的术语“复杂度”意指“算法复杂度”。也就是说,实现算法的代码模块(例如,音频编码器)的“复杂度”指代算法的时间算法复杂度。如本领域中已知的,算法的时间复杂度是该算法的固有属性,其确定该算法处理任何给定输入所需的基本操作的数量,其中,更复杂的算法与他们较不复杂的对应物相比每一输入需要更多的基本处理操作。原因在于:来自更高复杂度的音频编码的任何改善的感知质量增益就需要的处理资源而言是有代价的,这是因为如果他们能够足够快地处理音频数据以至于能够保持经编码的音频流的期望的输出比特率,更复杂、更高质量的编码算法就需要更多的处理器资源(即,每秒更多的处理器时钟循环)。
为了帮助理解这一点,考虑以下示例是有用的,注意该示例是极度简化的并且仅用于说明而被提供:假设未处理的音频帧包括N个样本,每个样本是M个比特的。第一极度基本的下采样算法可以行动以通过“跳过”每第二个样本来简单地将样本数量减半。另一方面,第二、稍微更复杂的下采样算法可以在“跳过”每第二个经滤波的样本之前对音频帧执行低通滤波(使用例如近似正弦滤波器)以适当地减小信号带宽。第二算法比第一算法复杂,这是因为广义而言,对于每一算法而言,需要相同数量的基本操作来执行“跳过”步骤,但需要另外的基本操作来执行第二算法的另外的滤波步骤。因此,与第一算法相比,第二算法将需要更多的处理器资源来在处理音频数据流时保持实时操作,但根据奈奎斯特(Nyquist)采样定理,与如本领域中已知的第一算法相比通常将被预期带来更高的输出质量。当然,如将容易领会的,这是极度简化的示例,并且实际上,没有任何现代的CPU足够慢以至于LP滤波对他们而言会是实际的问题。
在上文中,处理器的可用处理资源的一部分由采用模式选择器32形式的资源分配器通过从该编码器的具有不同算法复杂度的编码器模式中进行选择来分配给在该处理器上执行的编码器。然而,主题在这方面中并不受限,并且处理资源可以通过其他方式来分配。例如,资源分配器可以显式地向编码器分配可用处理资源的某个分数或百分比,或者显式地分配以例如Hz、MHz、GHz为单位的某个值(即,显式地分配每秒某个数量的时钟循环),随着所确定的信道带宽改变,资源分配器将动态地对其进行改变,并且编码器可以被配置为动态地适配其操作,使得其不使用显著多于其分配的部分。例如,这样的分配可以通过硬件虚拟化的方式来实现,即,由此硬件的不同部分在相同处理器上的软件中被仿真,并且例如在云计算平台上被分配该处理器的资源。
通常,术语“处理器的可用处理资源”或类似的术语指代每单位时间处理器的可用于分配给在处理器上执行的一个或多个音频编码器的时钟循环集(例如,其可以以Hz、MHz、GHz等表达),并且术语“可用处理资源中的被分配给在处理器上执行的编码器的一部分”指代每单位时间那些时钟循环中的通过任何适当的分配方式被保留且可由该音频编码器来使用的某个分数。提及可用处理资源的第一部分“大于”(相应地,“小于”)可用处理资源的第二部分或类似的提及意指与第二部分相比第一部分构成每单位时间更多(相应地,更少)数量的时钟循环。
虽然术语“处理器的可用处理资源”可以在一些情况下指代处理器的总可用处理资源,即每单位时间该处理器的所有或基本上所有时钟循环,但是术语不限于此,并且可以意指总处理资源的仅仅一部分。例如,在云计算的上下文中,多个虚拟服务器(即,服务器硬件仿真)可以在相同的物理处理器上运行,那些虚拟服务器中的每一者被分配物理处理器的总处理资源的一部分。例如,虚拟服务器可以在云计算平台上被实现。在该上下文中,术语“可用处理资源”可以例如指代总资源中的被分配给虚拟服务器中的一者的仅仅该部分,并且因此其可用于该服务器以被例如分配给在该相同虚拟服务器上运行的不同编码器或在所述不同编码器之间重新分配。
在图1中示出且在上文描述的服务器架构是示例性的。通常,服务器可以包括多个处理器,所述多个处理器在单个服务器设备中或被分布在多个服务器设备之间(即,服务器可以由多个、协作的服务器设备或更一般地服务器硬件的任何适当的布置形成)。例如,编码系统20的功能模块可以在不同的处理器上执行,例如模式选择器32和带宽估计器34不需要在与编码器28相同的处理器上执行,使得模式选择器32和带宽估计器34不共享与编码器28相同的处理资源集(但在该情况下,编码器28仍然可以与在相同处理器14a上执行的其他编码器共享处理资源)。此外,术语“服务器”还包含虚拟服务器(例如,在先前段落中描述的作为物理处理器上的仿真运行的类型的虚拟服务器)以及由一个或多个物理服务器设备形成的物理服务器。
此外,虽然以上实施例在媒体服务器10处被实现,但是本技术不限于服务器实施方式。例如,可以在用户设备4a、4b、4c中的一者上或者包括一个或多个计算机设备的任何其他适当的计算机系统上实现这些技术。
根据本主题的第一方面,对音频流进行编码的方法包括以下步骤:在处理器上执行的音频编码器处接收要经由通信信道被发送给接收设备的音频流,所述处理器具有一定量的可用处理资源;确定通信信道的可用带宽;基于所确定的带宽,将可用处理资源的一部分分配给音频编码器,其中,如果所确定的带宽低于带宽门限,则所分配的部分更大;由音频编码器使用处理资源的所分配的部分对音频流进行编码;以及经由通信信道将经编码的音频流发送给接收设备。
在实施例中,分配步骤可以通过基于所确定的带宽来选择音频编码器的具有不同复杂度的多个编码模式中的一者,以及将编码器配置为在所选择的编码模式下进行操作以对音频流进行编码,其中,如果所确定的带宽低于带宽门限,则选择编码模式中的需要可用处理资源的更大部分的更高复杂度编码模式。
响应于在所述分配之后发生的所确定的带宽的增加,可以减少处理资源的所分配的部分。
可以通过以下方式来减少可用处理资源中的被分配给音频编码器的部分:响应于所确定的带宽的增加,将音频编码器切换到编码模式中的仅需要可用处理资源的减少的部分的更低复杂度编码模式。
如果所确定的带宽随后从低于带宽门限的值增加,则仅当递增的带宽达到不同的带宽门限时,才可以减少处理资源中的被分配给音频编码器的部分。该不同的带宽门限可以高于所述带宽门限。
可用处理资源中的通过所分配的部分的所述减少而变得可用的至少一些处理资源可以被重新分配给在处理器上执行的另一软件模块(例如,用于对视频流进行编码的视频编码器)。
例如,音频编码器可以是在处理器上执行的通信客户端的部件,并且可用处理资源中的通过所分配的部分中的所述减少而变得可用的的至少一些处理资源被重新分配给在处理器上执行的通信客户端的另一软件模块(例如,通信客户端的视频编码器)。
处理资源中的被分配给音频编码器的部分可以以不大于独立于可用带宽的最大分配变化率的速率而被改变。
当音频流初始在音频编码器处被接收时,可用处理资源的该部分独立于可用带宽地被初始地分配给音频编码器,并且然后响应于随后确定可用带宽低于带宽门限而被增加。
该方法还可以包括:确定对该一定量的可用处理资源的测量;其中,可用处理资源的该部分是基于所确定的通信信道的带宽和所确定的对该一定量的可用处理资源的测量来分配的。
与如果所确定的带宽低于带宽门限并且可用处理资源低于可用性门限的情况相比,如果所确定的带宽低于带宽门限并且可用处理资源的量高于可用性门限,则可用处理资源中的被分配给音频编码器的部分可以更大。
可以在处理器上执行多个音频编码器,其中,针对音频编码器中每一者执行步骤以将可用处理资源的对应部分分配给音频编码器中每一者,音频编码器使用可用处理资源的对应部分来对对应的音频流进行编码以经由对应的通信信道发送给对应的接收设备。
该方法还可以包括识别音频编码器中的其对应通信信道具有最低可用带宽的子集(即,N个音频编码器具有N个最低可用带宽,其中,N≥1),其中,与被分配给其他音频编码器中的任一者的部分相比,可用处理资源中的更大部分被分配给所识别的音频编码器中的每一者(即,这N个音频编码器中的每一者)。
可以响应于可用处理资源降低至可用性门限来识别子集。
替代地或另外地,可以基于以下各项来将可用处理资源的对应部分分配给每个音频编码器:所确定的带宽和被指派给该编码器的服务质量水平。例如,使得可用处理资源中的更大部分被分配给这些音频编码器中的如下一个音频编码器:其具有更高的指派的服务质量水平,并且其对应的可用带宽基本上与这些音频编码器中的具有更低的指派的服务质量水平的另一音频编码器的带宽相匹配。
编码器可以以响应于信道的可用带宽的变化而适配的输出比特率对音频流进行编码。
所确定的带宽可以用于适配输出比特率。响应于可用带宽的增加(相应地,减少),输出比特率可以被增加(相应地,减少),并且可用处理资源中的被分配给音频编码器的部分可以被减少(相应地,增加)。
根据本主题的第二方面,计算机系统包括:网络接口,其用于经由通信信道与接收设备进行通信;带宽确定器,其被配置为确定通信信道的可用带宽;音频编码器,其在计算机系统的处理器上执行并且被配置为接收要经由通信信道被发送给接收设备的音频流,所述处理器具有一定量的可用处理资源;以及资源分配器,其被配置为基于所确定的带宽,将可用处理资源的一部分分配给音频编码器,其中,如果所确定的带宽低于带宽门限,则所分配的部分更大,其中,音频编码器被配置为使用处理资源的所分配的部分来对所述音频流进行编码,并且其中,网络接口被配置为经由通信信道将经编码的音频流发送给接收设备。
在实施例中,计算机系统可以被配置为充当服务器。
替代地,计算机系统可以被体现在用户设备中。
在实施例中,计算机系统可以被配置为实现第一方面的以上描述的实施例的特征中的任一者。
根据本主题的第三方面,计算机程序产品包括被存储在计算机可读存储介质上的资源分配代码,其中,资源分配代码被配置为当被执行时通过实施本文公开的方法步骤或系统功能中的任一者来将处理器的可用处理资源分配给在处理器上执行的音频编码器。
通常,本文描述的许多功能可以使用软件、固件、硬件(例如,固定逻辑电路)或这些实施方式的组合来实现。如本文使用的术语“模块”、“功能”、“组件”和“逻辑”(例如,图3的那些(除了编码器28本身之外))可以用软件、固件、硬件或其任意组合来实现。在软件实施方式的情况下,模块、功能或逻辑表示在处理器(例如,一个或多个CPU)上执行时执行指定的任务的程序代码。程序代码可以被存储在一个或多个计算机可读存储设备中。以下描述的技术的特征是独立于平台的,这意味着技术可以在具有各种处理器的各种商业计算平台上被实现。例如,用户设备4a-4c或服务器10还可以包括使得用户设备的硬件执行操作的实体(例如,软件),例如处理器功能块等。例如,用户设备可以包括计算机可读介质,其可以被配置为保持使得用户设备(并且更具体而言,用户设备的操作系统和相关联的硬件)执行操作的指令。因此,所述指令进行操作以将操作系统和相关联的硬件配置为执行操作,并且以这种方式引起操作系统和相关联的硬件的转换以执行功能。所述指令可以由计算机可读介质通过各种不同的配置提供给用户设备。计算机可读介质的一种这样的配置是信号承载介质,并且因此被配置为例如经由网络将指令(例如,作为载波)发送给计算设备。计算机可读介质还可以被配置为计算机可读存储介质并且因此不是信号承载介质。计算机可读存储介质的示例包括可以使用磁性技术、光学技术和其他技术来存储指令和其他数据的随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及其他存储设备。
尽管已用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解的是,在所附权利要求中定义的主题不一定限于以上描述的特定特征或动作。而是,以上描述的特定特征和动作是作为实现权利要求的示例性形式公开的。
Claims (14)
1.一种对音频流进行编码的方法,包括以下步骤:
在处理器上执行的音频编码器处接收要经由通信信道被发送给接收设备的音频流,所述处理器具有一定量的可用处理资源;
确定所述通信信道的可用带宽;
基于所确定的带宽,将所述可用处理资源的一部分分配给所述音频编码器,其中,与如果所确定的带宽高于带宽门限相比,如果所确定的带宽低于带宽门限,则所分配的部分更大;
由所述音频编码器使用处理资源的所分配的部分对所述音频流进行编码;以及
经由所述通信信道,将经编码的音频流发送给所述接收设备;
其中,多个音频编码器在所述处理器上被执行,其中,所述步骤是针对所述音频编码器中的每一者执行的,以将所述可用处理资源中的对应部分分配给所述音频编码器中的每一者,该音频编码器使用所述可用处理资源中的所述对应部分来对对应的音频流进行编码以经由对应的通信信道发送给对应的接收设备,所述方法还包括:
识别所述音频编码器中的其对应的通信信道具有最低可用带宽的子集,其中,与被分配给其他音频编码器中的任一者的部分相比,所述可用处理资源中的更大部分被分配给所识别的音频编码器中的每一者。
2.根据权利要求1所述的方法,其中,通过以下操作来执行所述分配步骤:基于所确定的带宽来选择所述音频编码器的具有不同复杂度的多个编码模式中的一者,以及将所述编码器配置为在所选择的编码模式下进行操作以对所述音频流进行编码;
其中,如果所确定的带宽低于所述带宽门限,则选择所述编码模式中的需要所述可用处理资源的所述更大部分的更高复杂度编码模式。
3.根据权利要求1所述的方法,其中,响应于在所述分配之后发生的所确定的带宽的增加,所述处理资源的所分配的部分被减少。
4.根据权利要求2所述的方法,其中,通过以下方式来减少所述可用处理资源中的被分配给所述音频编码器的所述部分:响应于所确定的带宽的增加,将所述音频编码器切换到所述编码模式中的仅需要所述可用处理资源中的经减少的部分的更低复杂度编码模式。
5.根据权利要求3所述的方法,其中,如果所确定的带宽随后从低于所述带宽门限的值增加,则仅当递增的带宽达到不同的带宽门限时,才减少所述处理资源中的被分配给所述音频编码器的所述部分。
6.根据权利要求3所述的方法,其中,所述音频编码器是在所述处理器上执行的通信客户端的部件,并且所述可用处理资源中的通过所分配的部分的所述减少而变得可用的至少一些处理资源被重新分配给在所述处理器上执行的所述通信客户端的另一软件模块。
7.根据权利要求1所述的方法,其中,所述处理资源中的被分配给所述音频编码器的所述部分以不大于独立于所述可用带宽的最大分配变化率的速率被改变。
8.根据权利要求1所述的方法,其中,当所述音频流初始在所述音频编码器处被接收时,所述可用处理资源的所述部分独立于所述可用带宽被初始地分配给所述音频编码器,并且然后响应于随后确定所述可用带宽低于所述带宽门限而被增加。
9.根据权利要求1所述的方法,还包括:
确定对所述一定量的可用处理资源的测量;
其中,所述可用处理资源的所述部分是基于所确定的所述通信信道的带宽以及所确定的对所述一定量的可用处理资源的测量来分配的。
10.根据权利要求1所述的方法,还包括:
其中,所述编码器以响应于所述信道的所述可用带宽的变化而适配的输出比特率对所述音频流进行编码。
11.根据权利要求10所述的方法,其中,响应于所述可用带宽的增加,所述输出比特率被增加,并且所述可用处理资源中的被分配给所述音频编码器的所述部分被减少。
12.一种计算机系统,其包括:
网络接口,其用于经由通信信道与接收设备进行通信;
带宽确定器,其被配置为确定所述通信信道的可用带宽;
音频编码器,其在所述计算机系统的处理器上执行并且被配置为接收要经由所述通信信道被发送给所述接收设备的音频流,所述处理器具有一定量的可用处理资源;以及
资源分配器,其被配置为:
基于所确定的带宽,将所述可用处理资源的一部分分配给所述音频编码器,其中,与如果所确定的带宽高于带宽门限相比,如果所确定的带宽低于带宽门限,则所分配的部分更大,其中,
所述音频编码器被配置为使用处理资源的所分配的部分来对所述音频流进行编码,并且其中,所述网络接口被配置为经由所述通信信道将经编码的音频流发送给所述接收设备;
其中,多个音频编码器在所述处理器上被执行,其中,将所述可用处理资源中的对应部分分配给所述音频编码器中的每一者,该音频编码器使用所述可用处理资源中的所述对应部分来对对应的音频流进行编码以经由对应的通信信道发送给对应的接收设备;并且
其中,所述资源分配器还被配置为:识别所述音频编码器中的其对应的通信信道具有最低可用带宽的子集,其中,与被分配给其他音频编码器中的任一者的部分相比,所述可用处理资源中的更大部分被分配给所识别的音频编码器中的每一者。
13.根据权利要求12所述的计算机系统,其被配置为充当服务器;或者其被体现在用户设备中。
14.一种计算机可读存储介质,其上存储有资源分配代码,其中,所述资源分配代码被配置为当被执行时通过实施以下步骤来将处理器的可用处理资源分配给在所述处理器上执行的音频编码器:
确定通信信道的可用带宽,音频流将经由所述通信信道被发送给接收设备;
基于所确定的带宽,将所述可用处理资源的一部分分配给所述音频编码器,由此使得所述编码器使用所述处理资源的所分配的部分对所述音频流进行编码以经由所述通信信道发送给所述接收设备,其中,与如果所确定的带宽高于带宽门限相比,如果所确定的带宽低于带宽门限,则所分配的部分更大;
其中,多个音频编码器在所述处理器上被执行,其中,所述步骤是针对所述音频编码器中的每一者执行的,以将所述可用处理资源中的对应部分分配给所述音频编码器中的每一者,该音频编码器使用所述可用处理资源中的所述对应部分来对对应的音频流进行编码以经由对应的通信信道发送给对应的接收设备;以及
识别所述音频编码器中的其对应的通信信道具有最低可用带宽的子集,其中,与被分配给其他音频编码器中的任一者的部分相比,所述可用处理资源中的更大部分被分配给所识别的音频编码器中的每一者。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/990,658 | 2016-01-07 | ||
US14/990,658 US10332534B2 (en) | 2016-01-07 | 2016-01-07 | Encoding an audio stream |
PCT/US2016/068609 WO2017120065A1 (en) | 2016-01-07 | 2016-12-26 | Encoding an audio stream |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108370378A CN108370378A (zh) | 2018-08-03 |
CN108370378B true CN108370378B (zh) | 2021-04-16 |
Family
ID=57838506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680073029.XA Active CN108370378B (zh) | 2016-01-07 | 2016-12-26 | 对音频流进行编码的方法、系统和计算机可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10332534B2 (zh) |
EP (1) | EP3375164B1 (zh) |
CN (1) | CN108370378B (zh) |
WO (1) | WO2017120065A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017218522A1 (en) * | 2016-06-13 | 2017-12-21 | Arris Enterprises Llc | Reduction of startup time in remote hls clients |
US9712570B1 (en) * | 2016-09-28 | 2017-07-18 | Atlassian Pty Ltd | Dynamic adaptation to increased SFU load by disabling video streams |
US11304013B2 (en) | 2019-02-08 | 2022-04-12 | Starkey Laboratories, Inc. | Assistive listening device systems, devices and methods for providing audio streams within sound fields |
US11763157B2 (en) | 2019-11-03 | 2023-09-19 | Microsoft Technology Licensing, Llc | Protecting deep learned models |
CN111617466B (zh) * | 2020-05-12 | 2023-04-28 | 咪咕文化科技有限公司 | 编码格式的确定方法、装置及云游戏的实现方法 |
CN111554312A (zh) * | 2020-05-15 | 2020-08-18 | 西安万像电子科技有限公司 | 控制音频编码类型的方法、装置和系统 |
KR20210142393A (ko) * | 2020-05-18 | 2021-11-25 | 엘지전자 주식회사 | 영상표시장치 및 그의 동작방법 |
US11812213B2 (en) | 2020-09-30 | 2023-11-07 | Starkey Laboratories, Inc. | Ear-wearable devices for control of other devices and related methods |
CN113450808B (zh) * | 2021-06-28 | 2024-03-15 | 杭州网易智企科技有限公司 | 音频码率确定方法、装置、存储介质及电子设备 |
US11509548B1 (en) * | 2021-07-16 | 2022-11-22 | Google Llc | Adaptive exponential moving average filter |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973515A (zh) * | 2004-05-13 | 2007-05-30 | 高通股份有限公司 | 通过通信信道进行的信息传递 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
US7023839B1 (en) * | 1999-01-26 | 2006-04-04 | Siemens Communications, Inc. | System and method for dynamic codec alteration |
US7307980B1 (en) * | 1999-07-02 | 2007-12-11 | Cisco Technology, Inc. | Change of codec during an active call |
US7116682B1 (en) * | 2001-03-19 | 2006-10-03 | Cisco Technology, Inc. | Methods and apparatus for dynamic bandwidth adjustment |
US20050024487A1 (en) | 2003-07-31 | 2005-02-03 | William Chen | Video codec system with real-time complexity adaptation and region-of-interest coding |
US20050052996A1 (en) * | 2003-09-09 | 2005-03-10 | Lucent Technologies Inc. | Method and apparatus for management of voice-over IP communications |
US8068436B2 (en) * | 2003-10-15 | 2011-11-29 | Microsoft Corporation | Methods and systems for estimating network available bandwidth using packet pairs and spatial filtering |
US7352808B2 (en) | 2004-01-29 | 2008-04-01 | International Business Machines Corporation | System and method for the dynamic resolution change for video encoding |
US7949117B2 (en) * | 2005-04-28 | 2011-05-24 | Apple Inc. | Heterogeneous video conferencing |
US8861701B2 (en) * | 2005-04-28 | 2014-10-14 | Apple Inc. | Multi-participant conference adjustments |
US20070140116A1 (en) * | 2005-12-16 | 2007-06-21 | Microsoft Corporation | Interactive Codec Selection |
US8433050B1 (en) * | 2006-02-06 | 2013-04-30 | Avaya Inc. | Optimizing conference quality with diverse codecs |
US7768543B2 (en) * | 2006-03-09 | 2010-08-03 | Citrix Online, Llc | System and method for dynamically altering videoconference bit rates and layout based on participant activity |
EP2025159A4 (en) | 2006-05-30 | 2013-04-10 | Google Inc | DEVICE, ARRANGEMENT, METHOD AND COMPUTER PROGRAM PRODUCT FOR DIGITAL VIDEO PROCESSING |
US7873074B1 (en) * | 2006-06-01 | 2011-01-18 | Avaya Inc. | Adaptive selection of bandwidth parameters to meet a service provider pricing model |
US8312120B2 (en) | 2006-08-22 | 2012-11-13 | Citrix Systems, Inc. | Systems and methods for providing dynamic spillover of virtual servers based on bandwidth |
US8773494B2 (en) * | 2006-08-29 | 2014-07-08 | Microsoft Corporation | Techniques for managing visual compositions for a multimedia conference call |
ATE550854T1 (de) * | 2007-08-09 | 2012-04-15 | Markport Ltd | Verwaltung von netzwerkressourcen |
US8295342B2 (en) | 2007-11-14 | 2012-10-23 | International Business Machines Corporation | Method and system for efficient video compression with low-complexity encoder |
US9167007B2 (en) | 2008-06-06 | 2015-10-20 | Amazon Technologies, Inc. | Stream complexity mapping |
US8396114B2 (en) | 2009-01-29 | 2013-03-12 | Microsoft Corporation | Multiple bit rate video encoding using variable bit rate and dynamic resolution for adaptive video streaming |
GB2454606C (en) * | 2009-02-02 | 2017-01-25 | Skype Ltd | Method of transmitting data in a communication system |
US8270473B2 (en) | 2009-06-12 | 2012-09-18 | Microsoft Corporation | Motion based dynamic resolution multiple bit rate video encoding |
US8289870B2 (en) * | 2009-09-23 | 2012-10-16 | Avaya Inc. | Priority-based, dynamic optimization of utilized bandwidth |
US8689267B2 (en) | 2010-12-06 | 2014-04-01 | Netflix, Inc. | Variable bit video streams for adaptive streaming |
US20120195364A1 (en) | 2011-01-31 | 2012-08-02 | Apple Inc. | Dynamic mode search order control for a video encoder |
US8953468B2 (en) * | 2011-05-24 | 2015-02-10 | International Business Machines Corporation | Voice over internet protocol (VoIP) session quality |
US9635374B2 (en) | 2011-08-01 | 2017-04-25 | Apple Inc. | Systems and methods for coding video data using switchable encoders and decoders |
US9516085B2 (en) | 2011-09-20 | 2016-12-06 | Google Technology Holdings LLC | Constrained fidelity Adaptive Bit Rate encoding systems and methods |
US9560361B2 (en) | 2012-12-05 | 2017-01-31 | Vixs Systems Inc. | Adaptive single-field/dual-field video encoding |
US20150201041A1 (en) * | 2013-03-18 | 2015-07-16 | Google Inc. | Device dependent codec negotiation |
US9210381B2 (en) * | 2013-06-24 | 2015-12-08 | Dialogic Corporation | Resource-adaptive video encoder sharing in multipoint control unit |
GB201314067D0 (en) | 2013-08-06 | 2013-09-18 | Microsoft Corp | Allocating Processor Resources |
GB201319271D0 (en) * | 2013-10-31 | 2013-12-18 | Microsoft Corp | Sharing network resources |
EP3130191B1 (en) * | 2014-04-06 | 2018-07-04 | Hughes Network Systems, LLC | Apparatus and method for an adaptive periodic bandwidth allocation approach in a shared bandwidth communications system |
US9729726B2 (en) * | 2014-12-05 | 2017-08-08 | Facebook, Inc. | Seamless codec switching |
GB2541733B (en) * | 2015-08-28 | 2019-02-13 | Imagination Tech Ltd | Bandwidth Management |
US10523939B2 (en) * | 2015-12-31 | 2019-12-31 | Facebook, Inc. | Dynamic codec adaption |
-
2016
- 2016-01-07 US US14/990,658 patent/US10332534B2/en active Active
- 2016-12-26 CN CN201680073029.XA patent/CN108370378B/zh active Active
- 2016-12-26 EP EP16828854.6A patent/EP3375164B1/en active Active
- 2016-12-26 WO PCT/US2016/068609 patent/WO2017120065A1/en active Application Filing
-
2019
- 2019-05-06 US US16/404,474 patent/US20190259404A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1973515A (zh) * | 2004-05-13 | 2007-05-30 | 高通股份有限公司 | 通过通信信道进行的信息传递 |
Also Published As
Publication number | Publication date |
---|---|
US20170200454A1 (en) | 2017-07-13 |
EP3375164B1 (en) | 2019-10-16 |
US10332534B2 (en) | 2019-06-25 |
CN108370378A (zh) | 2018-08-03 |
US20190259404A1 (en) | 2019-08-22 |
EP3375164A1 (en) | 2018-09-19 |
WO2017120065A1 (en) | 2017-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108370378B (zh) | 对音频流进行编码的方法、系统和计算机可读存储介质 | |
EP3069489B1 (en) | Methods and devices for media processing in distributed cloud | |
TWI647614B (zh) | 增強編解碼引擎控制之方法 | |
US7817557B2 (en) | Method and system for buffering audio/video data | |
JP5043132B2 (ja) | 通信システムにおけるデータ伝送方法 | |
US20080101410A1 (en) | Techniques for managing output bandwidth for a conferencing server | |
CN106576345B (zh) | 通过蜂窝网络传播通信感知 | |
US8984156B2 (en) | Multi-party mesh conferencing with stream processing | |
US20170084280A1 (en) | Speech Encoding | |
Pham et al. | Evaluation of shared resource allocation using SAND for ABR streaming | |
US9509618B2 (en) | Method of transmitting data in a communication system | |
US20150120933A1 (en) | Sharing Network Resources | |
US11206320B2 (en) | Method and apparatus for implementing congestion control negotiation | |
US9578283B1 (en) | Audio level based management of communication resources | |
WO2018071237A1 (en) | Dynamically partitioning media streams | |
US20150149638A1 (en) | Resource Allocation | |
US10652121B2 (en) | Toggling enhanced mode for a codec | |
CN108353035B (zh) | 用于多路复用数据的方法和设备 | |
WO2015077389A1 (en) | Resource allocation | |
CN116156099A (zh) | 一种网络传输方法、装置和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |