CN1532696B - 用于音频处理对象访问违例时进行恢复的方法、设备和系统 - Google Patents

用于音频处理对象访问违例时进行恢复的方法、设备和系统 Download PDF

Info

Publication number
CN1532696B
CN1532696B CN2004100317696A CN200410031769A CN1532696B CN 1532696 B CN1532696 B CN 1532696B CN 2004100317696 A CN2004100317696 A CN 2004100317696A CN 200410031769 A CN200410031769 A CN 200410031769A CN 1532696 B CN1532696 B CN 1532696B
Authority
CN
China
Prior art keywords
audio
data stream
overall
apo
engine
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.)
Expired - Lifetime
Application number
CN2004100317696A
Other languages
English (en)
Other versions
CN1532696A (zh
Inventor
S·E·斯温森
D·W·弗伦尼肯
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1532696A publication Critical patent/CN1532696A/zh
Application granted granted Critical
Publication of CN1532696B publication Critical patent/CN1532696B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Electric Clocks (AREA)
  • Examining Or Testing Airtightness (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

将操作系统在逻辑上分成用于内核的部分和用于具有逻辑上独立的子部分的音频子系统的部分。音频应用通过执行音频子系统产生第一音频数据流。用于处理第一音频数据流的过程的环境被保存在第一子部分中。过程对第一音频数据流的处理发生在第二子部分中。当过程产生访问违例时,通过在音频子系统中恢复来自第一子部分的保存的环境来恢复过程。

Description

用于音频处理对象访问违例时进行恢复的方法、设备和系统
技术领域
本发明一般涉及流音频处理,尤其涉及流音频处理期间从音频处理对象访问违例中恢复。
背景技术
计算机系统,如个人计算机(PC),正越来越多地被用于流音频数据的记录和回放。PC可以被用作为同时运行数个音频、视频和多媒体应用的一种媒体服务器,这些应用都使用PC的操作系统(OS)。作为将PC用作媒体服务器的例子,考虑以下同时有多个用户的情形。使用PC上DVD播放器的第一个媒体播放器应用(MP)回放一张数字视频盘。为了进行网络电话,为实时通讯应用(RTC)中的因特网语音协议使用麦克风,在网络电话中,各个计算机系统的用户与其他的用户在分组交换网络上进行通话,类似于电话用户与其它电话用户在电路交换网络上进行通话。用户与PC互动的过程中,OS产生系统声响。当经由电缆或卫星TV广播系统接收到流多媒体时,视频点播(VOD)应用被执行。通过执行使用PC的CD-ROM的第二媒体播放器应用回放音乐盘(如CD)。其他用户在PC上玩视频游戏,其中相应的游戏应用根据用户与游戏应用的互动产生音频数据流。在可以在PC上执行一个或多个全局音效应用(GFX)。GFX的例子包括混响效应应用、音频畸变应用、通过对将要提供给一个或多个扬声器的流音频数据所进行的数字信号处理(DSP)所执行的扬声器补偿应用、多频带音频均衡器应用(提供一个用户接口,藉以对音频设备(如,声卡)其作用使得PC用户能够以各种预置形式(如,音乐厅、摇滚、古典,等)调节来自音频设备的音频输出)以及对输出给一个或多个音频驱动器所驱动的音频设备的一个或多个音频数据流进行DSP处理的其他GFX。
上面所例举的任何应用以及其他的音频可视应用程序可能编写得很糟糕,以至于执行失败和应用中断。这样的应用故障会造成PC的OS的一系列故障,也被称为计算机崩溃,也就是PC自己停止工作。计算机崩溃意味着编写应用程序的代码中有非常严重的软件错误(bug)。在要求OS输出到音频设备的音频应用情况中,错误会导致访问违例。OS的内核(调度服务)的存储器和被用来处理OS中音频的存储器应该是相互完全隔离的。当音频应用访问非常驻的存储器时,会发生访问违例(如,存储器访问非法或不被许可)。访问违例通常发生在音频应用具有运行在内核模式下的音频设备驱动器的时候。若音频应用在对OS的内核空间或音频设备驱动器访问时出现访问违例,该访问违例会造成计算机崩溃。
只要OS的内核保持完整,崩溃的音频应用将不会造成内核的不稳定。而是仅仅该音频应用停止工作并必须被重启。但是,对内核的访问违例会造成该内核变得不稳定,以至于产生不能恢复的致命错误。在微软公司的
Figure GSB00000008415000021
操作系统环境中,通过显示在蓝色屏幕上的一个诊断结果来将计算机崩溃通知给PC用户。因此,按照惯例使用死机蓝屏(Blue Screen of Death,BSOD)这一术语。当用户遇到BSOD,它必须重新启动或引导PC来恢复。
当多个执行音频和音频可视应用中的仅仅一个具有软件错误时,对将PC用作媒体服务器是特别有害的。该软件错误会对PC所提供的音频造成不同程度的破坏。在最轻程度的破坏中,仅仅含有错误的应用所产生的音频数据流受到影响。而在更大程度的破坏中,所有音频设备都受到影响并可能停止工作,即到所有音频设备的总体音频提供都停止。在更严重的情况下,一个音频应用中的软件错误将造成计算机崩溃,因此要求PC上的所有活动都停止直到OS被重新装载——这可能需要花费数分钟。
如上所述,提供这样一个OS将是本领域中的一个优点,这个OS为任何种类的、在计算机系统上执行的音频应用的音频请求服务,同时隔离音频应用使得其在执行期间的故障既不引起全局音频再现停止也不引起计算机崩溃。
发明内容
在一个实现中,操作系统的系统音频服务保存音频应用的环境,其中即使音频应用的处理故障,也能恢复这个处理。在另一个实现中,计算机系统具有一个处理器用于执行音频应用以产生第一音频数据流。处理器执行一操作系统,它在逻辑上分成用于内核的部分和用于音频子系统的部分。音频子系统分成逻辑上独立的子部分。用于与音频子系统一起处理第一音频数据流的过程(例如,音频处理对象),具有保存在第一子部分中的环境,它是在执行第二子部分中的过程之前被保存的。当过程产生访问违例时,通过从第一子部分恢复其环境来恢复过程。为过程保存的环境包括地址和数据结构信息,它们足以通过恢复在音频子系统中所保存的环境来恢复过程。当处理器执行一个音频应用以产生要被输出到不同于第一音频设备的第二音频设备的第二音频数据流时(其中在第一音频设备输出第一音频数据流),过程的访问违例和恢复将都不影响由第二音频设备要输出的音频。
根据本发明的第一个方面,提供了一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的方法,包括:接收一请求,请求一操作系统为要在一音频数据流上完成的全局音效(GFX)执行一音频处理对象(APO),所述音频数据流要在由音频设备驱动程序驱动的一音频设备上输出,其中所述操作系统包括一音频子系统,所述音频子系统具有一输入缓冲器、一环形缓冲器以及在存储器中包括一服务地址空间和一全局音频引擎的逻辑上独立的地址空间;在服务地址空间中,保存用于输入缓冲器、全局音频引擎和环形缓冲器的服务数据;运行全局音频引擎以通过APO在输入缓冲器中的音频数据流上完成数字信号处理,以在环形缓冲器中形成数字信号处理(DSP)音频数据流;将在环形缓冲器中的DSP音频数据流输入至音频设备驱动程序驱动的音频设备;以及在APO终止或者APO访问违例时:用服务地址空间中分别保存的服务数据来恢复输入缓冲器、全局音频引擎和环形缓冲器的每一个;以及任选地在全局音频引擎中再继续APO的执行。
根据本发明的第二个方面,提供了一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的方法包括:从一音频应用接收一请求,请求操作系统为要在音频数据流上完成的全局音效(GFX)执行一音频处理对象(APO),所述音频数据流要在由音频设备驱动程序驱动的音频设备上输出,其中:所述操作系统在存储器中具有独立的部分,包括:一内核;以及一音频子系统,具有一输入缓冲器和一环形缓冲器;在存储器中音频子系统的部分具有独立的子部分,包括:一服务地址空间;以及一全局音频引擎,用于执行APO;在服务地址空间中保存与输入缓冲器、环形缓冲器和全局音频引擎相关联的地址和数据结构;运行全局音频引擎以:用APO在输入缓冲器中的音频数据流上完成数字信号处理,以形成数字信号处理(DSP)音频数据流;以及输出DSP音频数据流至环形缓冲器;将在环形缓冲器中的DSP音频数据流输入至音频设备驱动程序驱动的音频设备,用于再现DSP音频数据流;以及在APO终止或者APO访问违例时:用服务地址空间中为输入缓冲器保存的地址和数据结构恢复输入缓冲器;用服务地址空间中为全局音频引擎保存的地址和数据结构恢复全局音频引擎;用服务地址空间中为环形缓冲器保存的地址和数据结构恢复环形缓冲器;以及任选地在全局音频引擎中再继续APO的执行。
根据本发明的第三个方面,提供了一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的设备,包括:用于接收一请求的装置,请求一操作系统为要在一音频数据流上完成的全局音效(GFX)执行一音频处理对象(APO),所述音频数据流要在由音频设备驱动程序驱动的一音频设备上输出,其中所述操作系统包括一音频子系统,所述音频子系统具有一输入缓冲器、一环形缓冲器以及在存储器中包括一服务地址空间和一全局音频引擎的逻辑上独立的地址空间;用于在服务地址空间中保存用于输入缓冲器、全局音频引擎和环形缓冲器的服务数据的装置;用于运行全局音频引擎以通过APO在输入缓冲器中的音频数据流上完成数字信号处理,以在环形缓冲器中形成数字信号处理(DSP)音频数据流的装置;用于将在环形缓冲器中的DSP音频数据流输入至音频设备驱动程序驱动的音频设备的装置;以及在APO终止或者APO访问违例时:用于用服务地址空间中分别保存的服务数据来恢复输入缓冲器、全局音频引擎和环形缓冲器的每一个的装置;以及用于任选地在全局音频引擎中再继续APO的执行的装置。
根据本发明的第四个方面,提供了一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的计算机系统,包括:用于处理来自一个音频应用要生成由操作系统执行的第一音频数据流的请求的装置,所述操作系统逻辑上被分成用于内核的部分和用于具有逻辑上独立的子部分的音频子系统的部分;用于在第一子部分中保存用于处理所述第一音频数据流的过程的服务数据的装置;以及用于在第二子部分中通过该过程来处理所述第一音频数据流的装置,其中当当所述过程使得访问违例时,通过在音频子系统中恢复第一子部分中保存的服务数据来恢复该过程。
根据本发明的第五个方面,提供了一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的计算机系统,包括:一处理器,用于执行一操作系统和多个音频应用;多个多媒体阅读设备,用于与多个音频应用一起运行以分别产生用于传送至操作系统的音频数据;由各音频设备驱动程序驱动的多个音频设备,用于再现被传送到操作系统的音频数据;如第三方面所述的设备,以对缺陷的音频应用进行隔离和恢复,以便使得其继续生成音频。
根据本发明的第六个方面,提供了一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的方法,包括:处理来自一音频应用的请求,以通过执行一操作系统产生第一音频数据流,所述操作系统逻辑上被分成用于内核的部分和用于具有逻辑上独立的子部分的音频子系统的部分;在第一子部分中保存用于处理第一音频数据流的过程的服务数据;以及在第二子部分中用过程处理第一音频数据流,其中,当过程产生访问违例,通过在音频子系统中恢复来自所述第一子部分的保存的服务数据来恢复过程。
附图说明
参考附图提供详细的说明,其中遍及本揭示和附图,相同的数字用于引用相同的组件和部件。100系列的数字指最初出现于图1中的部件,200系列的数字指最初出现于图2中的部件,300系列的数字指最初出现于图3中的部件,以此类推。
图1示出在一环境中的示例性计算机系统,在该环境中这个计算机系统用作为一个媒体服务器,用于为在多个位置中的多个用户提供音频服务。
图2示出一实现,在其中一个音频应用正在一个计算机系统中执行,这个计算机系统具有与音频设备的驱动程序通信的操作系统。
图3示出例示一个过程的流程图,在这个过程中,操作系统的音频子系统为用于执行音频处理对象(APO)的请求服务,以在通过由音频驱动程序驱动的音频设备再现的音频数据流上产生全局效果(GFX),其中在由GFX APO引起的访问违例之后,使用预先保存的环境恢复音频子系统的各种环境。
图4示出例示一个过程的流程图,在这个过程中,操作系统的音频子系统为执行音频处理对象(APO)的请求服务,以在通过由音频驱动程序驱动的音频设备再现的音频数据流上产生局部音效(LFX),其中在由LFX APO引起的访问违例之后,使用预先保存的环境恢复音频子系统的各种环境。
图5例示一计算机环境的例子,在这个环境内,在此所述的计算机系统、软件应用、方法和系统能够或者完全地或者部分地实现。
具体实施方式
多个音频设备和用于驱动前者的应用驱动程序能与正被用作媒体服务器的计算机系统通信。像这样,计算机系统能同时发送音频至多于一个音频设备。计算机系统的操作系统(OS)具有一个内核和一个内置的音频子系统两者,音频子系统只是操作系统的许多子系统中的一个子系统。一个或多个应用向音频子系统进行一个请求以执行音频处理对象(Audio Processing Object)(APO),该音频处理对象将在正在被导向音频设备之一的所有音频上具有全局效果(global effect)(GFX)。作为例子,GFX APO可以是混响(reverberation)效果、畸变效果、扬声器补偿效果或者数字信号处理(DSP)效果。
音频子系统将OS的内核与音频设备驱动程序隔离以及将音频设备驱动程序彼此隔离。这个隔离,即沙箱(sandboxing)技术,允许在一个音频应用故障(诸如通过产生访问违例)时进行恢复。隔离确保只有来自故障应用的音频将停止,而不是来自正在执行的所有应用的音频的全部。隔离还确保访问违例将不引起计算机系统崩溃,这避免引导(例如引导程序)操作。故障应用能被重新启动并继续产生音频。用户只经历由于应用故障的瞬间音频损失。由计算机系统的用户感知的音频损失限于故障应用的音频,并且将按照缺少的声音的时间被改变。
在一个实现中,两个用户能使用一个个人计算机(PC)作为媒体服务器,其中第一用户在PC的DVD播放器上播放在一DVD上的电影,并且来自电影的声音由第一声卡进行处理用于在第一组扬声器上再现。第二用户使用PC的CD阅读器播放在激光唱片(CD)上的歌曲。关于第二用户,这个播放要被再现到与第二声卡通信的第二组扬声器,第二声卡与PC的主板通信。第二声卡是由一个音频设备驱动程序驱动的。歌曲的播放通过执行PC上的媒体播放机应用来进行。媒体播放机应用在由歌曲的播放产生的音频数据流上调用GFX APO。如果GFX APO具有使其在执行期间出故障的软件错误,诸如通过产生访问违例,第二用户将经历,例如,在从这个故障中恢复期间的五(5)秒声音损失。在恢复期间,计算机将不需要被重新启动,并且第一用户将不经历在播放DVD上的电影中的任何声音的损失。重新载入GFX APO并且音频子系统将音频带回播放歌曲所脱落的地方。重新载入的GFX APO继续执行,使得处理要被再现到与第二声卡一起的第二组扬声器的音频数据流。如果任何其它设备正在使用PC再现音频,则访问违例和恢复都不会损失那个音频。
图1示出环境100,在其中PC 124正被用作媒体服务器。在图1中显示了很多人,每个人正在收听从一个或多个扬声器106再现的音频。PC 124在A-V部分122中具有便携式媒体阅读器,诸如数字视频盘(DVD)阅读器和激光唱片(CD)阅读器,用于为了正在使用PC 124作为媒体服务器的人播放包括音频的多媒体。PC 124正在执行多个多媒体应用以播放正在从A-V部分122中的便携式媒体阅读器读取的便携式媒体。音频数据被传送至输入部分120,输入部分120与操作系统(O/S)114通信。一个这样的多媒体应用可能是
Figure GSB00000008415000071
Media Player(媒体播放器)软件,由美国,华盛顿州(Washington),雷蒙德(Redmond)的Microsoft公司提供的。
PC 124的O/S 114具有一个输出部分112,它与各种音频设备102(1-N)通信,通过它们相应的驱动程序104(1-N)。作为例子,音频设备102可以是一个双声道声卡,一对通用串行总线(USB)扬声器,一个网络扬声器(TCP/IP扬声器),或者能够容纳一个或多个声道输出的其它设备等。例如,一个音频设备102可以是一个声卡,它是被安装在PC 124的主板上的扩展板,使PC能够通过将数字数据转变成模拟声音来再现声音至扬声器106之一。音频设备102能被用于再现(播放)或捕捉(记录)音频数据。例如,音频设备102能被用于从连接至PC 124的话筒106(k-1)记录声音输入,并且能被用于处理存储在磁盘上的声音。一个人被示为在聆听一个或多个扬声器106(k)的同时向话筒106(k-1)讲话。通过O/S 114的操作再现和捕捉音频。在一个网络电话环境中能与扬声器106(k)一起使用话筒106(k-1),一个人向话筒106(k-1)说话以便通过网络向另一个PC的用户讲话,其中每个PC正在执行实时通信应用(RTC)。O/S 114包括逻辑上独立的部分,它们是音频子系统116和内核118。内核118是用于操作系统114的调度服务。音频组件116能包括各种软件组件,如下面相对于图2所述。
在图2中看到图1的O/S 114的实现,其中环境200使声音能够由音频设备再现,音频设备是由音频设备驱动程序214驱动的。在图2中的宽黑线是想要表示O/S 114具有两个(2)由线220定义的逻辑上独立部分,以及表示音频子系统116具有三个(3)由线220-224定义的逻辑上独立子部分。O/S 114的两个逻辑上独立的部分是由线220分开的内核118和音频子系统116。每个部分在用户模式中具有它自己的地址空间,并且它完全与其它部分和与正在运行的任何其它应用隔离。同样,每个子部分在用户模式中具有它自己的地址空间,并且它完全与其它部分和与正在运行的任何其它应用隔离。所有三个(3)子部分在用户模式中都位于内核118的顶上,因此如果任何一个子部分崩溃,则PC 124在没有致命错误的情况下继续运行。用术语‘环境’,如在此使用的,是想要表示在存储器中与一个过程相关联的地址空间和与那个过程相关联的数据结构,其中操作系统需要该数据结构用于适当地执行这个过程。
环境200具有带箭头的实线,它们反映控制音频子系统116的指令的流动。在环境200中带箭头的虚线表示音频数据流的流动。在音频子系统116中的三个(3)逻辑上独立的子部分是过程环境(process context)270、服务环境(service context)272和全局音频引擎(global audio engine)274。能够将全局音频引擎274与由音频设备驱动程序214驱动的音频设备硬件同步。当被同步后,全局音频引擎274在恰当的时候将数据抽取到环形缓冲器212中。被同步的抽取使由音频设备驱动程序214驱动的音频设备能够在恰当的时候将音频数据流读出环形缓冲器212。
音频应用202在过程环境270中运行。过程环境270具有独立的地址空间,用于正在音频子系统116中运行的每个音频应用202。像这样,每个音频应用202的运行将不影响其它音频应用(未示出)。过程环境270为音频应用202执行音频数据流的处理。在音频应用202的软件中的错误是常见的,这可以归因于在每个醒来的时间段内由音频应用202完成的处理的音频数据的数量、速度和频率。
由线220-222定义的过程环境270,是由服务环境272服务或管理的。过程环境270是在典型的应用过程环境中运行的客户(或应用)空间的代表。音频应用202产生能由过程环境270中的局部效果引擎(local effect engine)(LFX)处理的音频数据流,然后将它输出至输入缓冲器208。输入缓冲器208位于过程环境270与全局音频引擎274的接口处。除另外说明,输入缓冲器208存储来自在过程环境270中运行的局部应用的输出。尽管图2对于过程环境270只示出一个音频应用202,但可以预期音频子系统116对于子系统116的过程环境270能支持多个音频应用。
服务环境272在音频子系统116中是由线222-224定义的。服务环境272是音频子系统116的一个组件,它当O/S 114在PC 124引导载入时或者当用户登录或注销时出现。服务环境272包含任何音频应用为了取得对音频子系统116的服务的访问时所需要的应用编程接口(API)。服务环境272是全局音频服务空间的代表,诸如在系统音频设备中运行的政策和系统图表服务。服务环境272在由过程环境270进行的处理崩溃后保持着。
全局音频引擎274是一个音频设备(未示出-例如,声卡)的代理,它是由音频设备驱动程序214驱动的,全局音频引擎通过环形缓冲器212与音频设备驱动程序212通信。全局音频引擎274代表用于每个全局音频引擎处理空间的一个过程,其中每个全局音频引擎处理空间负责为任何一个特定的音频设备处理所有音频数据。另外,音频子系统116的全局音频引擎274能通过混合至各个音频或多媒体应用的多个连接虚拟一个单一的音频设备,其中每个应用产生一个音频数据流。当这样虚拟时,全局音频引擎274能将混合的音频数据作为一个音频数据流提供至单一的音频设备。像这样,大量同时执行的应用能够被输出至它们全部共享的同一音频设备。另外,全局音频引擎274能在将PC 124用作媒体服务器的同时,使多个音频设备能够同时起作用。
输入缓冲器208中的音频数据流能被用作全局音频引擎274的输入。全局音频引擎274执行一个音频处理对象(Audio Processing Ojbect)(APO)以在要在由音频设备驱动程序214驱动的音频设备处输出的音频数据流上具有全局效果(GFX)。像这样,全局音频引擎274能混合和/或处理在输入缓冲器208中的音频数据流,其中输入缓冲器208正被用于存储来自多个音频应用的音频数据流。混合和/或处理在输入缓冲器208中的音频数据流的结果是单一混合的音频数据流被输出至环形缓冲器212。环形缓冲器212与全局音频引擎274进行接口以提供输入至音频设备驱动程序214。像这样,环形缓冲器212能被用于存储来自全局音频引擎274的输出,并且能被用作音频设备驱动程序214的输入。
环境200的音频子系统116提供一个过程用于每个全局音频引擎274。通过与相应的音频设备驱动程序的接口,每个全局音频引擎274反过来为各个音频设备负责所有音频数据流的处理。尽管图2只示出一个音频设备驱动程序214用于一个音频设备,但是可以预期音频子系统116能支持多个音频设备及其相应的音频设备驱动程序。
参考前面所述,音频应用202、由全局音频引擎274执行的GFX APO以及音频设备驱动程序214中的每一个都代表能由第三方提供的软件,环境200的音频子系统116使用所述软件在音频设备处再现音频数据流。像这样,环境200为第三方提供一个位置和一个市场,以创新音频软件和向使用PC 124的消费者提供音频软件,其中环境200的音频子系统116驻留于PC 124。
在图2中所示的环境200使得O/S 114的组件避免了由于执行不完善的第三方软件引起的访问违例导致的问题。这样的避免,也被称为沙箱,是通过保存环境完成的,在这个环境中,音频数据流在音频子系统116的子部分270和274中正在被处理。在一个实现中,只有全局音频引擎274的环境由服务环境272保存。如果全局音频引擎274崩溃,诸如由于访问违例而可能发生的,崩溃将不影响过程环境270或者音频应用202。如果音频应用202崩溃,在音频子系统116将不受任何影响。如果服务环境272崩溃,整个音频子系统116将崩溃。
全局音频引擎的恢复
当在全局音频引擎274中的GFX APO处理过程中存在故障时,诸如由于访问违例所产生的,能使用被保存在服务环境272中的对应于这个过程的环境来恢复处理。在恢复之后,音频数据流的处理能依照所保存的过程的环境(如已经被保存在服务环境272中的一样)再继续。从内核276将由音频子系统116执行的音频要求的服务沙箱化。这个沙箱化防止系统广泛的故障。发生崩溃或故障的应用,包括由于局部或全局处理应用故障引起的,能自动地被恢复,因此处理能再继续。
局部或全局两种处理的环境的保存,能通过将处理的机制(mechanism)放入其自己的一个地址空间中完成。除非另外说明,发生在过程环境270中的局部音频引擎的处理例程的环境,被保存在不同于保存全局音频引擎274的处理例程的环境的地址的一个独立的地址中。过程的地址空间与保存过程的环境的地址是分开的。当处理的机制被放在它自己的地址空间中时,该地址空间是与环境的机制的地址是分开的,处理的机制会崩溃而环境的机制保持完整无缺。与音频子系统116逻辑上分开的内核118也保持完整无缺。像这样,崩溃将被限制在只用于一个(1)音频应用的局部处理的或者只用于一个(1)音频设备的全局处理的终止。崩溃将不引起PC 124故障,因而避免系统重启动或者重新引导,在其他情况下,这将要求的系统重启动或者重新引导以便再继续音频的再现。在崩溃后,能重新启动处理的机制,而不是重新启动PC 124的O/S 114,以便再继续音频的再现。有些实现预期要保存这个环境,因此能备份地启动故障的处理。
现在作为一个实现的例子给出从音频数据流的全局音频处理中的故障进行恢复的一个例子,在这个实现中,媒体播放器应用正在播放音频数据。音频数据正在经历一个全局音效(GFX),它使用在其中具有错误的第三方软件音频处理对象(APO)。GFX APO软件是一个数字信号处理应用,它正在全局音频引擎274中处理音频数据流。环境200调整在服务环境272中保存(例如,存储)正在全局音频引擎274中发生的处理环境。像这样,在全局音频引擎274中用于GFX APO的地址空间和数据结构被存储在服务环境272中。最后,在全局音频引擎274中执行的GFX APO中的错误产生访问违例。访问违例接着使在全局音频引擎274中的处理崩溃。崩溃的结果是正在音频设备上通过音频设备驱动程序214再现的音频停止一段时间。在这段时间内,环境200调整从崩溃中恢复。
恢复是通过在全局音频引擎274中恢复GFX APO的处理的环境完成的。环境是从保存环境的服务环境272恢复的。因此,被恢复的所保存的环境是输入缓冲器208的环境、全局音频引擎274中GFX APO处理的环境以及环形缓冲器21的环境。一旦已经从服务环境272中恢复了每个环境,在全局音频引擎274中的GFXAPO处理能够继续。在环境恢复之后,能够继续在音频设备上通过音频设备驱动程序214再现音频。当GFX APO通过其被保存的环境的恢复而被重载入全局音频引擎274时,使用计算机系统的消费者将听到音频中短时间损失(例如,5秒)。音频然后返回并大约在它停止的位置再继续。没有其它的音频设备将由于GFXAPO的崩溃而损失音频,因为每个音频设备的音频是通过环境200与其它音频设备的音频隔离的。
在从崩溃恢复的期间,由全局音频引擎274进行的音频数据的处理将引起到达或者来自由音频设备驱动程序214服务的音频设备的所有音频流停止。然而,每个音频应用202将不知道崩溃已经发生。因为负责保持音频设备的音频图表的结构的服务环境272,运行于一个独立的服务环境中,所以由于其先前的保存服务环境272能被用于在崩溃后恢复全局音频引擎274的环境。服务环境272还具有对音频设备驱动程序214的状态(即,是启动还是停止)以及在识别不同过程环境的子部分之间使用的共享缓冲器(例如,输入缓冲器208,环形缓冲器212)的控制。服务环境272将在它们各自的子部分中重新连接输入缓冲器208、环形缓冲器212以及全局音频引擎274。音频应用202将继续,对于崩溃是透明的(例如,好象崩溃或访问违例没有发生过)。
在一个实现中,服务环境272能记住任何第三方GFX APO软件已经崩溃的次数。在次数超过预定的阈值之后,能在用户界面(UI)上向用户输出一个诊断的或其它的对话框。在已经在UI上向用户输出警告之后,GFX APO还能被禁止或者它能被重新激活。能采用用于众多的访问违例和随后的恢复的其它“分层排列的(tiered)”方法,诸如在UI上输出诊断以及第三方GFX APO软件的执行将不在全局音频引擎274中被重新启动的情况下。用于在访问违例后进行恢复的分层排列的方法有利于避免在调出和移除一个有缺点的全局效果组件中过多的重复。
关于音频应用202,在由全局音频引擎274进行的音频数据的处理中的崩溃对于音频应用202的操作和执行是透明的。相反,音频应用202将继续输入到过程环境270中,用于输出至在过程环境270与全局音频引擎274之间的部分边界处的输入缓冲器208。服务环境272然后能被用于恢复环境并且执行全局音频引擎274的自动恢复,而音频应用202保持不知道GFX APO崩溃。
因为在全局音频引擎274中的处理崩溃后缓冲器208、212仍存在,音频设备驱动程序214和环形缓冲器212的状态能被恢复。当服务环境272在处理崩溃后在全局音频引擎274中设置处理时,服务环境272必须知道缓冲器208、212的地址,以便新的全局音频引擎274能够连接这些缓冲器并且继续从音频应用202接收音频数据,音频应用202在其他情况下既不知道全局音频引擎274的崩溃也不知道缓冲器208、212的地址。相反,服务环境272保存缓冲器208、212为对象,因此当服务环境272恢复全局音频引擎274时能将它们设置在全局音频引擎274中。服务环境272传递指令至被恢复的全局音频引擎274,表示缓冲器208、212要被用作来自音频应用202的输入,用于特定的音频设备。当全局音频引擎274崩溃时,被恢复的全局音频引擎274从服务环境272取得环形缓冲器212的地址。在访问违例之后,音频设备驱动程序214可能仍在运行并且环形缓冲器212能够仍然存在。
以上提供了由于在服务环境272中的环境的保存,在全局音频引擎274中从崩溃的GFX APO的自动恢复的例子。在服务环境272中环境的保存确保对于唯一一个音频设备的音频只被中断短时间,如与重新引导PC 124所需要的时间相比。软件开发者能提供GFX APO运行在这里所揭示的音频子系统116上,其中在不带下(bring down)所有音频设备或者崩溃整个OS 114的情况下,GFX APO还能崩溃。GFX APO还能被带回(bring back up),只要环境已经被保存在服务环境272中。音频子系统116提供相应于每个音频设备(例如,声卡,USB扬声器等)的全局音频引擎274,使得全局音频引擎274能被运行在它自己的环境中并且被保存在服务环境272中。像这样,音频子系统116相对于崩溃/挂起是容错的、稳固的,以及能从由全局音频引擎274进行的GFX APO中的音频数据处理中的崩溃恢复。
依照在环境200中所看到的结构,每个音频设备能被分到一个独立的过程环境。像这样,当在全局音频引擎中的处理产生的全局音效时,正在运行的倾向于崩溃的软件,将不影响在全局音频引擎中用于另一个音频设备的音频数据的处理。而且,当由于在正在处理的全局效果代码中的错误,全局音频引擎274中的处理崩溃时,能完成自动恢复。恢复是有可能的,因为音频设备的全局状态被保存在服务环境272中。像这样,崩溃的GFX APO能被带回并且重新连接输入缓冲器208。
一般而言,从在全局音频引擎274中的处理中的崩溃的恢复,将关闭至相应的音频设备的音频,它来自为那个音频设备产生音频数据流的每个应用。为了尽可能抵抗崩溃,对于每个音频设备的全局音频引擎274能被运行于其自己的环境,其中那个环境被保存在音频子系统116的逻辑上独立的服务环境272中。
图3示出一个过程300,用于从由在全局音频引擎中执行的GFX ADO的访问违例中恢复。参考图2-3,过程300开始于方框302,其中服务环境272为输入缓冲器208和环形缓冲器212保存环境(例如,地址和数据结构)。在方框304,用于在音频数据流上产生GFX的APO被初始化。音频数据流要通过由音频设备驱动程序214驱动的音频设备再现。过程300运行到方框306,其中服务环境272为在全局音频引擎274中的GFX APO保存环境。在方框306之后,过程300运行到方框308,其中GFX APO被初始化。在全局音频引擎274中的执行继续于方框310,其中全局音频引擎274执行GFX APO以在输入缓冲器208中的音频数据流上执行数字信号处理。这个处理的输出,它能包括来自其它局部过程的混合音频数据流,被移到环形缓冲器212。在环形缓冲器212中的混合音频数据流具有依照由全局音频引擎274执行的处理的全局效果。
在方框312,GFX APO终止或引起访问违例。在方框314,服务环境272检测终止或访问违例并且恢复输入缓冲器208和环形缓冲器212的环境。在方框316,进行关于访问违例是否已经发生的查询。如果否,过程300运行到方框304。否则,过程300移动到方框318,其中用于GFX APO的崩溃计数器被增加。在方框320查询崩溃计数器关于它是否超过一个预定的阈值。如果是,则显示诊断322a并且过程300运行到方框322b,在这里在没有倾向于崩溃的GFX APO的情况下重新启动全局音频引擎274。如果用于GFX APO的崩溃计数器没有超过预定的阈值,则过程300运行回到方框304。
过程环境的恢复
能从音频数据流的局部处理中的故障进行恢复。例如,一个媒体播放器应用,如在图2中所示的音频应用202,传递音频数据流用于由过程环境270中的局部效果音频处理对象(LFX APO)处理。LFX APO具有编程代码的一个有缺点的部分,当被执行时,引起访问违例(例如,在代码中的一个错误)。在过程环境270中运行LFX APO之前,环境200的音频子系统116调整正在过程环境270中发生的处理的环境在服务环境272中的保存(例如,存储)。最后,在LFX APO中的错误使软件产生访问违例。访问违例反过来使在过程环境270中的处理崩溃。崩溃的结果是正在再现至输入缓冲器208的音频停止一段时间。像这样,将在要通过音频设备驱动程序214再现至音频设备的音频中存在一个中断。在这段时间内,环境200调整从崩溃中恢复。
从过程环境270中的LFX APO中崩溃的恢复是通过恢复过程环境270的处理的环境完成的。一旦已经从服务环境272恢复环境,能重新启动音频应用202的执行,因此过程环境270中的LFX APO处理能继续。一旦局部处理已经继续,能输出音频数据流至输入缓冲器208并且声音通过音频设备驱动程序214的操作在音频设备上再继续。没有其它音频应用将崩溃,因为音频应用是被环境200从其它音频应用的音频隔离的。
在由过程环境270执行的LFX APO的处理中的崩溃将使输入缓冲器208与音频应用202解除关联。在过程环境270的处理中的崩溃之后保留的任何音频数据流将需要被清除。当崩溃发生时,服务环境272被通知崩溃。当这样被通知时,服务环境272能关闭在崩溃后保留的音频数据流。为了清除保留的音频数据流,服务环境272能保持由过程环境270为进行的音频数据处理所创建的一个列表。服务环境272能使用这个列表以留下一个线程,这个线程等待具有保留的音频数据流的过程环境270的退出(或者任何其它这样的过程环境的退出)。
如果由过程环境270执行的处理崩溃,服务环境272将停止并关闭已经从由过程环境270执行的处理打开的所有音频数据。如果音频应用202崩溃,由音频设备驱动程序214驱动的音频设备和全局音频引擎274将都不会受影响。相反,音频数据仍由其它应用流化至由音频设备驱动程序驱动214驱动的音频设备或者至全局音频引擎274。然而,由于在过程环境270中的崩溃,输入缓冲器208将与过程环境270解除关联。像这样,能够不使用在输入缓冲器208中的音频数据。当服务环境272检测到由过程环境272执行的处理已经崩溃,那么至输入缓冲器208的每个连接被关闭或被释放。在一个实现中,不是自动地恢复音频应用202。相反,如果需要的话,能由用户重新启动音频应用202。
图4示出过程400,用于从在过程环境270中执行的局部效果(LFX)音频处理对象(APO)产生的访问违例中恢复。参考图2和4,过程400开始于方框402,其中用于在音频数据流上产生LFX的APO被初始化。音频数据流是要由音频设备驱动程序214驱动的音频设备再现的。在方框404,服务环境272保存输入缓冲器208和环形缓冲器21的环境(例如,地址和数据结构)。在方框406,LFX APO开始在过程环境270中执行。在方框408,过程环境270输出至输入缓冲器208并且全局音频引擎274从输入缓冲器208取得输入。局部音效274混合来自输入缓冲器208的音频数据流并输出混合音频数据流至环形缓冲器212。在方框410,LFX APO终止或引起访问违例。在方框412,服务环境272检测到终止或访问违例并且删除输入缓冲器208。
用于各个计算机系统的各种操作系统能够从前述实现中获得好处,特别是在操作系统为音频数据的捕捉和再现的某些组合提供音频服务的时候,以及在操作系统是多线程的和多任务的情况下。示例性当代的操作系统包括由美国加利福尼亚州(California)库珀蒂诺(Cupertino)的Apple有限公司提供的Mac OS(版本10和以下),加利福尼亚州(California)芒廷维尤(Mountain View)的Be有限公司开发的BeOS,美国华盛顿州(Washington)雷德蒙(Redmond)的Microsoft公司提供的
Figure GSB00000008415000161
以及免费软件
Figure GSB00000008415000162
而且,来自这个专利揭示的好处能由允许非信任的媒体应用执行第三方程序的任何多线程的操作系统实现,其中第三方程序能产生访问违例或者否则使操作系统正确操作停止。例如,在此所预期的操作系统,为用于音频处理效果的非信任的第三方媒体应用,提供一个可扩展的媒体处理系统,其中音频处理效果能被用在改变音频信号的全局环境中。编写得不好的或者恶意的代码,能够在不使为特定的音频设备服务的操作系统的音频系统部分崩溃的情况下被运行。通过使用操作系统中的保护机制(如过程)将音频子系统分成逻辑上分开的部分,在各种实现中完成崩溃避免。这个过程最小化编写得不好的代码对操作系统的影响。与过程相关联的地址空间和数据结构是由操作系统为运行过程而使用的。像这样,操作系统在一个隔离的过程环境中运行过程,作为存储器保护的形式和作为能被表示为过程(或线程)的环境保护的形式。
示例性计算机系统和环境
图5例示计算机环境500的一个例子,在这个环境内,这里所描述的应用,包括实时通信应用(RTC)和媒体播放器应用(MP),能全部或者部分地实现。示例性计算机环境500只是计算机环境的一个实例,而不是想要对使用范围或网络结构的功能性做任何限制。
能用众多的其它通用或专用计算机系统环境或配置实现计算机和网络结构。众知的可能适用的计算机系统、环境和/或配置的例子包括,但不限于,个人计算机、服务器计算机、瘦客户机、胖客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型机、游戏控制台、包括任何上述系统或设备的分布式计算机环境等等。
可在由一台计算机执行的计算机可执行指令(如程序模块)的一般背景中描述应用(包括RTC和MP)。通常,程序模块包括完成某些任务或实现某些抽象数据类型的例程、程序、对象、组件、数据结构等。可在分布式计算机环境中实施应用(包括RTC和MP),其中由通过通信网络连接的远程处理设备完成任务。在分布计算机环境中,程序模块可以位于本地和远程计算机存储媒体上,包括记忆存储设备。
计算机环境500包括计算机502的形式的通用计算机系统。计算机502的组件可包括,但不限于,一或多个处理器或处理单元504、系统存储器506和连接包括处理器504在内的各种系统组件至系统存储器506的系统总线508。
系统总线508表示几种总线结构类型的任何一或多种,包括存储器总线或存储控制器、外部设备总线、加速图形端口和使用多种多样总线结构中的任何一个的处理器或局部总线。作为例子,这样的结构可包括工业标准结构(ISA)总线、微通道结构(MCA)总线、扩展工业标准结构(EISA)总线、视频电子标准协会(VESA)局部总线和外设部件互连(PCI)总线,它也被称为中间层(Mezzanine)总线。
计算机502一般包括多种多样的计算机可读介质。这类介质可以是任何可由计算机502访问的可用介质,且包括易失性和非易失性的介质及可移动的和不可移动的介质。系统存储器506包括诸如只读存储器(ROM)512这样的非易失存储器和/或诸如随机访问存储器(RAM)510这样的易失存储器的形式的计算机可读介质。基本输入/输出系统(BIOS)514,包含帮助在计算机502内各部件之间传送信息的基本例程,诸如在启动期间,被存储于ROM512。RAM510一般包含处理器单元514能立即访问的和/或目前所运行的数据和/或程序模块。
计算机502还可包括其它可移动的/不可移动的、易失性的/非易失性的计算机存储介质。作为例子,图5例示用于读写不可移动的非易失性的磁介质(未示出)读写的硬盘驱动器516、用于从可移动的非易失性的磁盘520(例如,一“软盘”)读写的磁盘驱动器518,以及用于从诸如CD-ROM、DVD-ROM或其它光介质的可移动的非易失性光盘524读和/或写的光盘驱动器522。硬盘驱动器516、磁盘驱动器518和光盘驱动器522每个都通过一或多个数据介质接口525连接到系统总线508。可供选择,硬盘驱动器516、磁盘驱动器518和光盘驱动器522也可通过SCSI接口(未示出)连接到系统总线508。
磁盘驱动器及其关联的计算机可读介质为计算机502提供计算机可读指令、数据结构、程序模块和其它数据的非易失性的存储。尽管这个实例例示硬盘516、可移动的磁盘520和可移动的光盘524,要意识到还有可存储计算机可访问的数据的其它类型的计算机可读介质,诸如磁带或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光存储、随机访问存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等等,可被用于实现示例性计算机系统和环境。
任何数量的程序模块都能存储在硬盘516、磁盘520、光盘524、ROM512和/或RAM510上,包括作为例子的OS(操作系统)526、一或多个应用程序528、其它程序模块530和程序数据532。这样的OS526、一或多个应用程序528、其它程序模块530和程序数据532中的每一个(或它们的某些组合)可包括这里所述的RTC和/或MP的实施例。操作系统526包括音频捕捉和再现服务,使得媒体应用能取得用于信号处理的全局音频输出系统级混合。
计算机系统502能包括被认为是通信介质的各种各样的计算机可读介质。“通信介质”一般实现在调制数据信号诸如载波或其它传输机制中的计算机可读指令、数据结构、程序模块或其它数据,以及包括任何信息传输介质。
术语“调制的数据信号”指具有以这样一种关于编码信号中信息的方式设置或改变的一或多个特征的信号。作为例子,但不限制,通信介质包括有线的介质,诸如有线的网络或直接线路连接,以及无线的介质,诸如声音的、RF(射频)、红外线和其它无线介质。上述各项的任意组合也包括在计算机可读介质的范围之内。
用户可通过诸如键盘534和定位设备536(例如,“鼠标”)这样的输入设备将命令和信息键入计算机系统502。能使用话筒535输入声音命令,经语音识别过程处理以传递至声音输入。其它输入设备538(未详细示出)能包括操纵杆、游戏垫、卫星天线、串口、扫描仪等等。这些或其它输入设备可通过连接到系统总线508的输入/输出接口540连接至处理器单元504上,还可通过其它接口和总线结构连接,诸如并行接口、游戏端口或通用串行总线(USB)。
监视器542和其它类型的显示设备也能通过接口诸如视频适配器544连接至系统总线508。输入/输出接口540能包括声卡、集成(例如,板载的)声卡等。一个或多个扬声器537能与输入/输出接口540通信。除监视器542之外,其它输出外部设备能包括诸如打印机546这样的组件,它们可通过输入/输出接口540连接到计算机502。
计算机502能在使用到一或多个远程计算机(诸如远程计算器设备548)的逻辑连接的网络环境中运行。作为例子,远程计算机设备548可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其它普通的网络节点等等。远程计算机设备548被例示为便携式计算机,它能包括许多或所有在这里相对于计算机系统502所述的元件和特征。
在计算机502和远程计算机548之间的逻辑连接被示为局域网(LAN)550和总的广域网(WAN)552。这样的网络环境在办公室、企业级计算机网络、企业内部互联网和因特网中是很普遍的。当在LAN网络环境中实现时,计算机502通过网络接口或适配器554连接到局域网550。当在WAN网络环境中实现时,计算机502通常包括调制解调器556或其它在广域网552上建立通信的装置。调制解调器556,它可内置或外置于计算机502,能通过输入/输出接口540或其它合适的机制连接到系统总线508。要意识到例示的网络连接是示范性的,且能使用其它在计算机502和548之间建立通信链路(一条或多条)的方法。
在网络化环境中,诸如与计算机环境500一起示出的,相对于计算机502所示的程序模块或其部分可存储于远程记忆存储设备。作为例子,远程应用程序558驻留在远程计算机548的存储器设备中。为了说明,应用程序和其它可执行程序组件,诸如操作系统,在这里作为分离的方框示出,尽管认识到这样的程序和组件在不同的时间驻留在计算机502的不同的存储组件中,并由计算机502的数据处理器执行。
尽管已经对专用于结构特征和/或方法步骤的语言描述本发明,要理解在所附权利要求书中定义的本发明不必受限于所述的具体的特征或步骤。具体的特征和步骤而是作为实现所要求的本发明的较佳形式被揭示。

Claims (35)

1.一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的方法,包括:
接收一请求,请求一操作系统为要在一音频数据流上完成的全局音效(GFX)执行一音频处理对象(APO),所述音频数据流要在由音频设备驱动程序驱动的一音频设备上输出,其中所述操作系统包括一音频子系统,所述音频子系统具有一输入缓冲器、一环形缓冲器以及在存储器中包括一服务地址空间和一全局音频引擎的逻辑上独立的地址空间;
在服务地址空间中,保存用于输入缓冲器、全局音频引擎和环形缓冲器的服务数据;
运行全局音频引擎以通过APO在输入缓冲器中的音频数据流上完成数字信号处理,以在环形缓冲器中形成数字信号处理(DSP)音频数据流;
将在环形缓冲器中的DSP音频数据流输入至音频设备驱动程序驱动的音频设备;以及
在APO终止或者APO访问违例时:
用服务地址空间中分别保存的服务数据来恢复输入缓冲器、全局音频引擎和环形缓冲器的每一个;以及
任选地在全局音频引擎中再继续APO的执行。
2.如权利要求1所述的方法,其特征在于,APO的终止或者由APO产生的访问违例是由服务地址空间检测的。
3.如权利要求1所述的方法,其特征在于:
所述输入缓冲器的服务数据包括与输入缓冲器相关联的地址和数据结构;
所述全局音频引擎的服务数据包括与全局音频引擎相关联的地址和数据结构;以及
所述环形缓冲器的服务数据包括与环形缓冲器相关联的地址和数据结构。
4.如权利要求1所述的方法,其特征在于,在APO访问违例时,所述方法还包括:
增加表示APO访问违例次数的计数器;以及
当所述计数器超过一预定的限制时,输出诊断并且禁止在全局音频引擎中再继续APO的执行。
5.如权利要求1所述的方法,其特征在于:
所述操作系统还包括多个所述环形缓冲器用于相应的多个所述全局音频引擎;以及
每个所述的全局音频引擎输出一个所述DSP音频数据流至相应的所述环形缓冲器,以提供输入至相应的所述音频设备驱动程序用于驱动相应的所述音频设备。
6.如权利要求5所述的方法,其特征在于:
所述操作系统还包括多个所述输入缓冲器,每一个输入缓冲器包含要由相应的所述音频设备再现的音频数据流;以及
每一个所述全局音频引擎对应于一个所述输入缓冲器。
7.如权利要求6所述的方法,其特征在于,每一个所述输入缓冲器,为至少一个所述的音频设备,从向操作系统请求音频服务的音频应用接收相应的所述音频数据流。
8.如权利要求1所述的方法,还包括用由音频设备驱动程序驱动的音频设备再现DSP音频数据流。
9.如权利要求1所述的方法,其特征在于,所述存储器具有多个独立的部分,所述部分包括:
用于内核的部分;以及
用于音频子系统的部分,所述音频子系统具有分开的子部分,包括:
用于服务地址空间的子部分;以及
用于全局音频引擎的子部分。
10.如权利要求9所述的方法,其特征在于,所述多个独立的部分还包括,用于过程地址空间的部分,所述过程地址空间具有用于执行APO以输出音频数据流至输入缓冲器的局部引擎。
11.如权利要求10所述的方法,其特征在于:
所述在输入缓冲器中的音频数据流包括,来自多个音频应用的音频数据,所述音频应用的每一个要用音频设备再现;以及
所述全局音频引擎混合来自多个音频应用的音频数据以在环形缓冲器中形成DSP音频数据流。
12.如权利要求1所述的方法,其特征在于,GFX是混响效果、音频畸变效果、扬声器补偿效果、多频带音频均衡器效果中的一种。
13.一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的方法包括:
从一音频应用接收一请求,请求操作系统为要在音频数据流上完成的全局音效(GFX)执行一音频处理对象(APO),所述音频数据流要在由音频设备驱动程序驱动的音频设备上输出,其中:
所述操作系统在存储器中具有独立的部分,包括:
一内核;以及
一音频子系统,具有一输入缓冲器和一环形缓冲器;
在存储器中音频子系统的部分具有独立的子部分,包括:
一服务地址空间;以及
一全局音频引擎,用于执行APO;
在服务地址空间中保存与输入缓冲器、环形缓冲器和全局音频引擎相关联的地址和数据结构;
运行全局音频引擎以:
用APO在输入缓冲器中的音频数据流上完成数字信号处理,以形成数字信号处理(DSP)音频数据流;以及
输出DSP音频数据流至环形缓冲器;
将在环形缓冲器中的DSP音频数据流输入至音频设备驱动程序驱动的音频设备,用于再现DSP音频数据流;以及
在APO终止或者APO访问违例时:
用服务地址空间中为输入缓冲器保存的地址和数据结构恢复输入缓冲器;
用服务地址空间中为全局音频引擎保存的地址和数据结构恢复全局音频引擎;
用服务地址空间中为环形缓冲器保存的地址和数据结构恢复环形缓冲器;以及
任选地在全局音频引擎中再继续APO的执行。
14.如权利要求13所述的方法,其特征在于,APO终止或者APO访问违例是由服务地址空间检测的。
15.如权利要求13所述的方法,其特征在于,所述在存储器中音频子系统的部分还包括,用于过程地址空间的独立的子部分,所述过程地址空间具有一局部引擎用于执行APO以输出音频数据流至输入缓冲器。
16.如权利要求15所述的方法,其特征在于:
在所述输入缓冲器中的音频数据流包括来自多个音频应用的音频数据,所述音频应用的每一个是要用音频设备再现的;以及
所述全局音频引擎混合来自多个音频应用的音频数据,以在环形缓冲器中形成DSP音频数据流。
17.如权利要求13所述的方法,其特征在于:
使输入缓冲器逻辑上位于在过程地址空间的部分与全局音频引擎的部分之间共享的存储器中音频子系统的部分中;以及
使环形缓冲器逻辑上位于在全局音频引擎的部分与内核的部分之间共享的存储器中音频子系统的部分中。
18.如权利要求13所述的方法,其特征在于,在APO访问违例时,所述方法还包括:
增加表示APO访问违例次数的计数器;以及
当所述计数器超过一预定的限制时,输出诊断并且禁止在全局音频引擎中再继续APO的执行。
19.如权利要求13所述的方法,其特征在于,
所述操作系统还包括多个所述环形缓冲器用于相应的多个所述全局音频引擎;以及
每个所述的全局音频引擎输出一个所述DSP音频数据流至相应的所述环形缓冲器,以提供输入至相应的所述音频设备驱动程序用于驱动相应的所述音频设备。
20.如权利要求19所述的方法,其特征在于:
所述操作系统还包括多个所述输入缓冲器,每一个输入缓冲器包含要由相应的所述音频设备再现的音频数据流;以及
每一个所述全局音频引擎对应于一个所述输入缓冲器。
21.如权利要求20所述的方法,其特征在于,每一个所述输入缓冲器,为至少一个所述音频设备,从向操作系统请求音频服务的音频应用接收相应的所述音频数据流。
22.一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的设备,包括:
用于接收一请求的装置,请求一操作系统为要在一音频数据流上完成的全局音效(GFX)执行一音频处理对象(APO),所述音频数据流要在由音频设备驱动程序驱动的一音频设备上输出,其中所述操作系统包括一音频子系统,所述音频子系统具有一输入缓冲器、一环形缓冲器以及在存储器中包括一服务地址空间和一全局音频引擎的逻辑上独立的地址空间;
用于在服务地址空间中保存用于输入缓冲器、全局音频引擎和环形缓冲器的服务数据的装置;
用于运行全局音频引擎以通过APO在输入缓冲器中的音频数据流上完成数字信号处理,以在环形缓冲器中形成数字信号处理(DSP)音频数据流的装置;
用于将在环形缓冲器中的DSP音频数据流输入至音频设备驱动程序驱动的音频设备的装置;以及
在APO终止或者APO访问违例时:
用于用服务地址空间中分别保存的服务数据来恢复输入缓冲器、全局音频引擎和环形缓冲器的每一个的装置;以及
用于任选地在全局音频引擎中再继续APO的执行的装置。
23.如权利要求22所述的设备,其特征在于:
所述输入缓冲器的服务数据包括与输入缓冲器相关联的地址和数据结构;
所述全局音频引擎的服务数据包括与全局音频引擎相关联的地址和数据结构;以及
所述环形缓冲器的服务数据包括与环形缓冲器相关联的地址和数据结构。
24.如权利要求22所述的设备,其特征在于,在APO访问违例时,所述设备还包括:
用于增加表示APO访问违例次数的计数器的装置;以及
用于当所述计数器超过一预定的限制时,输出诊断并且禁止在全局音频引擎中再继续APO的执行的装置。
25.如权利要求22所述的设备,其特征在于:
所述音频子系统还包括多个所述环形缓冲器用于相应的多个所述全局音频引擎;以及
每个所述的全局音频引擎输出一个所述音频数据流至相应的所述环形缓冲器,以提供输入至相应的所述音频设备驱动程序,用于驱动相应的所述音频设备。
26.如权利要求25所述的设备,其特征在于,所述音频子系统还包括多个所述输入缓冲器,每一个输入缓冲器包含要由相应的用于再现音频的装置再现的音频数据流;以及
每一个所述全局音频引擎对应于一个所述输入缓冲器。
27.如权利要求26所述的设备,其特征在于,每一个所述输入缓冲器,为至少一个用于再现音频的所述装置,从向操作系统请求音频服务的音频应用接收相应的所述音频数据流。
28.如权利要求22所述的设备,其特征在于,所述音频子系统中多个逻辑上独立的子部分还包括用于过程地址空间的子部分,所述过程地址空间具有用于执行APO以输出音频数据流至输入缓冲器的局部引擎。
29.如权利要求28所述的设备,其特征在于,
在所述输入缓冲器中的音频数据流包括来自多个音频应用的音频数据,所述音频应用的每一个是要用音频设备再现的;以及
所述全局音频引擎混合来自多个音频应用的音频数据,以在环形缓冲器中形成音频数据流。
30.一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的计算机系统,包括:
用于处理来自一个音频应用要生成由操作系统执行的第一音频数据流的请求的装置,所述操作系统逻辑上被分成用于内核的部分和用于具有逻辑上独立的子部分的音频子系统的部分;
用于在第一子部分中保存用于处理所述第一音频数据流的过程的服务数据的装置;以及
用于在第二子部分中通过该过程来处理所述第一音频数据流的装置,其中当当所述过程使得访问违例时,通过在音频子系统中恢复第一子部分中保存的服务数据来恢复该过程。
31.如权利要求30所述的计算机系统,其特征在于,所述为过程保存的服务数据包括地址和数据结构信息,它们足以通过恢复在音频子系统中保存的服务数据来恢复过程。
32.如权利要求30所述的计算机系统,其特征在于:
用于处理来自第二音频应用要产生输出至第二音频设备的第二音频数据流的请求的装置,所述第二音频设备与要输出第一音频数据流的第一音频设备不同;以及
其中,所述过程的访问违例和恢复:
既不影响第二音频应用的执行;
也不影响要被输出至第二音频设备的第二音频数据流。
33.一种在音频数据流处理期间当音频处理对象访问异常时进行恢复的方法,包括:
处理来自一音频应用的请求,以通过执行一操作系统产生第一音频数据流,所述操作系统逻辑上被分成用于内核的部分和用于具有逻辑上独立的子部分的音频子系统的部分;
在第一子部分中保存用于处理第一音频数据流的过程的服务数据;以及
在第二子部分中用过程处理第一音频数据流,其中,当过程产生访问违例,通过在音频子系统中恢复来自所述第一子部分的保存的服务数据来恢复过程。
34.如权利要求33所述的方法,其特征在于,所述为过程保存的服务数据包括地址和数据结构信息,它们足以通过恢复在音频子系统中保存的服务数据来恢复过程。
35.如权利要求33所述的方法,其特征在于,还包括处理来自一音频应用的请求,以通过执行操作系统产生第二音频数据流,其中,第二音频数据流被导向输出到一第二音频设备,第二音频设备不同于要输出第一音频数据流的第一音频设备,其中,过程的访问违例和恢复:
既不影响通过执行第二音频应用产生第二音频数据流;
也不影响要输出至第二音频设备的第二音频数据流。
CN2004100317696A 2003-03-20 2004-03-22 用于音频处理对象访问违例时进行恢复的方法、设备和系统 Expired - Lifetime CN1532696B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/393,661 US7231269B2 (en) 2003-03-20 2003-03-20 Recovery upon access violation by audio processing object
US10/393661 2003-03-20
US10/393,661 2003-03-20

Publications (2)

Publication Number Publication Date
CN1532696A CN1532696A (zh) 2004-09-29
CN1532696B true CN1532696B (zh) 2011-04-20

Family

ID=32850521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100317696A Expired - Lifetime CN1532696B (zh) 2003-03-20 2004-03-22 用于音频处理对象访问违例时进行恢复的方法、设备和系统

Country Status (8)

Country Link
US (1) US7231269B2 (zh)
EP (1) EP1465070B1 (zh)
JP (1) JP4589645B2 (zh)
KR (1) KR101067397B1 (zh)
CN (1) CN1532696B (zh)
AT (1) ATE428976T1 (zh)
DE (1) DE602004020537D1 (zh)
TW (1) TWI357015B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7565395B2 (en) * 2005-02-01 2009-07-21 Microsoft Corporation Mechanism for preserving session state when using an access-limited buffer
US8166194B2 (en) * 2006-12-13 2012-04-24 Microsoft Corporation Lock-free shared audio buffer
US7669082B2 (en) * 2007-04-11 2010-02-23 Microsoft Corporation Fault tolerant and hang resistant media processing applications
CN101262662B (zh) * 2007-06-29 2011-02-09 浙江华立通信集团有限公司 用于3g和4g终端的音调生成方法及装置
RU2628925C1 (ru) * 2016-04-25 2017-08-22 Акционерное общество "Лаборатория Касперского" Система и способ защищенной передачи аудиоданных от микрофона к процессам
CN106126171B (zh) * 2016-06-16 2018-07-06 广东欧珀移动通信有限公司 一种音效处理方法及移动终端
CN106095558B (zh) * 2016-06-16 2019-05-10 Oppo广东移动通信有限公司 一种音效处理的方法及终端
EP3886414A4 (en) * 2018-12-03 2021-12-15 Shenzhen Heytap Technology Corp., Ltd. CLOCK READING PROCESS AND APPARATUS AND ELECTRONIC DEVICE
CN115223578B (zh) * 2022-09-21 2023-07-14 浙江地芯引力科技有限公司 一种音频信号同步方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768126A (en) * 1995-05-19 1998-06-16 Xerox Corporation Kernel-based digital audio mixer
JP2002202893A (ja) * 2000-10-24 2002-07-19 Texas Instruments Inc 多重タスクの実行を制御する方法と処理回路

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2152329C (en) 1994-09-08 1999-02-09 N Dudley Fulton Iii Apparatus and methods for software rejuvenation
US6832380B1 (en) * 1996-06-28 2004-12-14 Tarantella, Inc. Client-server application partitioning with metering technique for distributed computing
US5971851A (en) * 1996-12-27 1999-10-26 Silicon Gaming, Inc. Method and apparatus for managing faults and exceptions
US6175916B1 (en) * 1997-05-06 2001-01-16 Microsoft Corporation Common-thread inter-process function calls invoked by jumps to invalid addresses
US6216173B1 (en) * 1998-02-03 2001-04-10 Redbox Technologies Limited Method and apparatus for content processing and routing
US6243753B1 (en) * 1998-06-12 2001-06-05 Microsoft Corporation Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters
EP0965923A3 (en) 1998-06-19 2001-04-04 Intellution Inc. System and method for secure software component containment
US6490722B1 (en) 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768126A (en) * 1995-05-19 1998-06-16 Xerox Corporation Kernel-based digital audio mixer
JP2002202893A (ja) * 2000-10-24 2002-07-19 Texas Instruments Inc 多重タスクの実行を制御する方法と処理回路

Also Published As

Publication number Publication date
KR101067397B1 (ko) 2011-09-27
EP1465070B1 (en) 2009-04-15
US20040186601A1 (en) 2004-09-23
JP4589645B2 (ja) 2010-12-01
EP1465070A1 (en) 2004-10-06
US7231269B2 (en) 2007-06-12
TWI357015B (en) 2012-01-21
ATE428976T1 (de) 2009-05-15
CN1532696A (zh) 2004-09-29
DE602004020537D1 (de) 2009-05-28
KR20040082993A (ko) 2004-09-30
TW200506714A (en) 2005-02-16
JP2004288196A (ja) 2004-10-14

Similar Documents

Publication Publication Date Title
KR101246976B1 (ko) 미디어 콘텐츠 렌더링의 특징
US7904580B2 (en) Digital media player exposing operational state data
US7739663B2 (en) Method, system and program product for validating a runtime environment
CN103605562B (zh) 一种kvm虚拟机在物理主机之间迁移的方法
US20070247430A1 (en) Keyboard and mouse operation data recording/reproducing system and method thereof
CN102281473A (zh) 电视终端的信息处理方法及电视终端
WO2019127114A1 (zh) 一种虚拟机的音频播放方法及其装置、移动终端
CN1532696B (zh) 用于音频处理对象访问违例时进行恢复的方法、设备和系统
US20090048023A1 (en) Method and apparatus for recording and replaying network game
CN108512814A (zh) 媒体数据处理方法、装置和系统
EP2737400B1 (en) Mode notifications
US8819663B2 (en) Acceleration of software modifications in networked devices
US20170169834A1 (en) Android-based audio content processing method and device
CN113329237B (zh) 一种呈现事件标签信息的方法与设备
US8631398B2 (en) Method and apparatus for facilitating creation of a network interface
CN105306501A (zh) 用于对多媒体数据进行交互式更新的方法和系统
CN101506797A (zh) 具有多个媒体播放模型的媒体播放工具
US20040017511A1 (en) Video information indexing support apparatus and method, and computer program
CN109117218A (zh) 一种操作系统演示方法
CN103996406B (zh) 一种基于android系统的媒体文件播放方法及装置
CN113079397A (zh) 一种多媒体资源播放方法和装置
US11580313B1 (en) Translation and communication filters for social interaction
TWI721706B (zh) 動態改變影音播放行為的方法及終端播放裝置
CN118035116A (zh) 内嵌直播页面测试方法、系统、电子设备及存储介质
KR20070089497A (ko) 디지털 멀티미디어 앨범 제공 방법 및 시스템

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150506

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150506

Address after: Washington State

Patentee after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: 1 Microsoft Road, Redmond, Washington

Patentee before: Microsoft Corp.

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160628

Address after: Grand Cayman, Georgetown, Cayman Islands

Patentee after: Microsoft Corp.

Address before: Washington State

Patentee before: MICROSOFT TECHNOLOGY LICENSING, LLC

CX01 Expiry of patent term

Granted publication date: 20110420

CX01 Expiry of patent term