音频处理系统的制作方法

文档序号:2821471阅读:226来源:国知局
专利名称:音频处理系统的制作方法
技术领域
本发明涉及音频处理系统、操作音频处理系统的方法,以及带有在音频处理系统中执行的软件代码的软件程序产品。
背景技术
现有技术中的音频处理系统存在多种形式,例如用于重放MIDI文件或者计算机游戏。
音频处理本身对时间要求非常严格。音频子系统一般产生一批音频样本,同时播放前一批产生的样本。如果新的一批音频的处理或生成所花的时间多于播放一批所花的时间,则音频播放中就会听到间隙,称作“漏失”。为了避免这种间隙,可以在缓冲器中将产生的多批样本排队,等候播放。
除此之外,交互式音频应用还要求音频播放中交互事件和响应之间的延时较小。这原则上可以通过短的音频帧来实现。但是,为了避免间隙而使用大的缓冲区,会导致可能的用户输入和所得到的音频输出之间的延时增加,因为用户输入只会影响将要产生的这批样本。
此外,交互事件可以发生在应用的生命周期中的任何时间,并且经常需要额外的处理。在交互处理过程中,新的一批输出样本的生成会减慢。因此,要发现可能的最小缓冲区使延时较小,而不会在使用过程中产生听得到的间隙,这相当不易。
用户输入也导致了总处理负荷随时间的分布非常不均匀。如果要处理变化的负荷,负责处理的数字信号处理器(DSP)的软件设计会相当复杂。
在一些音频处理软件系统中,至少一部分处理不管其性质如何,都被分割成遵从统一接口的单元。这些单元也称为部件。这样,一个部件是软件系统框架的构造模块,它实现了音频处理特性,例如混频器、采样率转换器或者回响效应。部件通常被插入系统而不需要重新编译,因此又被称为“插件”。这种系统的两个例子是Steinberg的VST(虚拟播音室技术)API(应用编程接口),以及Linux音频团队的LADSPA(Linux音频开发人员的简单插件API)。
Steinberg的VST插件架构使得能够在数字音频系统,例如VST混频器中集成虚拟效果处理器和乐器。这样的音频系统可以运行在PC或者Macintosh计算机上。
LADSPA是开放Linux行为,它提供了与Linux音频合成和录音软件的插件一起使用音频处理器的一种标准方式。
在这两种方案中,交互的控制计算和实时信号处理计算都在同一进程中完成。这意味着音频处理的总负荷随着用户交互而变化。
Turku大学信息技术系的Kai Vehmanen在2002年12月的计算机科学硕士论文“Design of Low Latency Audio Software for GeneralPurpose Operating Systems”中,提出了将音频处理码分离成实时和非实时部分,采用实时安全机制来设计低时延音频应用。该论文还进一步提出了对用户接口和音频码采用不同的执行环境,例如多线程。线程是进程的一种特殊情况。每个线程有自己的执行环境,可以像其它进程一样独立地调度,但是一个逻辑组的线程共享内存空间。

发明内容
本发明的目的是进一步改进音频处理系统中的处理。
本发明提出了一种音频处理系统,它包括至少一个音频处理部件,音频处理部件具有处理音频数据的一组实时功能,以及处理控制信号的一组控制功能。所提出的音频处理系统还包括至少一个处理器,它提供第一进程,用于利用基本恒定的处理能力执行至少一个音频处理部件的实时功能。该处理器还提供了至少一个其它进程,用于在需要时,执行至少一个音频处理部件的控制功能,而不影响第一进程所使用的处理能力。
此外,提出了一种操作音频处理系统的方法,该音频处理系统包括至少一个音频处理部件,音频处理部件具有处理音频数据的一组实时功能,以及处理控制信号的一组控制功能。本发明提出的方法包括利用第一进程,利用基本恒定的处理能力执行至少一个音频处理部件的实时功能。本发明提出的方法还包括利用至少一个其它进程,在需要时执行至少一个音频处理部件的控制功能,而不影响第一进程所使用的处理能力。需要注意,虽然实时功能和控制功能可以基本并行执行,在某些情况下,控制功能也可以至少部分提前执行。
最后,本发明提出了一种软件程序产品,它包括用于音频处理部件的软件代码。该软件代码定义了在处理器的进程执行软件代码时,处理音频数据的实时功能,它还定义了在处理器的进程执行软件代码时,处理控制信号的控制功能。实时功能规定由第一进程来执行,控制功能规定由至少一个处理器的至少一个其它进程来执行。此外,在第一进程执行实时功能时,实时功能确保每一批音频样本的基本恒定量的处理能力从该至少一个处理器获取。
本发明基于实时功能应当由恒定处理能力提供的想法。因此,提出了一个专用进程,用于以基本恒定的处理能力来执行实时功能。控制功能由一个或多个其它进程所能用的处理能力来专门执行。实时数据处理和控制信号处理的划分更具体地针对每个部件分别实现。一般而言,每个部件对应于一种算法。
本发明的优点在于,不管交互量是多少,系统实时部分的处理负荷保持恒定。这对音频处理负荷管理而言是个很大的改进,因为传统系统必须针对最坏情况的估计做出准备,或者承担“漏失”的风险。最坏的情况发生得相对较少。如果传统系统设计成能够处理最坏情况,则在大部分时间中,所使用的处理器的大多数潜能得不到应用。
此外,本发明的优点在于,提出了一种框架,其中实时部分和控制部分的划分是属于各个部件内部的。这使得在需要时,改变这两部分之间的划分和运行在这两部分之间的数据是很容易的,而分离的所有优势仍然存在。
此外,采用稳定且固定的处理负荷数据,可以简化第一进程的软件设计。
因为实时功能以恒定的处理负荷进行处理,所以生成的音频样本批次的速率也基本恒定。这还有助于确定存储用于呈现的音频样本批次的缓冲器的大小。
本发明的优选实施例可以通过所附权利要求书来了解。
如果音频处理系统包括若干音频处理部件,最好采用音频处理引擎来依次行这些部件。
所有控制事件最好带有时间戳。实时进程可以按照时间戳来利用事件。如果某个应用事先知道交互或控制序列,它可以发送控制事件给最适合的实时进程。例如,可以解析MIDI文件,析取所有的控制事件,给它们打上时间戳,甚至在实际开始播放MIDI文件之前就将它们发送到实时进程。
本发明所提出的音频处理系统可以是单个的处理器系统或者多处理器系统。
在单个处理器系统中,软件可以以多个执行线程的方式运行。控制功能在一个或多个线程中执行,实时功能在不同的线程中执行。但实时功能和控制功能也可以在不同于执行线程的其他进程中执行。
在这种单个进程系统中,平台的操作系统应当能够确保实时进程有足够的资源,只有在实时进程不需要处理器时才运行控制计算。
如果本发明提出的系统是多处理器系统,则实时功能在专用处理器中执行,而控制功能使用至少一个其它处理器。这种多处理器系统尤其具有优势,因为实时功能受益于专用处理器,负荷平衡特别容易实现。
本发明可以应用于任何形式的音频数据处理,例如线性脉冲编码调制(PCM)域音频数据,频域音频数据,离散余弦变换(DCT)域音频数据,或者以任何其他形式编码的音频数据。


通过下面结合附图的详细描述,将可以了解到本发明的其他目的和特性。
图1是按照本发明的音频处理系统的示意框图;图2是说明图1系统实现的示意框图;图3的流程图说明了图1系统中的处理;以及图4的示意框图说明了图1音频处理系统的一种可能的变化例。
具体实施例方式
图1是按照本发明的音频处理系统1的一种实施例的示意框图。
音频处理系统1包括多个音频处理部件11、12、13。每个部件11、12、13都实现一种不同的音频处理特性,例如混频器、采样率转换器或者回响效应。对各个部件11、12、13所实现的音频处理特性而言,部件11、12、13封装了包含若干基本信号处理模块——例如滤波器的算法。
从软件设计角度来看,部件11、12、13利用环境中单个逻辑构造模块来实现,例如利用C++类。部件11、12、13可以是静态构造的,也就是在编译时定义的,或者它们可以是动态可装入的插件,这些插件可以连接到已经编译和链接的软件,也就是可执行的软件。
部件11、12、13所实现的特性基于各种方法或功能。每个部件中的功能被分割成两组,也就是实时功能14和控制功能15,如部件11中的一个所示。实时功能14通过混频、滤波进行音频数据处理,或者处理输入音频样本。控制功能15例如基于用户输入,控制实时功能14。
每个部件11、12、13都连接到处理器16,并在处理器16中一方面连接到DSP线程20,另一方面连接到控制线程30。
部件11、12、13的实时功能14在处理器16中由DSP线程20用恒定的处理负荷进行处理。部件11、12、13的实时功能14因而被写入,使得对于每批音频样本都占用恒定数量的处理能力。DSP线程20的设计因为有确保恒定的处理负荷而得到简化。
部件11、12、13的控制功能15在处理器16中由控制线程30进行处理。控制功能只有在需要时才执行,也就是说在存在交互或者其他原因而需要改变参数时才执行。控制线程30根据用户交互和应用控制,执行变化的量的处理,而不影响实时功能14的处理负荷。
图2的分层结构框图详细说明了图1的处理器16中的处理。
该结构包括API层40、对应于图1控制线程30的控制层30以及对应于图1的DSP线程20的DSP线程20。
控制层30为部件控制线程部分31提供了输入端口32、输出端口33以及一个或多个事件队列34、35。部件控制线程部分31与图1部件11中的一个相关联。类似的部件控制线程部分(未示出)由每个部件12、13的控制层提供。DSP线程20包括部件DSP线程部分21以及作为音频处理引擎的DSP引擎22。
部件DSP线程部分21用于以恒定处理能力运行部件11的实时功能14。
同时,通过API层40向控制层30提供用户交互或其他控制事件得到的信号,确切地说,是通过输入端口32提供给部件控制线程部分31。在用户交互或其他控制事件发生时,在部件控制线程部分31中执行部件11的控制功能15,并生成事件,事件包括实时处理的新参数。所有的事件都准确地进行时间戳采样,并插入到第一事件队列34中。随后由队列将这些事件提供给部件11的部件DSP线程部分21,用于给实时处理提供新参数。也可以给时间戳一个将来值,从而将事件的影响推后,对交互的影响也随之后延到以后。
部件DSP线程部分21执行的实时功能14在时间戳指示的时间点上使用事件提供的参数。如果事件的时间戳发生在音频帧长度的中间,该帧可以在部件DSP线程部分21中分割成两个或多个部分。第一部分用旧参数处理,第二部分用新参数处理。帧分割仅对各个交互影响的那些部件11、12、13实行,其他部件不受影响。
部件控制线程部分31中的处理可能不仅导致为部件DSP线程部分21中的实时处理定义参数的事件,而且导致对用户反馈的事件。在这种情况下,相应的事件被输入第二事件队列35。同样,部件DSP线程部分35中的实时处理可能导致例如需要向用户提交信息的事件。这些事件也被输入第二事件队列35。第二事件队列35中的事件通过部件控制线程部分31的输出端口33以及API层40输出到用户接口(未示出)。
需要注意,给出的实施例也可以利用例如单个事件队列来实现,也就是利用输入事件队列34或者输出事件队列35来实现。另一方面,也可以为输入和/或输出提供多个事件队列。
DSP引擎22将部件11、12、13连接在一起,形成一个处理网络。
在该网络中,DSP引擎22导致部件11、12、13由相关联的部件控制线程部分和相关联的部件DSP线程部分依次运行,其次序由音频处理功能需求定义。在初始音频数据由所有所需部件11、12、13处理之后,最后一个部件的输出可以一批批地存储到缓冲器,以进行呈现。还可以有以分层方式包含若干单独部件的特殊部件。这些部件称为子引擎。
图1和图2中的音频处理系统的操作在图3的流程图中总结。
当DSP引擎22选择了特定部件11、12、13来执行时,音频数据在相应的部件DSP线程部分21中用恒定的处理能力处理。同时,当需要时,所有的控制信号在相应的部件控制线程部分31中处理。基于控制信号产生的事件都打上了时间戳,并进行排队。队列34中的事件按照其输入次序提供给部件DSP线程部分21。部件DSP线程部分21从事件的各个时间戳所指示的时间点开始,利用事件中的参数进一步处理音频数据。处理过的音频数据提供给后续部件12进行处理,后续部件12由DSP引擎22选出用于执行。如果当前部件包含了部件11、12、13的最后一个,则将处理过的音频数据以音频样本批次的形式提供给缓冲器,呈现给用户。
对所提出的方法的一个实际应用的例子是3D音频计算机游戏。当计算机游戏显示的一个字符静止时,控制线程20不进行更多的3D计算。当字符快速移动时,控制线程20计算参数转换,从3D坐标转换成3D音频呈现算法接受的、在DSP线程20中运行的形式。在这两种情况下,DSP线程20中执行的3D计算量相同。
当图1到图3给出的音频处理系统1是采用若干线程的单个处理器系统时,处理也可以由单个处理器系统的其他独立进程来执行。
此外,该处理最好在多处理器系统中以一个或多个进程的形式执行。图3给出了这样一种多处理器系统5。系统5也包括了多个音频处理部件51、52、53,基本上对应于图1的部件11、12、13。但是图5中的每个部件51、52、53一方面连接到实时处理器56,另一方面连接到控制处理器57。实时处理器56是运行部件51、52、53的实时功能54的专用处理器,类似于上述DSP线程20,而控制处理器57采用一个或多个进程运行部件51、52、53的控制功能55,类似于上述控制线程30。
需要理解,所描述的实施例仅包括了本发明多种可能的实施例中的一种。
权利要求
1.一种音频处理系统(1;5),包括-至少一个音频处理部件(11、12、13;51、52、53),所述音频处理部件具有处理音频数据的一组实时功能(14),以及处理控制信号的一组控制功能(15);以及-至少一个处理器(16;56、57),它提供第一进程(20),用于利用基本恒定的处理能力执行所述至少一个音频处理部件(11、12、13;51、52、53)的实时功能(14),以及至少一个其它进程(30),用于在需要时,执行所述至少一个音频处理部件(11、12、13;51、52、53)的控制功能(15),而不影响所述第一进程(20)所使用的处理能力。
2.按照权利要求1的音频处理系统(1;5),其中所述至少一个音频处理部件(11、12、13;51、52、53)包括多个音频处理部件,所述音频处理系统(1;5)还包括音频处理引擎(22),用于随后选择所述音频处理部件(11、12、13;51、52、53)中的一个,所述至少一个处理器(16;56、57)在所述第一进程(20)的专用部分(21)中,执行所述分别选出的音频处理部件(11、12、13;51、52、53)的实时功能(14),以及在所述至少一个其它进程(30)的专用部分(31)中,执行所述分别选出的音频处理部件(11、12、13;51、52、53)的控制功能(15)。
3.按照权利要求1或2的音频处理系统(1;5),其中所述控制功能(15)被设计为用于当所述控制功能(15)在所述至少一个其它进程(30)中执行时,根据接收的控制信号产生事件,并且对所述事件打上时间戳,其中所述至少一个其它进程(30)被设计为用于向所述第一进程(20)提供所述事件,并且其中所述实时功能(14)被设计为用于当所述实时功能(14)在所述第一进程(20)中执行时,在所述时间戳所定义的时间处利用所述事件。
4.按照前述权利要求之一的音频处理系统(1),其中所述至少一个处理器是提供所述第一进程(20)和所述至少一个其它进程(30)的单个处理器(16)。
5.按照权利要求1到3之一的音频处理系统(5),其中所述至少一个处理器包括第一处理器(56)和至少一个第二处理器(57),所述第一处理器(56)提供所述第一进程,所述第二处理器(57)提供所述至少一个其它进程中的至少一个。
6.按照前述权利要求之一的音频处理系统(1;5),其中所述第一进程(20)和所述至少一个其它进程(30)是执行线程。
7.一种操作音频处理系统(1;5)的方法,该音频处理系统包括至少一个音频处理部件(11、12、13;51、52、53),所述音频处理部件具有处理音频数据的一组实时功能(14),以及处理控制信号的一组控制功能(15),所述方法包括以下步骤-通过第一进程(20),利用基本恒定的处理能力执行所述至少一个音频处理部件(11、12、13;51、52、53)的所述实时功能(14);以及-通过至少一个其它进程(30),在需要时执行所述至少一个音频处理部件(11、12、13;51、52、53)的所述控制功能(15),而不影响所述第一进程(20)所使用的所述处理能力。
8.按照权利要求7的方法,其中所述至少一个音频处理部件(11、12、13;51、52、53)包括多个音频处理部件,所述方法还包括随后选择所述音频处理部件(11、12、13;51、52、53)中的一个,在所述第一进程(20)的专用部分(21)中,执行所述分别选出的音频处理部件(11、12、13;51、52、53)的所述实时功能(14),以及在所述至少一个其它进程(30)的专用部分(31)中,执行所述分别选出的音频处理部件(11、12、13;51、52、53)的所述控制功能(15)。
9.按照权利要求7或8的方法,其中在所述至少一个其它进程(30)中执行所述控制功能(15)包括,根据接收的控制信号产生事件,对所述事件打上时间戳,并且向所述第一进程(20)提供所述事件,并且其中在所述第一进程(20)中执行所述实时功能(14)包括,在根据所述时间戳选定的时间处利用所述事件。
10.一种软件程序产品,包括用于音频处理部件(11、12、13;51、52、53)的软件代码,该软件代码定义了当处理器的进程执行所述软件代码时,用于处理音频数据的实时功能(14;54),并定义了当处理器的进程执行所述软件代码时,用于处理控制信号的控制功能(15;55),所述实时功能(14;54)规定由第一进程(21)来执行,所述控制功能(15;55)规定由至少一个处理器(16;56、57)的至少一个其它进程(31)来执行,在所述第一进程(21)执行所述实时功能(14;54)时,所述实时功能(14;54)确保基本恒定量的处理能力取自所述至少一个处理器(16;56、57)。
全文摘要
本发明涉及一种音频处理系统1。为了改进音频处理,该系统包括至少一个音频处理部件11、12、13,音频处理部件具有处理音频数据的一组实时功能14,以及处理控制信号的一组控制功能15。该系统还包括至少一个处理器16,它提供第一进程20,用于利用基本恒定的处理能力执行至少一个音频处理部件11、12、13的实时功能14,以及至少一个其它进程30,用于在需要时,执行至少一个音频处理部件11、12、13的控制功能15,而不影响第一进程20所使用的处理能力。本发明同样涉及相应的方法和相应的软件程序产品。
文档编号G10H1/00GK1732439SQ200380107890
公开日2006年2月8日 申请日期2003年10月8日 优先权日2003年10月8日
发明者雅尔莫·伊帕卡, 萨穆·卡阿雅斯 申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1