多种同时音频模式背景技术
计算设备时常被配备有用于执行音频信号处理的专业音频硬件。通常,这样的音频硬件包括对利用计算设备捕获或生成的音频信号执行信号处理的一个或多个数字信号处理芯片或算法。这样的信号处理可以导致特定的音频效果,诸如增强音乐信号、从VOIP(voiceoverInternetProtocol)(因特网协议话音)信号中移除回声、降低噪声、模拟混响等等。在一些情况中,(时常经由主机总线连接的)这样的专用音频硬件或音频卡能够提供各种各样的这样的基于硬件的信号处理模式或效果。
以前,甚至在专用的音频信号处理设备被配置有多种这样的模式时,计算设备也无法一次使用一种以上这样的基于硬件的信号处理模式。操作系统通常将通过交替地将所有的音频处理(针对所有的音频路径或流)从一种模式转到另一种模式来应付多种模式的可用性。在任何给定的时间,利用计算设备处理的所有音频将利用相同的基于硬件的音频信号处理模式来处理。
这种方案具有只有本发明人认识到的缺陷。有时,计算设备上的不同应用可能具有不同的信号处理偏好。例如,VOIP应用可能需要在其输入上的回声消除处理以及在其输出上的最少处理,而同时再现(render)音乐的音乐播放器可能需要降噪信号处理来增强所再现的音频,而这有可能引入时延(latency)。另外,在前的单模方案已阻止音频硬件资源的充分利用。无论是否音频硬件能够进行同时的多模处理,管理这样的硬件的操作系统还没有被设计来利用这样的能力。
下面讨论与提供同时的多模音频处理有关的技术。
发明内容
以下概述部分仅被包括来介绍下面在具体描述部分中讨论的一些概念。这个概述部分并不是全面的,并且非旨在描绘利用在末尾呈现的权利要求书来阐述的所请求保护的主题的范畴。
本文描述的实施例包括用于利用不同的基于硬件的音频处理模式来同时处理不同的音频流的设备和处理。用于这样的实施例的计算设备可以具有能够并行运行的多种硬件音频信号处理模式。操作系统或其音频堆栈可以管理音频路径或流,以便音频源产生各自类型的音频信号。根据音频信号的类型可以确定哪些音频路径或流将与哪些硬件音频信号处理模式进行连接。第一硬件音频信号处理模式可能在处理第一音频路径或流的第一类型的音频信号,而同时第二硬件音频信号处理模式处理第二音频路径或流的第二类型的音频信号。
下面将参考结合附图所考虑的以下具体描述来解释许多伴随特征。
附图说明
从依据附图阅读的以下具体描述中将更好地理解本描述,其中相类似的参考数字用于在随附的描述中标明相类似的部分。
图1显示计算设备。
图2显示利用音频硬件的音频处理模式同时处理的音频流的细节。
图3显示音频堆栈以及通过音频堆栈接收音频数据的应用。
图4显示音频堆栈的细节。
图5显示在其上面可以实现上述实施例的计算设备的示例。
具体实施方式
下面讨论的实施例涉及提供能够同时应用于不同音频流的多种音频模式。讨论将利用被配置有音频信号处理硬件的计算设备的综述来开始。接下来,将讨论利用操作系统实现的音频流管理方案。紧接着将描述音频流堆栈的细节,紧随其后的是从而执行的处理的讨论。
图1显示计算设备100。计算设备100具有音频硬件102。通常,音频硬件102是经由系统总线与中央处理单元(CPU)互操作的专用芯片或外设卡。音频硬件102提供可以利用一个或多个数字信号处理器来实现的多种音频信号处理模式(或效果)。每一种模式实现不同的音频信号处理算法。以下是在各种音频处理设备上可能出现的这样的模式的示例:3D音频,游戏,动态增益调节,话音,气氛,回声消除,声源定位等等。注意:模式可以用于所捕获的音频、将在扬声器上播放的所再现的音频或二者。另外,模式不一定需要变换信号。一些模式可以执行信号分析来针对应用产生关于信号的信息。模式也可以用于格式转换,例如变换比特率、采样率、通道计数或其他的信号特征。
计算设备100上的操作系统104可能利用设备驱动器(未显示)来控制利用一个或多个应用106对于音频硬件102的访问和使用。特别地,音频堆栈108(操作系统104的音频功能)可以管理将至/自应用106的音频信号与音频硬件102相链接的音频通路(也被称为路径或流)。虽然实现细节对于不同的操作系统而言将变化,但是音频流是数字音频信号数据在源与目的地之间的流动(flow)。取决于音频流的方向,源和目的地可能是应用106、麦克风110、扩音器112、储存器等等。操作系统104可以提供应用编程接口(API),以使得应用106能够调用功能,诸如发起、读取、写入、关闭以及以其他方式管理音频流。操作系统104可以透明地执行其他的功能,诸如缓冲、链接音频通路中的组件、与音频设备驱动器交互来控制对于音频硬件102的使用和访问等等。
图2显示利用音频硬件102的音频处理模式120、122、124同时处理的音频流118的细节。一些音频处理模式120可以被实现为在主机计算设备100的CPU上运行的软件模块。应用106能够是在计算设备106上运行的任何软件组件,例如用户启动的应用、后台服务、线程、托管代码环境、虚拟机等等。在图2的示例中的应用106是正在再现声音以便在扩音器112上输出的声源。如下面参考图3所讨论的,应用106也能够是声音接收器(sink);利用音频堆栈108来应付和输出的音频信号数据的受体。
用于计算设备的音频处理系统的领域的技术人员将意识到:形成和管理音频流可以牵涉在图2和3中没有描述的复杂性。例如,用于拆分信号的三通(tee)、用于混合信号的混合器、实用信号处理模块(基于CPU)以及甚至可能多种信号处理模式(例如,基于软件的模式和基于硬件的模式)的实例可以采用各种方式进行组合,以形成音频数据流的复杂图形。不管这样的实现细节如何,操作系统104和/或其音频堆栈108提供数据通路,以使得能够通过音频信号处理硬件(音频硬件102)交换至/自应用106的音频信号数据,以及在一些情况中交换至/自声音生成设备或声音捕获设备(例如扩音器112、麦克风110)的音频信号数据。
为了促进同时多模音频信号处理,音频堆栈108可以执行处理,诸如处理126。例如,当应用106需要音频流来输出利用应用106所再现的声音时,应用106或许经由音频API向操作系统104发出呼叫(call)或请求。当操作系统194或音频堆栈108接收到该请求时,识别用于所请求的音频流的音频类型。能够利用各种各样的手段来查明音频类型。例如,请求应用106能够利用作为请求新的音频流的呼叫的参数的打印信息来标记(tag)音频流。
也可以使用用于分类、识别或确定音频类型的其他手段。例如,应用能够通过在音频数据中或在流本身中嵌入标识符来指定音频类型。音频堆栈108能够参考与请求应用106相关联的识别与该应用相关联的音频的类型的元数据。在另一实施例中,可以参考该应用曾使用的音频(或由该应用在使用的另一流)的最后类型来确定用于新的音频流的音频类型。在还一实施例中,音频堆栈108可以设置所请求的音频流而不知道音频类型、从应用106接收一些音频信号数据、缓冲从该应用提供的音频信号数据以及分析所缓冲的音频数据(声音数据)来确定音频数据中的声音的类型(例如音乐、话音等等)。
返回到处理126,当确定所请求的音频流的音频类型时,音频信号处理模式120、122、124之中适当的音频信号处理模式被选择来处理新的音频流。在一个实施例中,音频堆栈108保持将音频类型与特别的音频信号处理模式120、122、124相关联的关联信息。稍后参考图4来讨论其他的实施例。
无论如何选择音频信号处理模式,音频堆栈108继续将新的音频流与所选择的音频信号处理模式相链接。例如,如果应用106是“App1(应用1)”并且音频信号处理模式120是“电影”模式类型,则利用应用106所生成的音频数据流过该音频流、利用音频信号处理模式120(“电影”)进行处理并且利用扩音器112作为声音发出。
在一个或多个音频流108已经在携带音频数据至一种或多种音频信号处理模式的同时,应用106可以请求还一音频流,从而再次调用处理126。采用与上述相同的方式来建立和配置新的音频流。如果新的音频流采用当前没有在使用的音频信号处理模式,则仍然可以根据其类型来实现所请求的音频流。换句话说,不同的模式可以同时处理音频信号数据。操作系统108和/或音频堆栈104跟踪和区分音频流类型的能力促进利用不同的基于硬件的音频信号处理模式进行的音频流的同时处理。
进一步,对于音频流的类型而言,并不限制音频流的类型或类别;音频流的类型能够对应于音频流的任何特性或特征。例如,流类型能够对应于音频格式特质(trait)。流可能被贴标签或被标记来指示特征,诸如比特率、用于编码音频内容的编解码类型、缓冲模式、缓冲区大小、数据块大小、采样率、通道计数等等。也可以使用与应用或其音频流相关的其他信息,诸如识别与音频内容相对应的内容生产商的信息、指示用于产生音频内容的设备的信息、日期信息等等。
在一个实施例中,可以包括卸载路径126。卸载路径126在被应用请求时允许该应用实质上绕过音频堆栈108的所有信号处理。卸载模式可以不同于原始模式。卸载路径允许应用直接与音频设备交谈(talk),从而绕过操作系统。音频设备可以在硬件中提供模式特定的处理或完全不提供处理(原始)。原始路径是在其路径上没有信号处理的路径。原始路径可以是非卸载(off-offload)(即,利用操作系统来实现)或可以利用硬件作为卸载路径来实现(其中应用直接与音频设备交谈,并且音频设备再现音频而不应用任何模式特定的处理)。通常,在原始路径中存在的唯一处理是强制性的处理。原始处理确保这样的应用,即它再现/捕获的音频数据将不经历利用操作系统或硬件实现的任何非强制性的信号处理。
如上所述,原始音频信号处理模式124能够利用应用来请求,以避免任何音频效果或信号处理并允许相应的音频流作为原始信号来再现(或捕获)。在使用原始模式(或其他模式)来应对(address)可能损坏音频硬件的信号特质时,可以透明地和强制性地应用硬件保护信号处理。卸载路径126或其他的模式能够作为基于软件的模式、即在主机CPU上运行的模式来实现。
也可以包括默认音频信号处理模式122。默认音频信号处理模式122能够实现任何信号处理算法,但是优选地只执行轻量级或基本的信号处理,可以实现默认音频信号处理模式122来针对所使用的特别音频硬件102优化声音。可供选择地,默认音频信号处理模式122能够实现信号处理标准;跨平台提供信号处理基线。无论默认音频信号处理模式122执行的处理如何,具有标明的默认模式的事实允许系统在未发现音频流的类型具有可用的相应模式时具有回退(fallback)模式,如将参考图4所讨论的。
除了卸载路径126之外,一些实施例还可以包括能够利用应用来请求的回送(loopback)路径128。回送路径128允许应用或许采用其在被传送至扩音器112时将具有的形式接收直接后处理(post-process)的音频数据。在其他的实施例中,可以为每一种音频处理模式提供个别回送。回送路径128对于诸如回声消除和基本声音捕获之类的用途能够是有用的。注意:如果音频设备实现多种信号处理模式,则它可能需要也提供回送路径来将混合后的音频返回至请求它的任何应用。
图3显示在应用106正在通过音频堆栈108接收音频数据时的音频堆栈108。图2的讨论同样可应用于图3。在实践中,一个或多个应用106可以经由音频流118来接收和供应(source)音频数据二者。应用106可以具有输入和输出音频流二者。
当多个声音输出应用请求将通过相同的给定的音频信号处理模式的音频流时,音频堆栈108在将其音频流传送至通过给定的音频信号处理模式的信号处理路径之前可以将其音频流一起混合成一个子混合(submix),这允许一个音频管道(pipeline)支持多个应用。类似地,当若干应用正通过相同的模式接收音频时,这些音频流在被处理之前可以被拆分,并随后它们被拆分并被传送至这些应用。
图4显示音频堆栈108的细节。在一些实施例中,音频堆栈108可以运行在内核模式或用户模式或其组合中。提供API140,以允许应用访问音频堆栈108的功能。经由API140所提供的方法或呼叫(调用)可以包括典型的操作系统数据流或文件呼叫(调用),诸如读取、写入、打开、关闭、复制等等。另外,API140可以具有允许应用发现或枚举可用的音频信号处理模式或音频类型的呼叫。可以具有单独的呼叫来指定音频流的类型,其可能在建立流时被呼叫或可能是可呼叫的(callable),以改变流的音频类型。音频类型也可能被指定为打开流(stream-open)呼叫的参数。音频堆栈108可以具有应付前述功能以及上述的其他功能的逻辑或音频路径模块142。这样的枚举也可以提供与音频信号处理模式有关的状态信息,诸如是否正在使用模式、模式正在经历什么负载或者正在处理数据的速率等等。在假定挑选类似音频类型或模式的情况下,这可以允许应用指定具有低负载的类型或模式。
音频路径模块142也可以应付用于将音频类型与音频处理模式相匹配的逻辑。一种实现方式可以使用将音频类型映射至音频模式的表格144。每一种音频类型具有按照优先级排序的相应的音频信号处理模式的列表。当音频堆栈108已确定音频流具有诸如“类型1”之类的特别音频类型时,则音频路径模块142在表格144中查找音频类型并从该列表中选择可用的或可操作的第一模式。如果音频类型是“类型1”,则选择“模式2”,或者如果“模式2”是不可用的,则选择“模式1”。在其中在流特定的模式或是不可用的或不可确定的时候自动选择默认模式的实施例中,可以省略“默认”模式的包含。在一个实施例中,不使用表格144或其他的映射信息,相反地,在音频类型与音频信号处理模式之间没有区别,并且直接地在一对一的基础上使用模式或类型。换句话说,这些流和模式全部具有相同的类别或类型。例如,音频堆栈108可以给每一种音频信号处理模式分配最接近所确定的音频类型,并且应用直接指定模式/类型。
图5显示在其上面可以实现上述实施例的计算设备100的示例。计算设备100可以具有显示器166以及存储设备162和处理器164。这些元素可以采用在计算的领域中众所周知的方式进行协作。另外,输入设备168可以与计算设备100进行集成或与之通信。显示器106可以是也充当输入设备的触敏显示器。计算设备100可以具有任何的形状因素或者可以用于任何类型的包围(encompassing)设备中。例如,触敏控制面板时常用于控制器具、机器人和其他机器。计算设备100可以采用手持式设备诸如智能电话、平板计算机、游戏设备、无头(headless)服务器等等的形式。
上述的实施例和特征能够采用存储在易失性或非易失性计算机或设备可读设备中的信息的形式来实现。这被视为至少包括设备,诸如光储存器(例如光盘只读存储器(CD-ROM))、磁媒体、闪速只读存储器(ROM)或用于存储数字信息的设备。所存储的信息能够采用机器可执行指令(例如,编译的可执行二进制代码)、源代码、字节码或能够用于使能或配置计算设备来执行上述的各种实施例的任何其他信息的形式。这也被视为至少包括:易失性存储器,诸如随机存取存储器(RAM)和/或虚拟存储器,其在完成实施例的程序的运行期间存储信息诸如中央处理单元(CPU)指令;以及非易失性设备,其存储允许程序或可执行文件被加载并被运行的信息。能够在任何类型的包括便携式设备、工作站、服务器、移动无线设备等等的计算设备上执行这些实施例和特征。
上述的实施例和特征能够采用存储在易失性或非易失性计算机或设备可读设备中的信息的形式来实现。这被视为至少包括设备,诸如光储存器(例如光盘只读存储器(CD-ROM))、磁媒体、闪速只读存储器(ROM)或用于在物理物质中存储数字信息的任何其他设备。所存储的信息能够采用机器可执行指令(例如,编译的可执行二进制代码)、源代码、字节码或能够用于使能或配置计算设备来执行上述的各种实施例的任何其他信息的形式。这也被视为至少包括:易失性存储器,诸如随机存取存储器(RAM)和/或虚拟存储器,其在完成实施例的程序的运行期间存储信息诸如中央处理单元(CPU)指令;以及非易失性媒体,其存储允许程序或可执行文件被加载并被运行的信息。能够在任何类型的包括便携式设备、工作站、服务器、移动无线设备等等的计算设备上执行这些实施例和特征。