[go: up one dir, main page]

JP2004288196A - オーディオ処理オブジェクトによるアクセス違反時の障害回復 - Google Patents

オーディオ処理オブジェクトによるアクセス違反時の障害回復 Download PDF

Info

Publication number
JP2004288196A
JP2004288196A JP2004083613A JP2004083613A JP2004288196A JP 2004288196 A JP2004288196 A JP 2004288196A JP 2004083613 A JP2004083613 A JP 2004083613A JP 2004083613 A JP2004083613 A JP 2004083613A JP 2004288196 A JP2004288196 A JP 2004288196A
Authority
JP
Japan
Prior art keywords
audio
global
context
engine
data stream
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.)
Granted
Application number
JP2004083613A
Other languages
English (en)
Other versions
JP2004288196A5 (ja
JP4589645B2 (ja
Inventor
Steven E Swenson
イー.スウェンソン スティーブン
David W Flenniken
ダブリュ.フレニケン デビッド
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 JP2004288196A publication Critical patent/JP2004288196A/ja
Publication of JP2004288196A5 publication Critical patent/JP2004288196A5/ja
Application granted granted Critical
Publication of JP4589645B2 publication Critical patent/JP4589645B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Electric Clocks (AREA)
  • Examining Or Testing Airtightness (AREA)

Abstract

【課題】 オーディオ処理オブジェクトによるアクセス違反時の回復を提供する。
【解決手段】 オペレーティングシステムを、カーネルのパーティションと、論理的に独立した下位パーティションを有するオーディオサブシステムのパーティションとに論理的に分離する。オーディオアプリケーションが、オーディオサブシステムを実行することにより第1のオーディオデータストリームを生成する。第1のオーディオデータストリームを処理するプロセスのコンテクストを第1の下位パーティションに保存する。そのプロセスによる第1のオーディオデータストリームの処理は、第2の下位パーティションで行われる。プロセスがアクセス違反を犯すと、第1の下位パーティションからその保存されたコンテクストをオーディオサブシステムで復元することによってそのプロセスを回復する。
【選択図】 図1

Description

本発明は、一般にはストリーミングオーディオの処理に関し、より詳細には、ストリーミングオーディオの処理中のオーディオ処理オブジェクトによるアクセス違反からの障害回復に関する。
ストリーミングオーディオデータの記録と再生にパーソナルコンピュータ(PC)などのコンピューティングシステムを使用することが増えている。PCは、いくつかのオーディオ、ビデオ、およびマルチメディアのアプリケーションが同時に実行される1タイプのメディアサーバとして使用することができ、各アプリケーションは、PCのオペレーティングシステム(OS)を使用する。メディアサーバとしてのPCの一例として、以下のような同時の使用のシナリオを考えられたい。PC上のDVDプレーヤを使用する第1のメディアプレーヤアプリケーション(MP)によってデジタルビデオディスクが再生されている。ネットワーク電話技術のためのリアルタイム通信アプリケーション(RTC)でVoice over Internetプロトコルのためにマイクロフォンが使用されている。ネットワーク電話技術では、個々のコンピューティングシステムのユーザは、電話ユーザが回路交換網を通じて別の電話ユーザと話すのとほとんど同様に、パケット交換網を通じて別のユーザの1人と互いに話をする。ユーザがPCと対話する時には、OSによってシステムの音声が生成される。ビデオオンデマンドアプリケーション(VOD)がストリーミングマルチメディアとしてPCによって実行されており、ケーブルまたは衛星TV放送システムを介して受信されている。音楽ディスク(例えばCD)が、PCのCD−ROMドライブを使用する第2のメディアプレーヤアプリケーションの実行によって再生されている。別のユーザがPCでビデオゲームをやっており、対応するゲームアプリケーションが、ユーザとゲームアプリケーションの対話に基づいてオーディオデータストリームを生成している。1つまたは複数のグローバルオーディオ効果アプリケーション(GFX)もまたPCで実行することができる。GFXの例には、残響・反響(リバーブ)効果アプリケーション、オーディオ歪み効果アプリケーション、1つまたは複数のスピーカで再生(レンダー)されるストリーミングオーディオデータのデジタル信号処理(DSP)によって行われるスピーカ補償アプリケーション、マルチバンドオーディオイコライザアプリケーションを含み、マルチバンドオーディオイコライザアプリケーションは、オーディオデバイス(例えばサウンドカード)と協働してPCユーザが各種の事前設定(例えばコンサートホール、ロック、クラシックなど)のためにオーディオデバイスからのオーディオ出力を調整することを可能にするユーザインタフェース(UI)を提示できるように実行し、また1つまたは複数のオーディオドライバによって駆動される1つまたは複数のオーディオデバイスに出力される1つまたは複数のオーディオデータストリームにDSPを行うその他のGFXが含まれる。
上記の例に挙げたアプリケーションは他のオーディオビジュアルアプリケーションと同様に、不完全な書き方の場合に、実行で障害が発生し、アプリケーションがアボート(中断)する可能性がある。そのようなアプリケーションの障害により、コンピュータクラッシュの別名で知られるPCのOSの深刻な障害が生じる恐れがあり、その場合はPC自体が動作を停止してしまう。コンピュータクラッシュは、そのアプリケーションが書かれたコードに非常に深刻なソフトウェアバグが現れる可能性がある。OSにオーディオデバイスへの出力を要求するオーディオアプリケーションの例では、バグの結果としてアクセス違反が起こる可能性がある。OSのカーネル(例えばスケジューリングサービス)のメモリと、OS中でオーディオを処理するために使用するメモリは、互いから完全に分離することになっている。アクセス違反は、オーディオアプリケーションが、常駐していないメモリへのアクセスを行う(すなわちメモリアクセスが適正ではない、あるいは許可されない)時に発生する。通例、アクセス違反は、オーディオアプリケーションが、カーネルモードで動作しているオーディオデバイスドライバを有する時に発生する。オーディオアプリケーションがOSのカーネル空間またはオーディオデバイスドライバへのアクセス違反を行うと、そのアクセス違反によりコンピュータクラッシュが生じる可能性がある。
OSのカーネルが元の状態のまま保たれる限り、クラッシュしたオーディオアプリケーションによってカーネルが不安定になることはない。むしろ、そのオーディオアプリケーションだけが動作を停止し、再起動させなければならない。しかし、カーネルのアクセス違反は、カーネルが不安定になり、回復が不可能な致命的エラーが生じる可能性がある。Microsoft Windows(登録商標)オペレーティングシステム環境では、青い画面に表示される診断によってPCのユーザにコンピュータクラッシュが通知される。そのため、用語「死のブルースクリーン(BSOD:Blue Screen of Death)」が慣例的に使用されている。BSODがユーザに表示されると、PCを再起動あるいはブート(起ち上げ)する以外に回復法がない。
PCをメディアサーバとして使用することの特有の損失は、実行中の数個のオーディオおよびオーディオビジュアルアプリケーションのうちのただ1つにソフトウェアバグがある場合に生じる。ソフトウェアバグは、PCから再生されているオーディオに様々な程度の混乱や中断や破壊を生じさせる。最も軽度の混乱では、バグのあるアプリケーションによって生成されるオーディオデータストリームだけが影響を受ける。より高い程度の混乱では、すべてのオーディオデバイスが影響を受け、恐らくは動作を停止し、すなわち、すべてのオーディオデバイスへの全体的なオーディオ再生が中止されることになる。さらに深刻なシナリオでは、オーディオアプリケーションの1つにあるソフトウェアバグによりコンピュータクラッシュが引き起こされ、それによりOSが再ロードされるまでPC上のすべてのアクティビティが停止せざるを得なくなる。OSの再ロードには数分間を要する。
上述の点から鑑みて、当該技術分野において、コンピューティングシステム上で実行されるある程度のオーディオアプリケーションのオーディオ要求を満たし、同時に、オーディオアプリケーションを隔離して、実行中のそのアプリケーションの障害により全域的なオーディオ再生の停止と、コンピュータクラッシュが生じないようにしたOSを提供することは有利となるであろう。
本発明の一実施態様では、オペレーティングシステムのシステムオーディオサービスが、オーディオアプリケーションのコンテクストを保存・保持し、オーディオアプリケーションの処理に障害が発生してもその処理を回復することができる。本発明の別の実施態様では、コンピューティングシステムが、第1のオーディオデータストリームを生成するオーディオアプリケーションを実行するプロセッサを有する。このプロセッサは、カーネルのためのパーティションとオーディオサブシステムのためのパーティションとに論理的に分離されたオペレーティングシステムを実行する。オーディオサブシステムは、論理的に独立した下位パーティションに分離される。オーディオサブシステムを用いて第1のオーディオデータストリームを処理するためのプロセス(例えばオーディオ処理オブジェクト)は、第2の下位パーティションでプロセスを実行する前に第1の下位パーティションに保存・保持されたコンテクストを有する。プロセスがアクセス違反を犯すと、そのプロセスのコンテクストを第1の下位パーティションからリストア(復活、復元)することによってそのプロセスが回復される。保存・保持されたプロセスのコンテクストは、オーディオサブシステム中で保存・保持されたコンテクストをリストアすることによってそのプロセスを回復するのに十分なアドレスおよびデータ構造の情報を含む。プロセッサが、第1のオーディオデータストリームが出力される第1のオーディオデバイスとは異なる第2のオーディオデバイスに出力される第2のオーディオデータストリームを生成するオーディオアプリケーションを実行する場合、アクセス違反もプロセスの回復も、第2のデータデバイスによって出力されるオーディオに影響しない。
以下、添付図面を参照して本発明の好ましい実施形態について詳細に説明するが、この開示および図の全体に渡って同様の構成要素および機能を同じ参照符号で参照する。100番台の参照符号は初めに図1に現れる機能を指し、200番台の参照符号は最初に図2に現れる機能を指し、300番台の参照符号は、最初に図3に現れる機能を指す。以下、同様である。
複数のオーディオデバイスとそれらを駆動するアプリケーションドライバが、メディアサーバとして使用中のコンピューティングシステムとコミュニケーションを取り合うことができる。従って、コンピューティングシステムは、複数のオーディオデバイスに同時にオーディオを送信することができる。コンピューティングシステムのオペレーティングシステム(OS)は、カーネルと、オペレーティングシステムの多数のサブシステムのちょうど1つのサブシステムである内蔵オーディオサブシステムの両方を有する。アプリケーションの1つまたは複数は、オーディオデバイスの1つを対象とするすべてのオーディオに対するグローバル効果(GFX)を有するオーディオ処理オブジェクト(APO)を実行するようにオーディオサブシステムに要求を行う。例として、GFX APOは、残響・反響(リバーブ)効果、歪み効果、スピーカ補償効果、あるいは他のデジタル信号処理(DSP)効果などが可能である。
オーディオサブシステムは、OSのカーネルをオーディオデバイスドライバから隔離し、また互いに他から隔離する。サンドボックス技法の1つであるこの隔離により、アクセス違反を犯すことなどによりオーディオアプリケーションに障害が発生した時の回復が可能になることを保証する。この隔離により、実行中のすべてのアプリケーションからのすべてのオーディオが停止するのではなく、障害の起こったアプリケーションからのオーディオだけが停止するようになる。この分離はまた、アクセス違反がコンピューティングシステムをクラッシュさせず、ブート(例えばブートストラップ)動作が回避されることも保証する。障害のあるアプリケーションは再起動させ、オーディオの生成を続行することができる。ユーザは、アプリケーションの障害からは瞬間的なオーディオの損失のみを経験する。コンピューティングシステムのユーザによって知覚されるオーディオの損失は、障害が発生したアプリケーションのオーディオに限られ、音声が途切れる時間の長さについては変化する。
一実施形態では、2人のユーザが1台のパーソナルコンピュータ(PC)をメディアサーバとして使用することができ、ここで、第1のユーザはPCのDVDプレーヤでDVDの映画を再生し、映画からの音声は、第1のスピーカセットで再生するために第1のサウンドカードで処理される。第2のユーザは、PCのCDリーダを使用してコンパクトディスク(CD)上の歌を再生している。第2のユーザについては、その再生は、PCのマザーボードと通信する第2のサウンドカードと通信する第2のスピーカセットで再生される。第2のサウンドカードは、オーディオデバイスドライバによって駆動される。歌の再生は、PC上でメディアプレーヤアプリケーションを実行することによって行われる。メディアプレーヤアプリケーションは、歌の再生によって生成されたオーディオデータストリームに関してGFX APOを呼び出す。このGFX APOに、アクセス違反を犯すなどによりその実行中に障害を発生させるソフトウェアバグがもしある場合には、第2のユーザは、障害からの回復中に例えば5秒間の音声の損失を経験することになる。その回復中には、コンピュータを再起動する必要はなく、第1のユーザはDVDの映画の再生中に音声の損失を経験しない。GFX APOが再ロードされ、オーディオサブシステムは、歌を再生するために中断した箇所にオーディオを戻す。再ロードされたGFX APOは引き続き実行して、第2のサウンドカードを用いて第2のスピーカセットで再生されるオーディオデータストリームを処理する。そのPCを使用してオーディオの再生をしていた他のオーディオデバイスがある場合、そのオーディオはアクセス違反によっても回復によっても失われない。
図1に、PC124がメディアサーバとして使用されている環境100を示す。図1には何人かの人を示すが、それぞれの者は1つまたは複数のスピーカ106から再生されるオーディオを聴いている。PC124は、PC124をメディアサーバとして使用する者のためにオーディオを含むマルチメディアを再生するA−V部122に、デジタルビデオディスク(DVD)リーダやコンパクトディスク(CD)リーダなどの携帯メディアリーダを有する。PC124は、A−V部122の携帯メディアリーダから読み出される携帯メディアを再生する複数のマルチメディアアプリケーションを実行している。オーディオデータは、オペレーティングシステム(O/S)114と通信する入力部120に通信される。そのようなマルチメディアアプリケーションの1つは、例えば米国ワシントン州レッドモンド所在のマイクロソフト社から提供されるWindows(登録商標) Media Playerソフトウェアであるとしてよい。
PC124のO/S114は、各自の対応するドライバ104(1〜N)を通じて各種のオーディオデバイス102(1〜N)と通信する出力部112を有する。例として、オーディオデバイス102は、2チャンネルのサウンドカード、一対のユニバーサルシリアルバス(USB)スピーカ、ネットワークスピーカ(TCP/IPスピーカ)、あるいは1つまたは複数チャンネルのサウンド出力に対応できる他のデバイスである。例えば、1つのオーディオデバイス102は、PC124がデジタルデータをアナログ音声に変換することによりスピーカ106の1つで音声を再生することを可能にする、PC124のマザーボードに搭載された拡張ボードであるサウンドカードとすることができる。オーディオデバイス102は、オーディオデータの再生(render)またはキャプチャ(記録)に使用することができる。例えば、オーディオデバイス102は、PC124に接続されたマイクロフォン106(k−1)から入力される音声を記録するために使用することができ、またディスクに記憶された音声を操作するために使用することができる。1人の者が1つまたは複数のスピーカ106(k)を聴きながらマイクロフォン106(k−1)に話しているのが描かれている。オーディオは、O/S114の動作を通じて再生およびキャプチャされる。ネットワーク電話の環境では、マイクロフォン106(k−1)はスピーカ106(k)と共に使用することができ、各PCがリアルタイム通信アプリケーション(RTC)を実行していれば、人はネットワークを通じて別のPCのユーザに話しかけるためにマイクロフォン106(k−1)に話す。O/S114は、論理的に独立したパーティションを含み、このパーティションはオーディオサブシステム116とカーネル118である。カーネル118は、オペレーティングシステム114のスケジューリングサービスである。オーディオコンポーネント116は、下記で図2に関して説明するように各種のソフトウェアコンポーネントを含むことができる。
図1のO/S114の一実装を図2に示し、ここでは環境200は、オーディオデバイスドライバ214によって駆動されるオーディオデバイスによって音声を再生することを可能にする。図2の太線は、O/S114が線220で定義される2つの論理的に独立したパーティションを有し、オーディオサブシステム116が、太線220〜224で範囲が規定される3つの論理的に独立した下位パーティションを有することを表すことを意図している。O/S114の2つの論理的に独立したパーティションは、線220で区切ったカーネル118とオーディオサブシステム116である。各パーティションは、ユーザモードでは各自のアドレス空間を有し、他の各々から、そして実行中の他のアプリケーションから完全に隔離されている。同様に、各下位パーティションも、ユーザモードではそれ自体のアドレス空間を有し、各他のパーティションと実行中の他のアプリケーションから完全に隔離される。3つの下位パーティションはすべてユーザモードではカーネル118の上位にあり、それ故いずれか1つの下位パーティションがクラッシュした場合、PC124は致命的なエラーを生じることなく作動し続ける。ここで使用する用語「コンテクスト」とは、プロセスに関連するメモリ中のアドレス空間と、そのプロセスに関連するデータ構造とを意味するものとし、オペレーティングシステムはプロセスを正しく実行するためにそのデータ構造を必要とする。
環境200では、実線の矢印で、オーディオサブシステム116を制御する命令の流れを示す。環境200中の破線の矢印は、オーディオデータストリームの流れを示す。オーディオサブシステム116中の3つの論理的に独立した下位パーティションは、プロセスコンテクスト270、サービスコンテクスト272、およびグローバルオーディオエンジン274である。グローバルオーディオエンジン274は、オーディオデバイスドライバ214によって駆動されるオーディオデバイスハードウェアと同期させることができる。同期させると、グローバルオーディオエンジン274は、適切な時点にループバッファ212にデータを注入(pump)する。同期したデータ注入により、オーディオデバイスドライバ214によって駆動されるオーディオデバイスは、適切な時点にループバッファ(looped buffer)212からオーディオデータストリームを読み出すことができる。
オーディオアプリケーション202がプロセスコンテクスト270で実行される。プロセスコンテクスト270は、オーディオサブシステム116で実行される各オーディオアプリケーション202につき別々のアドレス空間を有する。そのため、各オーディオアプリケーション202の実行は、別のオーディオアプリケーション(図示せず)に影響しない。プロセスコンテクスト270は、オーディオアプリケーション202のオーディオデータストリームの処理を行う。オーディオアプリケーション202により各ウェイクアップ(覚醒)期間に行われるオーディオデータ処理の量、速度、および頻度に起因して、オーディオアプリケーション202のソフトウェア中のエラーは頻繁に生じる可能性がある。
線220と222で区切ったプロセスコンテクスト270は、サービスコンテクスト272によってサービスまたは管理される。プロセスコンテクスト270は、一般的なアプリケーションプロセスコンテクストで実行されるクライアント(またはアプリケーション)空間を表す。オーディオアプリケーション202は、プロセスコンテクスト270のローカル効果エンジン(LFX)によって処理できるオーディオデータストリームを生成し、データストリームは入力バッファ208に出力される。入力バッファ208は、プロセスコンテクスト270とグローバルオーディオエンジン274のインタフェースに当たる。換言すると、入力バッファ208は、プロセスコンテクスト270で動作するローカルアプリケーションからの出力を格納する。図2には、プロセスコンテクスト270に1つのオーディオアプリケーション202しか示していないが、オーディオサブシステム116は、サブシステム116のプロセスコンテクスト270について複数のオーディオアプリケーションをサポートできることを意図している。
サービスコンテクスト272は、オーディオサブシステム116中に線222と224で範囲を規定する。サービスコンテクスト272は、PC124のブート時にO/S114がロードされた時、またはユーザがログオンまたはログオフする時に存在するオーディオサブシステム116の一コンポーネントである。サービスコンテクスト272は、オーディオサブシステム116のサービスへのアクセス権を得るためにどのオーディオアプリケーションも必要とするアプリケーションプログラムインタフェース(API)を含む。サービスコンテクスト272は、システムオーディオサービスで実行されるポリシー(指針)やシステムグラフサービスなどのグローバルなオーディオサービス空間を表す。サービスコンテクスト272は、プロセスコンテクスト270による処理がクラッシュした後も残存する。
グローバルオーディオエンジン274は、グローバルオーディオエンジン274がループバッファ212を通じて通信する対象のオーディオデバイスドライバ214によって駆動されるオーディオデバイス(図示せず。例えばサウンドカード)のプロキシ(代理)である。グローバルオーディオエンジン274は、各グローバルオーディオエンジンの処理空間につき1つのプロセスを表し、ここで各グローバルオーディオエンジンの処理空間は、どれか1つの特定のオーディオデバイスについてのすべてのオーディオデータを処理する役割を担う。また、オーディオサブシステム116のグローバルオーディオエンジン274は、それぞれがオーディオデータストリームを生成する個々のオーディオまたはマルチメディアアプリケーションへの複数の接続を混ぜ合わせることにより、単一のオーディオデバイスを仮想化することができる。そのように仮想化すると、グローバルオーディオエンジン274は、混成したオーディオデータストリームを、単一のオーディオデバイスへの1つのオーディオデータストリームとして与えることができる。このようなことなので、多数の同時に実行されるすべてのアプリケーションが、それらすべてが共有する同一のオーディオデバイスに全部出力を行うことができる。また、グローバルオーディオエンジン274は、PC124がメディアサーバとして使用されている時に、複数のオーディオデバイスが同時に機能することを可能にする。
入力バッファ208のオーディオデータストリームは、グローバルオーディオエンジン274への入力として使用することができる。グローバルオーディオエンジン274は、オーディオデバイスドライバ214によって駆動されるオーディオデバイスで出力されるオーディオデータストリームへのグローバル効果(GFX)を有するオーディオ処理オブジェクト(APO)を行う。このようなことなので、グローバルオーディオエンジン274は、入力バッファ208中のオーディオデータストリームをミキシングおよび/または処理することができ、ここで入力バッファ208は、複数のオーディオアプリケーションからのオーディオデータストリームを格納するために使用される。入力バッファ208中でオーディオデータストリームをミキシングおよび/または処理した結果、単一のミキシングされたオーディオデータストリームがループバッファ212に出力される。ループバッファ212は、オーディオデバイスドライバ214への入力のためにグローバルオーディオエンジン274とのインタフェースをとる。そのようなことなので、ループバッファ212はグローバルオーディオエンジン274からの出力を格納するために使用することができ、オーディオデバイスドライバ214への入力として使用することができる。
環境200のオーディオサブシステム116は、各グローバルオーディオエンジン274につき1つのプロセスを提供する。そして、各グローバルオーディオエンジン274は、対応するオーディオデバイスドライバとのインタフェースを介して、個々のオーディオデバイスについてのすべてのオーディオデータストリームの処理を順繰りに担当する。図2には1つのオーディオデバイスについて1つのオーディオデバイスドライバ214のみを示すが、オーディオサブシステム116は、複数のオーディオデバイスと各自のオーディオデバイスドライバをサポートできることを意図している。
前述の内容を参照すると、オーディオアプリケーション202、グローバルオーディオエンジン274によって実行されるGFX APO、およびオーディオデバイスドライバ214はそれぞれ、オーディオデバイスでオーディオデータストリームを再生するために環境200のオーディオサブシステム116によって使用される、サードパーティ(別企業)から提供可能なソフトウェアを表すことができる。したがって、環境200は、環境200のオーディオサブシステム116が常駐しているPC124を利用する顧客に対してオーディオソフトウェアを革新し、提供するサードパーティに場と市場を提供する。
図2に示す環境200では、O/S114のコンポーネントは、欠陥のあるサードパーティソフトウェアの実行によって引き起こされるアクセス違反の結果生じる問題から隔離されている。サンドボックスとしても知られるこの隔離は、オーディオサブシステム116の下位パーティション270および274におけるオーディオデータストリームが処理されているコンテクストを保存することによって達成される。一具体例では、グローバルオーディオエンジン274のコンテクストだけをサービスコンテクスト272によって保存する。例えばアクセス違反などによりグローバルオーディオエンジン274がクラッシュした場合、そのクラッシュは、プロセスコンテクスト270にもオーディオアプリケーション202にも影響を及ぼさない。オーディオアプリケーション202がクラッシュした場合、オーディオサブシステム116では何もその影響を受けない。サービスコンテクスト272がクラッシュした場合は、オーディオサブシステム116全体がクラッシュする。
グローバルオーディオエンジンの回復
グローバルオーディオエンジン274でGFX APOの処理中にアクセス違反などにより障害が発生した場合は、サービスコンテクスト272に保存されていたその処理のコンテクストを使用して処理を回復することができる。回復の後、サービスコンテクスト272に保存されているそのプロセスの保存されたコンテクストに従ってオーディオデータストリームの処理を再開することができる。オーディオサブシステム116によって行われるこのオーディオ要求へのサービスは、カーネル276からサンドボックスされている。このサンドボックスにより、システム全体にわたる障害が防止される。ローカルおよびグローバルの処理アプリケーションの障害などが原因でクラッシュあるいは障害が発生するアプリケーションは、自動的に回復して処理を再開することができる。
ローカルおよびグローバル両方の処理コンテクストの保存は、処理の機構をそれ自体のアドレス空間に入れることによって達成することができる。換言すると、プロセスコンテクスト270で生じるローカルオーディオエンジンの処理ルーチンのコンテクストを、グローバルオーディオエンジン274の処理ルーチンのコンテクストが保存されたアドレスとは別のアドレスに保存する。プロセスのアドレス空間は、そのプロセスのコンテクストが保存されるアドレスとは別である。処理の機構をコンテクストの機構のアドレスとは別のそれ自身のアドレス空間に入れると、その処理の機構がクラッシュする可能性がある一方で、コンテクストの機構は損なわれない状態を保つ。オーディオサブシステム116とは論理的に分離したカーネル118も損なわれないままである。そのため、クラッシュが起こった場合には、1つのオーディオアプリケーションについてのローカルな処理のみ、または1つのオーディオデバイスについてのグローバルな処理のみが終了することに限定される。クラッシュが発生してもPC124に対しては障害を引き起こさず、したがって、障害が発生した場合にはオーディオ再生の再開のために必要とされるシステムの再起動またはリブート(再起動)が回避される。クラッシュの後には、オーディオの再生を再開するために、PC124のO/S114を再起動するのではなく、処理の機構を再起動させることができる。一部の実施では、コンテクストを保存して、障害の発生した処理を再始動させることを意図している。
次いで、メディアプレーヤアプリケーションがオーディオデータを再生している実施の一例として、オーディオデータストリームのグローバルなオーディオの処理中に生じた障害からの回復の一例を説明する。このオーディオデータは、バグがあるサードパーティソフトウェアのオーディオ処理オブジェクト(APO)を使用してグローバルオーディオ効果(GFX)をかけられている。このGFX APOソフトウェアは、グローバルオーディオエンジン274でオーディオデータストリームを処理するデジタル信号処理アプリケーションである。環境200は、グローバルオーディオエンジン274で行われている処理の、コンテクストのサービスコンテクスト272への保存(例えば記憶)を調整する。そのため、グローバルオーディオエンジン274中のGFX APOのアドレス空間とデータ構造をサービスコンテクスト272に記憶する。最終的に、グローバルオーディオエンジン274で実行されるGFX APOのバグがアクセス違反を行う。このアクセス違反により、グローバルオーディオエンジン274中の処理が順にクラッシュを引き起こされる。このクラッシュの結果、オーディオデバイスドライバ214を介してオーディオデバイスで再生されていたオーディオがある時間にわたって停止する。この時間中、環境200は、クラッシュからの回復を調整する。
回復は、グローバルオーディオエンジン274中で行われていたGFX APOの処理のコンテクストを復元することによって実現される。コンテクストは、そのコンテクストが保存されていたサービスコンテクスト272から回復される。したがって、復元する保存されたコンテクストは、コンテクスト入力バッファ208のコンテクスト、グローバルオーディオエンジン274のGFX APOの処理のコンテクスト、およびループバッファ212のコンテクストである。サービスコンテクスト272から各コンテクストが復元されると、グローバルオーディオエンジン274のGFX APOの処理を継続することができる。コンテクストの復元後、オーディオデバイスドライバ214を介してオーディオデバイスでオーディオの再生を続行することができる。コンピューティングシステムを使用している顧客には、グローバルオーディオエンジン274中におけるGFX APOの保存されたコンテクストを回復することによりGFX APOを再ロードする時に短いオーディオの損失(例えば5秒間)を耳にする。次いで、オーディオは、オーディオが途切れたほぼその箇所に戻り、再開する。各オーディオデバイスのオーディオは、環境200により他のオーディオデバイスのオーディオから隔離されているので、他のオーディオデバイスはいずれも、GFX APOのクラッシュによりオーディオを損失しない。
クラッシュからの回復中には、グローバルオーディオエンジン274によるオーディオデータの処理により、オーディオデバイスドライバ214によってサービスされているオーディオデバイスへのオーディオストリーミングまたは当該デバイスからのオーディオストリーミングがすべて停止する。しかし、各オーディオアプリケーション202は、クラッシュが発生したことを気が付かない。オーディオデバイスのオーディオグラフ(audio graph)の構造を維持する役割を負うサービスコンテクスト272は別のサービスコンテクストで動作するので、予めコンテクストを保存していたことによりクラッシュの後にサービスコンテクスト272を使用してグローバルオーディオエンジン274のコンテクストを復元することができる。サービスコンテクスト272は、オーディオデバイスドライバ214の状態(すなわち開始したか、停止したか)と、異なるプロセスコンテクストを識別する下位パーティション間で使用される共有バッファ(例えば入力バッファ208、ループバッファ212)とをコントロールしている。サービスコンテクスト272は、各自の下位パーティションにある入力バッファ208、ループバッファ212、およびグローバルオーディオエンジン274を再接続する。オーディオアプリケーション202は、クラッシュにトランスペアレント(透過的)に(例えば、クラッシュあるいはアクセス違反が発生しなかったかのように)動作を続けることができる。
一実施では、サービスコンテクスト272は、任意のサードパーティGFX APOソフトウェアがクラッシュした回数を追跡し続けることができる。その回数が所定の閾値を超えると、ユーザに対する診断またはその他のダイアログをユーザインタフェース(UI)に出力することができる。また、そのGFX APOを使用不可にするか、ユーザに対して警告をUIに出力した後に再び使用可能にすることもできる。UIに診断を出力し、グローバルオーディオエンジン274でサードパーティのGFX APOソフトウェアの実行を再開しないなど、多数のアクセス違反とその後の回復については他の「階層(tiered)」方式を採用することができる。アクセス違反後の回復の階層方式は、欠陥のあるグローバル効果コンポーネントを急停止させ、使用を中止する際に過度の反復が回避される点で有用である可能性がある。
オーディオアプリケーション202に関しては、グローバルオーディオエンジン274によるオーディオデータの処理中に生じるクラッシュは、オーディオアプリケーション202の動作と実行に対して透過的である。むしろ、オーディオアプリケーション202は、プロセスコンテクスト270とグローバルオーディオエンジン274間のパーティション境界上に位置する入力バッファ208への出力のためにプロセスコンテクスト270への入力をし続ける。それから、サービスコンテクスト272を使用してコンテクストを復元し、グローバルオーディオエンジン274の自動的な回復を行うが、一方でオーディオアプリケーション202は、GFX APOのクラッシュに気づかないままでいる。
バッファ208、212はグローバルオーディオエンジン274の処理がクラッシュした後もなお生存しているので、オーディオデバイスドライバ214およびループバッファ212の状態を復元することができる。その処理がクラッシュした後にサービスコンテクスト272がグローバルオーディオエンジン274での処理をセットアップする際、サービスコンテクスト272は、バッファ208、212のアドレスを知らなければならない。これにより、新しいグローバルエンジン274がバッファ208、212に接続し、グローバルオーディオエンジン274のクラッシュもバッファ208、212のアドレスも知らないオーディオアプリケーション202からオーディオデータを受け取り続けられる。もっと正確に言えば、サービスコンテクスト272は、バッファ208、212をオブジェクトとして維持して、それによりサービスコンテクスト272がグローバルオーディオエンジン274を回復する時にそれらのバッファをグローバルオーディオエンジン274内に設定できるようにする。サービスコンテクスト272は、バッファ208、212を特定のオーディオデバイスについてのオーディオアプリケーション202からの入力として使用すべきことを指示する命令を、回復されたグローバルオーディオエンジン274に渡す。グローバルオーディオエンジン274がクラッシュした時、復元されたグローバルオーディオエンジン274は、サービスコンテクスト272からループバッファ212のアドレスを取得する。アクセス違反後、オーディオデバイスドライバ214はなお実行中であることが可能であり、ループバッファ212はなお存在することができる。
上述の説明は、サービスコンテクスト272にコンテクストを保存することにより、グローバルオーディオエンジン274中でクラッシュしたGFX APOから自動的に回復する例を提示したものである。サービスコンテクスト272にコンテクストを保存することにより、1つのみのオーディオデバイスへのオーディオが、PC124をリブート(再起動)するのに必要な時間に比べて短い時間のみしか途切れないように確実になる。ソフトウェア開発者は、ここに開示するオーディオサブシステム116で動作するGFX APOを提供することができ、そのGFX APOはなおクラッシュする可能性はあるが、すべてのオーディオデバイスを停止させる、あるいはOS114全体をクラッシュさせることはない。コンテクストがサービスコンテクスト272に保存されている限り、GFX APOはなお回復させることができる。オーディオサブシステム116は、各オーディオデバイス(例えば、サウンドカード、USBスピーカなど)に対応するグローバルオーディオエンジン274を備え、それによりグローバルオーディオエンジン274は、それ自身のコンテクストで動作し、サービスコンテクスト272内に保存されることができる。そのためオーディオサブシステム116はフォールト・トレランス(障害に強い機能)があり、クラッシュ/ハングアップ(フリーズ)に対して堅牢であり、グローバルオーディオエンジン274によるGFX APOでのオーディオデータの処理中に発生するクラッシュから回復することができる。
各オーディオデバイスは、環境200に見られるアーキテクチャに従って、独立したプロセスコンテクストに区分することができる。そのため、1つの特定のオーディオデバイスのためにグローバルオーディオエンジン274で処理することによりグローバルオーディオ効果として実行されるクラッシュが発生しやすい(crash-prone)ソフトウェアは、別のオーディオデバイスにためのグローバルオーディオエンジンでのオーディオデータの処理に影響を与えない。さらに、処理中のグローバル効果のコードにあるバグのためにグローバルオーディオエンジン274における処理がクラッシュした時には、自動的な回復を実現することができる。この回復が可能なのは、オーディオデバイスのグローバル状態がサービスコンテクスト272に保存されているからである。したがって、クラッシュしたGFX APOを回復させ、入力バッファ208に再接続させることができる。
一般に、グローバルオーディオエンジン274における処理中に発生したクラッシュからの回復は、あるオーディオデバイスへのオーディオデータストリームを生成するすべてのアプリケーションからのその対応するオーディオデバイスへのオーディオを停止させる。可能な限りクラッシュに対する耐性を持たせるために、各オーディオデバイスのグローバルオーディオエンジン274は、それ自身のコンテクストで動作することができ、そのコンテクストは、オーディオサブシステム116の論理的に別個のサービスコンテクスト272に保存されている。
図3に、グローバルオーディオエンジンで実行されるGFX APOによるアクセス違反から回復するプロセス300を示す。図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の動作を介してオーディオデバイスで音声が再開することができる。オーディオアプリケーション202は環境200により他のオーディオアプリケーションの環境から分離されているので、他のオーディオアプリケーションはクラッシュしない。
処理コンテクスト270によるLFX APOの処理中のクラッシュにより、オーディオアプリケーション202から入力バッファ208が切り離される。処理コンテクスト270の処理中に発生したクラッシュ後に残っているオーディオデータストリームがあれば、それを整理(clean up)する必要がある。クラッシュが発生すると、サービスコンテクスト272にそのクラッシュを通知することができる。そのように通知されると、サービスコンテクスト272は、クラッシュ後に残っているオーディオデータストリームを打ち切ることができる。残っているオーディオデータストリームを整理するために、サービスコンテクスト272は、プロセスコンテクスト270によるオーディオデータの処理のために作成されたリストを維持することができる。このリストをサービスコンテクスト272によって使用して、残っているオーディオデータストリームを持つプロセスコンテクスト270の終了(または他のそのようなプロセスコンテクストの終了)を待機するスレッドを中止(leave)することができる。
プロセスコンテクスト270による処理がクラッシュした場合、サービスコンテクスト272は、プロセスコンテクスト270による処理から開かれていたすべてのオーディオデータストリームを停止し、閉じることになる。オーディオアプリケーション202がクラッシュした場合は、オーディオデバイスドライバ214によって駆動されるオーディオデバイスも、グローバルオーディオエンジン274も影響を受けない。より正確にいえば、オーディオデータは、他のアプリケーションから、オーディオデバイスドライバ214によって駆動されるオーディオデバイス、またはグローバルオーディオエンジン274に依然としてストリーミングされることができる。ただし、プロセスコンテクスト270でのクラッシュにより、入力バッファ208はプロセスコンテクスト270から切り離される。そのため、入力バッファ208のオーディオデータを使用することができなくなる。プロセスコンテクスト270による処理がクラッシュしたことをサービスコンテクスト272が検出すると、入力バッファ208への各接続が閉じられるか、またはアロケーションが解消される。一実施では、オーディオアプリケーション202は自動的には回復されない。もっと正確に言えば、オーディオアプリケーション202は、必要な場合にはユーザにより再開させることができる。
図4に、プロセスコンテクスト270で実行中のローカル効果(LFX)オーディオ処理オブジェクト(APO)によるアクセス違反から回復するプロセス400を示す。図2および4を参照すると、プロセス400はブロック402で開始し、ここでオーディオデータストリーム上にLFXを生成するAPOが起動される。このオーディオデータストリームは、オーディオデバイスドライバ214によって駆動されるオーディオデバイスによって再生されるものである。ブロック404で、サービスコンテクスト272が、入力バッファ208およびループバッファ212のコンテクスト(例えば、アドレスとデータ構造)を保存する。ブロック406で、処理コンテクスト270でLFX APOの実行を開始する。ブロック408で、プロセスコンテクスト270が入力バッファ208に出力し、グローバルオーディオエンジン274が入力バッファ208から入力を得る。グローバルオーディオエンジン274は、入力バッファ208からのオーディオデータストリームをミキシングし、ミキシングしたオーディオデータストリームをループバッファ212に出力する。ブロック410で、LFX APOが終了するか、またはアクセス違反を起こす。ブロック412で、サービスコンテクスト272がその終了またはアクセス違反を検出し、入力バッファ208を削除する。
個々のコンピューティングシステムの各種のオペレーティングシステムは、特にそのオペレーティングシステムがオーディオデータのキャプチャ(捕まえること)と再生の組み合わせのためのオーディオサービスを提供し、そのオペレーティングシステムがマルチスレッド型かつマルチタスク方式であれば、前述の実施から利益を得ることができる。例示的な現在のオペレーティングシステムには、米国カリフォルニア州クパチーノ(Cupertino)所在のアップルコンピュータ社から提供されるMac(マック)OS(バージョン10およびそれ以下)、米国カリフォルニア州マウンテンビュー所在のBe社開発のBeOS、米国ワシントン州レドモンド所在のマイクロソフト社から提供されるWindows(ウインドウズ)(登録商標)OS、およびフリーソフトウエア(無料配布)のLinux(リナックス)(登録商標)OSが含まれる。さらに、本発明の開示からの利益は、アクセス違反を行うか、あるいはその他の原因でオペレーティングシステムの正常な動作を停止させる可能性のあるサードパーティプログラムを、非トラステッド(非承認)メディアアプリケーションに実行させることを許容する任意のマルチスレッド型オペレーティングシステムによって実現することができる。例えば、ここで検討するオペレーティングシステムは、オーディオ信号を変えるためにグローバルなコンテクストで使用できるオーディオ処理効果を行う非トラステッド(非承認)サードパーティメディアアプリケーションのために、拡張可能なメディア処理システムを備えている。特定のオーディオデバイスにサービスするオペレーティングシステムのオーディオシステムの一部をクラッシュさせることなく、不完全な書き方のコードあるいは悪意のあるコードを実行することができる。各種の実施で、クラッシュの回避は、プロセスなどの、オペレーティングシステム中の保護機構を使用して、オーディオサブシステムを論理的に分離したパーティションに区分することによって実現される。このプロセスは、不完全な書き方のコードによるオペレーティングシステムへの影響を最小に抑える。そのプロセスの実行のために、そのプロセスに結びついたアドレス空間およびデータの構造がオペレーティングシステムによって使用される。そのため、オペレーティングシステムは、メモリ保護の形、およびプロセス(またはスレッド)として表すことができるコンテクスト保護の形で、分離した処理コンテクスト中でそのプロセスを実行する。
例示的なコンピューティングシステム環境
図5に、ここに開示するリアルタイム通信アプリケーション(RTC)およびメディアプレーヤアプリケーション(MP)を含むアプリケーションを完全または部分的に実装することが可能なコンピューティング環境500の一例を示す。例示的コンピューティング環境500は、コンピューティングシステムの一例に過ぎず、このネットワークアーキテクチャの使用または機能性の範囲について何らの制限を示唆することを意図するものではない。また、コンピューティング環境500は、例示的コンピューティング環境500に図示する構成要素の1つまたは組み合わせに関連する依存性または必要性を有するものとも解釈すべきでない。
このコンピュータおよびネットワークアーキテクチャは、多数の他の汎用または特殊目的のコンピュータシステム環境または構成を用いて実施することができる。使用に適する可能性があるよく知られるコンピューティングシステム、環境、および/または構成の例には、これらに限定しないが、パーソナルコンピュータ、サーバコンピュータ、シンクライアント、シッククライアント、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ゲーム機、上述のシステムまたはデバイスを含む分散コンピューティング環境などがある。
アプリケーション(RTCおよびMPを含む)は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令に概ね即して説明することができる。一般に、プログラムモジュールには、特定タスクを行うか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。アプリケーション(RTCおよびMPを含む)は、通信ネットワークを通じてリンクされた遠隔の処理装置によってタスクを行う分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含むローカルおよびリモート両方のコンピュータ記憶媒体にプログラムモジュールを置くことができる。
コンピュータ環境500は、コンピュータ502の形態の汎用コンピューティングシステムを含む。コンピュータ502の構成要素には、これらに限定しないが、1つまたは複数のプロセッサあるいは処理装置504、システムメモリ506、およびプロセッサ504を含む各種のシステム構成要素をシステムメモリ506に結合するシステムバス508が含まれる。
システムバス508は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックポート、およびプロセッサバスまたはローカルバスを含む数タイプのバス構造の1つまたは複数を表す。このアーキテクチャの例には、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとも称されるPCI(Peripheral Component Interconnects)バスが含まれる。
コンピュータシステム502は通例各種のコンピュータ可読媒体を含む。その媒体は、コンピュータ502がアクセスすることができる任意の利用可能媒体でよく、揮発性および不揮発性の媒体、取り外し可能および取り外し不能媒体が含まれる。システムメモリ506は、ランダムアクセスメモリ(RAM)510などの揮発性メモリ、および/または読み取り専用メモリ(ROM)512などの不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ502内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム(BIOS)514は、ROM512に記憶される。RAM510は通例、処理装置504から即座にアクセス可能な、かつ/または現在処理装置504によって操作中のデータおよび/またはプログラムモジュールを含む。
コンピュータ502は、この他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。例として、図5には、取り外し不能、不揮発性の磁気媒体(図示せず)の読み書きを行うハードディスクドライブ516、取り外し可能、不揮発性の磁気ディスク520(例えば「フロッピー(登録商標)ディスク」)の読み書きを行う磁気ディスクドライブ518、およびCD−ROM、DVD−ROM、他の光学媒体などの取り外し可能、不揮発性の光ディスク524の読み書きを行う光ディスクドライブ522を示す。ハードディスクドライブ516、磁気ディスクドライブ518、および光ディスクドライブ522はそれぞれ、1つまたは複数のデータ媒体インタフェース525によってシステムバス508に接続される。あるいは、ハードディスクドライブ516、磁気ディスクドライブ518、および光ディスクドライブ522は、SCSIインタフェース(図示せず)によってシステムバス508に接続することもできる。
ドライブとそれに結びついたコンピュータ記憶媒体は、コンピュータ502のコンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性の記憶を提供する。この例では、ハードディスク516、取り外し可能磁気ディスク520、および取り外し可能光ディスク524を挙げるが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、CD−ROM、デジタル多用途ディスク(DVD)または他の光学ストレージ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、EEPROM(電気的に消去可能なプログラム可能読み取り専用メモリ)など、データを記憶することができ、コンピュータからのアクセスが可能な他のタイプのコンピュータ可読媒体もこの例示的コンピューティングシステムおよび環境を実施するために利用できることを理解されたい。
ハードディスク516、磁気ディスク520、光ディスク524、ROM512、および/またはRAM510には任意数のプログラムモジュールを記憶することができ、これには、例えばオペレーティングシステム526、1つまたは複数のアプリケーションプログラム528、他のプログラムモジュール530、およびプログラムデータ532が含まれる。これらオペレーティングシステム526、1つまたは複数のアプリケーションプログラム528、他のプログラムモジュール530、およびプログラムデータ532(またはこれらの何らかの組み合わせ)はそれぞれ、ここに開示するRTCおよび/またはMPの一実施形態を含むことができる。オペレーティングシステム526は、オーディオのキャプチャ(捕捉)および再生のサービスを含むことができ、メディアアプリケーションは、グローバルなオーディオ出力のシステム全体にわたるミキシング(混合)を信号処理のために得ることができる。
コンピュータシステム502は、通信媒体として識別される各種のコンピュータ可読媒体を含むことができる。通信媒体は通例は、搬送波または他の搬送機構などの変調データ信号にコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実施し、任意の情報伝達媒体を含む。
用語「変調データ信号」とは、信号中に情報を符号化する形でその特性の1つまたは複数を設定または変化させた信号を意味する。例として、通信媒体には、配線ネットワークまたは直接配線接続などの配線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれるが、これらに限定しない。上記の媒体のいずれの組み合わせもコンピュータ可読媒体の範囲に含めるべきである。
ユーザは、キーボード534、およびポインティングデバイス536(「マウス」など)などの入力装置を通じてコンピュータ502にコマンドと情報を入力することができる。マイクロフォン535を使用して、音声入力を渡すための音声認識処理を施すことが可能な音声コマンドを入力することができる。他の入力装置538(図示せず)としては、ジョイスティック、ゲームパッド、衛星受信アンテナ、シリアルポート、スキャナなどが考えられる。これらおよびその他の入力装置は、システムバス508に結合された入出力インタフェース540を通じて処理装置504に接続するが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス(USB)など他のインタフェースおよびバス構造によって接続することも可能である。
モニタ542または他タイプの表示装置も、ビデオインタフェース544などのインタフェースを介してシステムバス508に接続することができる。入出力インタフェース540には、サウンドカード、内蔵型(すなわちオンボードの)サウンドカードなどが含まれる。1つまたは複数のスピーカ537が、入出力インタフェース540と通信することができる。モニタ542以外に、他の出力周辺装置には、入出力インタフェース540を介してコンピュータ502に接続できるプリンタ546などの構成要素が含まれる。
コンピュータ502は、リモートコンピューティングデバイス548など1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作することができる。例として、リモートコンピューティングデバイス548は、パーソナルコンピュータ、携帯型コンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、あるいはその他の一般的なネットワークノードなどである。図には、リモートコンピューティングデバイス548は、コンピュータシステム502との関連でここに記載する要素および機能を多くまたはすべてを含むことができる携帯型コンピュータとして示している。
コンピュータ502とリモートコンピュータ548間の論理接続は、ローカルエリアネットワーク(LAN)550および一般的なワイドエリアネットワーク(WAN)552として図示している。このようなネットワーキング環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、およびインターネットに一般的に見られる。LANネットワーキング環境で実施する場合、コンピュータ502はネットワークインタフェースまたはアダプタ554を介してローカルネットワーク550に接続される。WANネットワーキング環境で使用する場合、コンピュータ502は通例、インターネットなどのワイドネットワーク552を通じて通信を確立するためのモデム556またはその他の手段を含む。モデム556はコンピュータ502の内部にあっても外部にあってもよく、入出力インタフェース540または他の適切な機構を介してシステムバス508に接続することができる。図のネットワーク接続は例示的なものであり、コンピュータ502と548の間に通信リンクを確立する他の手段を使用できることは理解されよう。
コンピューティング環境500で説明したようなネットワーク環境では、コンピュータ502との関連で図示したプログラムモジュールまたはその一部をリモートのメモリ記憶装置に記憶することができる。例えば、リモートアプリケーションプログラム558がリモートコンピュータ548のメモリ装置に常駐している。説明のために、アプリケーションプログラムおよびオペレーティングシステムなど他の実行可能プログラムコンポーネントは、ここでは別々のブロックとして図示しているが、そのようなプログラムおよびコンポーネントは、様々な時に、コンピュータシステム502の異なる記憶コンポーネントに常駐し、コンピュータのデータプロセッサによって実行されることは理解されよう。
本発明について、構造的特徴および/または方法論的ステップを具体的に説明したが、特許請求の範囲に規定する本発明は、必ずしもここに記載する特定の特徴またはステップに限定されないことを理解されたい。それらの特徴およびステップは、特許権を請求する本発明を実施する好ましい形態としてここに開示する。
複数の場所にいる複数のユーザに対してオーディオをサービスするメディアサーバとしてコンピューティングシステムを使用する環境における例示的なコンピューティングシステムを示す図である。 オーディオデバイス用のドライバと通信するオペレーティングシステムを有するコンピューティングシステムでオーディオアプリケーションを実行する実施例を示す図である。 オペレーティングシステムのオーディオサブシステムが、オーディオドライバによって駆動されるオーディオデバイスで再生されるオーディオデータストリームに対してグローバル効果(GFX)を生成するオーディオ処理オブジェクト(APO)を実行する要求に応え、GFX APOによるアクセス違反後に、予め保存しておいたコンテクストを使用してオーディオサブシステムの各種コンテクストを復元するプロセスを説明する流れ図である。 オペレーティングシステムのオーディオサブシステムが、オーディオドライバによって駆動されるオーディオデバイスで再生されるオーディオデータストリームに対してローカルオーディオ効果(LFX)を生成するオーディオ処理オブジェクト(APO)を実行する要求に応え、LFX APOによるアクセス違反後に、予め保存しておいたコンテクストを使用してオーディオサブシステムの各種コンテクストを復元するプロセスを説明する流れ図である。 ここに記載するコンピューティングシステム、ソフトウェアアプリケーション、方法、およびシステムを完全に、または部分的に実施することが可能なコンピューティング環境の一例を示す図である。
符号の説明
100、200 環境
102 オーディオデバイス
104 ドライバ
106 スピーカ(マイクロフォン)
112 出力部
114、526 オペレーティングシステム
116 オーディオサブシステム
118、276 カーネル
120 入力部
122 A−V部
124 PC
202 オーディオアプリケーション
208 入力バッファ
212 ループバッファ
214 デバイスドライバ
270 プロセスコンテクスト
272 サービスコンテクスト
274 オーディオエンジン
500 コンピューティング環境
502 コンピュータ
504 処理装置
506 システムメモリ
508 システムバス
510 RAM
512 ROM
514 BIOS
516 ハードディスクドライブ
518 磁気ディスクドライブ
520 磁気ディスク
522 光ディスクドライブ
524 光ディスク
525 データメディアインタフェース
528、558 アプリケーションプログラム
530 プログラムモジュール
532 プログラムデータ
534 キーボード
535 マイクロフォン(音声I/O)
536 ポインティングデバイス(マウス)
538 入力装置(他のデバイス)
540 入出力インタフェース
542 モニタ
544 ビデオインタフェース
546 プリンタ
548 リモートコンピューティングデバイス
550 LAN
552 WAN
554 ネットワークアダプタ
556 モデム
558 リモートアプリケーションプログラム

Claims (46)

  1. オーディオデバイスドライバによって駆動されるオーディオデバイスで出力されるオーディオデータストリームに対して行われるグローバルオーディオ効果(GFX)のためのオーディオ処理オブジェクト(APO)をオペレーティングシステムが実行することを求める要求を受け取るステップであって、
    前記オペレーティングシステムは、入力バッファと、ループバッファと、サービスコンテクストおよびグローバルオーディオエンジンを含む論理的に独立したコンテクストとを有するオーディオサブシステムを含むステップと、
    前記サービスコンテクストに、前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファのコンテクストを保存するステップと、
    前記グローバルオーディオエンジンを作動させて前記入力バッファ中のオーディオデータストリームに前記APOを用いてデジタル信号処理を行い、前記ループバッファ中にデジタル信号処理(DSP)オーディオデータストリームを形成するステップと、
    前記ループバッファ内の前記DSPオーディオデータストリームを、前記オーディオデバイスを駆動する前記オーディオデバイスドライバに入力するステップと、
    前記APOが終了するか、または前記APOによるアクセス違反が生じると、前記サービスコンテクストにそれぞれのために保存されている前記コンテクストを用いて、前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファそれぞれを復元するステップと、
    前記グローバルオーディオエンジンで前記APOの実行を随意的に再開するステップと
    を含むことを特徴とする方法。
  2. 前記APOの終了または前記APOによるアクセス違反は前記サービスコンテクストによって検出されることを特徴とする請求項1に記載の方法。
  3. 前記入力バッファのコンテクストは、前記入力バッファに結びついたアドレスおよびデータ構造を含み、
    前記グローバルオーディオエンジンのコンテクストは、前記グローバルオーディオエンジンに結びついたアドレスおよびデータ構造を含み、
    前記ループバッファのコンテクストは、前記ループバッファに結びついたアドレスおよびデータ構造を含むことを特徴とする請求項1に記載の方法。
  4. 前記APOによりアクセス違反が行なわれると、前記方法はさらに、
    前記APOによるアクセス違反の回数を表すカウンタを増分するステップと、
    前記カウンタが所定の上限を超えると、診断を出力し、前記グローバルオーディオエンジンにおける前記APOの実行の再開を禁止するステップと
    を含むことを特徴とする請求項1に記載の方法。
  5. 前記オペレーティングシステムはさらに、複数の前記グローバルオーディオエンジンに対応するための複数の前記ループバッファを含み、
    各前記グローバルオーディオエンジンは、対応する前記ループバッファに1つの前記DSPオーディオデータストリームを出力して、対応する前記オーディオデバイスを駆動する対応する前記オーディオデバイスドライバに入力を送ることを特徴とする請求項1に記載の方法。
  6. 前記オペレーティングシステムはさらに、対応する前記オーディオデバイスで再生(レンダー)されるオーディオデータストリームをそれぞれが含む複数の前記入力バッファを備え、
    各前記グローバルオーディオエンジンは1つの前記入力バッファに対応することを特徴とする請求項5に記載の方法。
  7. 各前記入力バッファは、少なくとも1つの前記オーディオデバイスについてのオーディオサービスを前記オペレーティングシステムに要求するオーディオアプリケーションから対応する前記オーディオデータストリームを受け取ることを特徴とする請求項6に記載の方法。
  8. 前記オーディオデバイスドライバによって駆動される前記オーディオデバイスで前記DSPオーディオデータストリームを再生(レンダー)するステップをさらに含むことを特徴とする請求項1に記載の方法。
  9. 前記オペレーティングシステムは、
    カーネルのパーティションと、
    前記サービスコンテクストの下位パーティション、および
    前記グローバルオーディオエンジンの下位パーティション
    を含む分離された複数の下位パーティションを有する前記オーディオサブシステムのパーティションと
    を含む複数の独立したパーティションを有するメモリ内にあることを特徴とする請求項1に記載の方法。
  10. 前記複数の独立したパーティションはさらに、APOを実行して前記オーディオデータストリームを前記入力バッファに出力するローカルエンジンを有する処理コンテクストのパーティションを含むことを特徴とする請求項9に記載の方法。
  11. 前記入力バッファの前記オーディオデータストリームは、前記オーディオデバイスでそれぞれが再生される複数のオーディオアプリケーションからのオーディオデータを含み、
    前記グローバルオーディオエンジンは、前記複数のオーディオアプリケーションからのオーディオデータをミキシングして、前記ループバッファ中に前記DSPオーディオデータストリームを形成することを特徴とする請求項10に記載の方法。
  12. 前記GFXは、残響・反響効果、オーディオ歪み効果、スピーカ補償効果、マルチバンドオーディオイコライザ効果からなるグループから選択されることを特徴とする請求項1に記載の方法。
  13. 前記コンピューティングシステムによって実行されるときに請求項1に記載の方法を実施するコンピュータ可読命令を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
  14. オーディオデバイスドライバによって駆動されるオーディオデバイスで出力されるオーディオデータストリームに対して行われるグローバルオーディオ効果(GFX)のためのオーディオ処理オブジェクト(APO)をオペレーティングシステムが実行することを求める要求をオーディオアプリケーションから受け取るステップであって、前記オペレーティングシステムは、
    カーネルと、
    入力バッファおよびループバッファを有するオーディオサブシステムと
    を含むメモリ中に個別のパーティションを有し、
    前記メモリ中の前記オーディオサブシステムのパーティションは、
    サービスコンテクストと、
    前記APOを実行するグローバルオーディオエンジンと
    を含む個々別々の下位パーティションを有するステップと、
    前記入力バッファ、前記ループバッファ、および前記グローバルオーディオエンジンに結びついたアドレスおよびデータ構造を前記サービスコンテクストに保存するステップと、
    前記グローバルオーディオエンジンを作動させて
    前記入力バッファ中のオーディオデータストリームに前記APOでデジタル信号処理を行って、デジタル信号処理(DSP)オーディオデータストリームを形成し、
    前記DSPオーディオデータストリームを前記ループバッファに出力するステップと、
    前記DSPオーディオデータストリームを再生する前記オーディオデバイスを駆動する前記オーディオデバイスドライバに前記ループバッファ中の前記DSPオーディオデータストリームを入力するステップと、
    前記APOが終了するかまたは前記APOによりアクセス違反が行われると、
    前記サービスコンテクストに保存されている前記入力バッファのアドレスおよびデータ構造を用いて前記入力バッファを復元するステップと、
    前記サービスコンテクストに保存されている前記グローバルオーディオエンジンのアドレスおよびデータ構造を用いて前記グローバルオーディオエンジンを復元するステップと、
    前記サービスコンテクストに保存されている前記ループバッファのアドレスおよびデータ構造を用いて前記ループバッファを復元するステップと、
    前記グローバルオーディオエンジンで前記APOの実行を随意的に再開するステップと
    を含むことを特徴とする方法。
  15. 前記APOの終了または前記APOによるアクセス違反は前記サービスコンテクストによって検出されることを特徴とする請求項14に記載の方法。
  16. 前記メモリ中の前記オーディオサブシステムのパーティションはさらに、APOを実行して前記オーディオデータストリームを前記入力バッファに出力するローカルエンジンを有する処理コンテクストのための独立した下位パーティションを含むことを特徴とする請求項14に記載の方法。
  17. 前記入力バッファ内の前記オーディオデータストリームは、前記オーディオデバイスでそのそれぞれが再生される複数のオーディオアプリケーションからのオーディオデータを含み、
    前記グローバルオーディオエンジンは、前記複数のオーディオアプリケーションからの前記オーディオデータをミキシングして、前記ループバッファ中に前記DSPオーディオデータストリームを形成することを特徴とする請求項16に記載の方法。
  18. 前記入力バッファは、前記プロセスコンテクストのパーティションと前記グローバルオーディオエンジンのパーティションとで共有される前記メモリ中の前記オーディオサブシステムのパーティション内に論理的に位置し、
    前記ループバッファは、前記グローバルオーディオエンジンのパーティションと前記カーネルのパーティションとで共有される前記メモリ中の前記オーディオサブシステムのパーティションの内に論理的に位置していることを特徴とする請求項14に記載の方法。
  19. 前記APOによりアクセス違反が行なわれると、前記方法はさらに、
    前記APOによるアクセス違反の回数を表すカウンタを増分するステップと、
    前記カウンタが所定の上限を超えると、診断を出力し、前記グローバルオーディオエンジンにおける前記APOの実行の再開を禁止するステップと
    を含むことを特徴とする請求項14に記載の方法。
  20. 前記オペレーティングシステムはさらに、対応する複数の前記グローバルオーディオエンジンのための複数の前記ループバッファを含み、
    各前記グローバルオーディオエンジンは、対応する前記ループバッファに1つの前記DSPオーディオデータストリームを出力して、対応する前記オーディオデバイスを駆動する対応する前記オーディオデバイスドライバに入力を送ることを特徴とする請求項14に記載の方法。
  21. 前記オペレーティングシステムはさらに、対応する前記オーディオデバイスにより再生されるオーディオデータストリームをそれぞれが含む複数の前記入力バッファを備え、
    各前記グローバルオーディオエンジンは、1つの前記入力バッファに対応することを特徴とする請求項20に記載の方法。
  22. 各前記入力バッファは、少なくとも1つの前記オーディオデバイスについてのオーディオサービスを前記オペレーティングシステムに要求する対応する前記オーディオアプリケーションから対応する前記オーディオデータストリームを受け取ることを特徴とする請求項21に記載の方法。
  23. コンピューティングシステムによって実行されるときに請求項14に記載の方法を実施するコンピュータ可読命令を有することを特徴とする1つまたは複数のコンピュータ可読媒体。
  24. 論理的に独立したパーティションにあるカーネルとオーディオサブシステムとを含むコンピュータ実行可能オペレーティングシステムであって、前記オーディオサブシステムは、入力バッファと、オーディオデバイスを駆動するデバイスドライバと通信するループバッファとを有し、かつ前記オーディオサブシステムは、
    前記入力バッファ中のオーディオデータストリームに行われるグローバルオーディオ効果(GFX)のためのオーディオ処理オブジェクト(APO)を実行して、前記デバイスドライバによって駆動される前記オーディオデバイスで再生される前記ループバッファ中のオーディオデータストリームを形成するグローバルオーディオエンジンと、
    前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファのコンテクストを保存するサービスコンテクストと、
    を含む論理的に独立した複数の下位パーティションをも含み、
    前記グローバルオーディオエンジンで実行中の前記APOが終了するか、または前記APOによりアクセス違反が行われると、
    前記サービスコンテクストにそれぞれのために保存されている前記コンテクストを用いて、前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファのそれぞれを復元し、
    前記グローバルオーディオエンジンにおける前記APOの実行が随意的に再開することを特徴とするコンピュータ実行可能オペレーティングシステム。
  25. 前記入力バッファのコンテクストは、前記入力バッファに結びついたアドレスおよびデータ構造を含み、
    前記グローバルオーディオエンジンのコンテクストは、前記グローバルオーディオエンジンに結びついたアドレスおよびデータ構造を含み、
    前記ループバッファのコンテクストは、前記ループバッファに結びついたアドレスおよびデータ構造を含むことを特徴とする請求項24に記載のコンピュータ実行可能オペレーティングシステム。
  26. 前記APOによりアクセス違反が行なわれると、
    前記APOによるアクセス違反の回数を表すカウンタが増分され、
    前記カウンタが所定の上限を超えると、診断が出力され、前記グローバルオーディオエンジンにおいて前記APOの実行が禁止されることを特徴とする請求項24に記載のコンピュータ実行可能オペレーティングシステム。
  27. 前記オペレーティングシステムはさらに、対応する複数の前記グローバルオーディオエンジンのための複数の前記ループバッファを含み、
    各前記グローバルオーディオエンジンは、対応する前記ループバッファに1つの前記DSPオーディオデータストリームを出力して、対応する前記オーディオデバイスを駆動する対応する前記オーディオデバイスドライバに入力を送ることを特徴とする請求項24に記載のコンピュータ実行可能オペレーティングシステム。
  28. 前記オペレーティングシステムはさらに、対応する前記オーディオデバイスで再生されるオーディオデータストリームをそれぞれが含む複数の前記入力バッファを備え、
    各前記グローバルオーディオエンジンは1つの前記入力バッファに対応することを特徴とする請求項27に記載のコンピュータ実行可能オペレーティングシステム。
  29. 各前記入力バッファは、少なくとも1つの前記オーディオデバイスについてのオーディオサービスを前記オペレーティングシステムに要求するオーディオアプリケーションから対応する前記オーディオデータストリームを受け取ることを特徴とする請求項28に記載のコンピュータ実行可能オペレーティングシステム。
  30. 前記複数の論理的に独立したパーティションはさらに、APOを実行して前記入力バッファにオーディオデータストリームを出力するローカルエンジンを有する処理コンテクストのためのパーティションを含むことを特徴とする請求項24に記載のコンピュータ実行可能オペレーティングシステム。
  31. 前記入力バッファは、前記オーディオデバイスでそのそれぞれが再生される複数のオーディオアプリケーションからのオーディオデータを格納し、
    前記グローバルオーディオエンジンは、前記複数のオーディオアプリケーションからのオーディオデータをミキシングして、前記ループバッファ内にオーディオデータを形成することを特徴とする請求項24に記載のコンピュータ実行可能オペレーティングシステム。
  32. オペレーティングシステムのカーネルと、
    前記オペレーティングシステムのオーディオサブシステムと
    を含む論理的に独立した複数のパーティションを格納する手段であって、前記オーディオサブシステムは、
    入力バッファ、およびオーディオを再生する手段を駆動する手段と通信するループバッファと
    サービスコンテクストおよびグローバルオーディオエンジンを含む論理的に独立した複数の下位パーティションと
    を含む手段と;
    前記オーディオサブシステムを実行させて、
    前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファのコンテクストを前記サービスコンテクストに保存し、
    前記入力バッファ内のオーディオデータストリームにグローバルオーディオ効果(GFX)を生成するオーディオ処理オブジェクト(APO)を実行して、前記オーディオデバイスを駆動する手段によって駆動されるオーディオを再生する手段で再生される前記ループバッファ中のオーディオデータストリームを形成する手段と;
    前記グローバルオーディオエンジンで実行中の前記APOによりアクセス違反が行なわれると、
    前記サービスコンテクストにそれぞれのために個別に保存されている前記コンテクストを使用して前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファのそれぞれを復元し、
    前記グローバルオーディオエンジンにおいて前記APOの実行を再開する手段と
    を含むことを特徴とする装置。
  33. 前記入力バッファのコンテクストは、前記入力バッファに結びついたアドレスおよびデータ構造を含み、
    前記グローバルオーディオエンジンのコンテクストは、前記グローバルオーディオエンジンに結びついたアドレスおよびデータ構造を含み、
    前記ループバッファのコンテクストは、前記ループバッファに結びついたアドレスおよびデータ構造を含むことを特徴とする請求項32に記載の装置。
  34. 前記APOによりアクセス違反が行なわれると、前記再開する手段は、
    前記APOによるアクセス違反の回数を表すカウンタを増分し、
    前記カウンタが所定の上限を超えると、診断を出力し、前記グローバルオーディオエンジンにおける前記APOの実行の再開を禁止する
    ことを特徴とする請求項32に記載の装置。
  35. 前記オーディオサブシステムはさらに、対応する複数の前記グローバルオーディオエンジンのための複数の前記ループバッファを含み、
    各前記グローバルオーディオエンジンは、対応する前記ループバッファに1つの前記オーディオデータストリームを出力して、対応する前記オーディオを再生する手段を駆動する対応する前記手段に入力を送ることを特徴とする請求項32に記載の装置。
  36. 前記オーディオサブシステムはさらに、対応する前記オーディオを再生する手段で再生されるオーディオデータストリームをそのそれぞれが含む複数の前記入力バッファを備え、
    各前記グローバルオーディオエンジンは1つの前記入力バッファに対応することを特徴とする請求項35に記載の装置。
  37. 各前記入力バッファは、少なくとも1つの前記オーディオを再生する手段についてのオーディオサービスを前記オペレーティングシステムに要求するオーディオアプリケーションから対応する前記オーディオデータストリームを受け取ることを特徴とする請求項36に記載の装置。
  38. 前駆オーディオサブシステムの前記複数の論理的に独立した下位パーティションはさらに、APOを実行して前記オーディオデータストリームを前記入力バッファに出力するローカルエンジンを有する処理コンテクストのための下位パーティションを含むことを特徴とする請求項32に記載の装置。
  39. 前記入力バッファ内の前記オーディオデータストリームは、前記オーディオを再生する手段でそのそれぞれが再生される複数のオーディオアプリケーションからのオーディオデータを含み、
    前記グローバルオーディオエンジンは、前記複数のオーディオアプリケーションからのオーディオデータをミキシングして、前記ループバッファ中に前記オーディオデータストリームを形成することを特徴とする請求項38に記載の装置。
  40. 第1のオーディオデータストリームを生成するオーディオアプリケーションを実行し、かつカーネルのためのパーティションと、論理的に独立した下位パーティションを有するオーディオサブシステムのためのパーティションとに論理的に分離されたオペレーティングシステムを実行するプロセッサを含み、
    前記オーディオサブシステムを用いて前記第1のオーディオデータストリームを処理するプロセスが、前記プロセスを第2の前記下位パーティションで実行する前に第1の前記下位パーティションに保存されたコンテクストを有し、
    それにより前記プロセスがアクセス違反を犯すと、前記第1の下位パーティションから前記プロセスのコンテクストを復元することにより前記プロセスを回復することを特徴とするコンピューティングシステム。
  41. 前記プロセスの前記保存されたコンテクストは、前記オーディオサブシステム内で前記保存されたコンテクストを復元することにより前記プロセスを回復するのに十分なアドレスおよびデータ構造の情報を含むことを特徴とする請求項40に記載のコンピューティングシステム。
  42. 前記プロセッサは、前記第1のオーディオデータストリームが出力されるところの第1のオーディオデバイスとは異なる第2のオーディオデバイスに出力される第2のオーディオデータストリームを生成する第2のオーディオアプリケーションを実行し、
    前記プロセスの前記アクセス違反および回復は、
    前記第2のオーディオアプリケーションの実行にも、
    前記第2のオーディオデバイスに出力される前記第2のオーディオデータストリームにも
    影響しないことを特徴とする請求項40に記載のコンピューティングシステム。
  43. オペレーティングシステムおよび複数のオーディオアプリケーションを実行するプロセッサと、
    前記複数のオーディオアプリケーションと同時に使用して、前記オペレーティングシステムへ伝達するオーディオデータを個別に生成する複数のマルチメディア読み取りデバイスと、
    個々のオーディオデバイスドライバによって駆動され、前記オペレーティングシステムへ伝達された前記オーディオデータを再生する複数のオーディオデバイスと、
    前記複数のオーディオアプリケーションおよび前記オペレーティングシステムのための記憶機構とを備え、
    前記オペレーティングシステムが、カーネルとオーディオサブシステムとを含む複数の論理的に独立したパーティションを有し、前記オーディオサブシステムが、
    プロセスコンテクストと、
    サービスコンテクストと、
    グローバルオーディオエンジンと
    を含む複数の論理的に独立した下位パーティションと、
    前記プロセスコンテクストおよび前記グローバルオーディオエンジンと通信する入力バッファと、
    前記オーディオデバイスの1つを駆動する前記オーディオデバイスドライバの1つと通信するループバッファと
    を含み、
    前記プロセッサが、前記オペレーティングシステムと前記オーディオアプリケーションの1つとを実行して、
    前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファのコンテクストを前記サービスコンテクストに保存し、
    オーディオデータストリームとして前記入力バッファに出力するために前記プロセスコンテクストに入力するオーディオデータを1つの前記オーディオアプリケーションから生成し、
    前記入力バッファ内の前記オーディオデータストリームにグローバルオーディオ効果(GFX)を生成するオーディオ処理オブジェクト(APO)を実行して、前記オーディオデバイスドライバの1つによって駆動されるオーディオデバイスの1つで再生されるオーディオデータストリームを前記ループバッファ内に形成し、
    前記グローバルオーディオエンジンで実行中の前記APOによりアクセス違反が行なわれると、
    前記サービスコンテクストにそのそれぞれのために個別に保存されているコンテクストを用いて、前記入力バッファ、前記グローバルオーディオエンジン、および前記ループバッファそれぞれを復元し、
    前記グローバルオーディオエンジンにおいて前記APOの実行を再開することを特徴とするコンピューティングシステム。
  44. カーネルのパーティションと、論理的に独立した下位パーティションを有するオーディオサブシステムのパーティションとに論理的に分離されたオペレーティングシステムを実行することにより、第1のオーディオデータストリーミングを生成することをオーディオアプリケーションに求める処理をする第1のコードセグメントと、
    第1の前記下位パーティションに、前記第1のオーディオデータストリームを処理するプロセスのためのコンテクストを保存する第2のコードセグメントと、
    第2の前記下位パーティションで前記プロセスを用いて前記第1のオーディオデータストリームを処理する第3のコードセグメントと
    を含み、
    前記プロセスがアクセス違反を犯すと、前記オーディオサブシステム内に前記第1の下位パーティションから前記保存されたコンテクストを復元することにより、前記プロセスを回復することを特徴とするコンピュータ可読媒体。
  45. 前記プロセスのための前記保存されたコンテクストは、前記オーディオサブシステム内に前記保存されたコンテクストを復元することにより前記プロセスを回復するのに十分なアドレスおよびデータ構造の情報を含むことを特徴とする請求項44に記載のコンピュータ可読媒体。
  46. 前記オペレーティングシステムを実行することにより第2のオーディオデータストリームを生成することを求めるオーディオアプリケーションに要求することを処理する第4のコードセグメントをさらに含み、前記第2のオーディオデータストリームは、第1のオーディオデータストリームが出力される第1のオーディオデバイスとは異なる第2のオーディオデバイスに出力されるように命令され、前記プロセスの前記アクセス違反および回復は、
    前記第2のオーディオアプリケーションの実行による前記第2のオーディオデータストリームの生成にも
    前記第2のオーディオデバイスに出力される前記第2のオーディオデータストリームにも
    影響しないことを特徴とする請求項44に記載のコンピュータ可読媒体。
JP2004083613A 2003-03-20 2004-03-22 オーディオ処理オブジェクトによるアクセス違反時の障害回復 Expired - Fee Related JP4589645B2 (ja)

Applications Claiming Priority (1)

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

Publications (3)

Publication Number Publication Date
JP2004288196A true JP2004288196A (ja) 2004-10-14
JP2004288196A5 JP2004288196A5 (ja) 2007-04-19
JP4589645B2 JP4589645B2 (ja) 2010-12-01

Family

ID=32850521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004083613A Expired - Fee Related JP4589645B2 (ja) 2003-03-20 2004-03-22 オーディオ処理オブジェクトによるアクセス違反時の障害回復

Country Status (8)

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

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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895814A (ja) * 1994-09-08 1996-04-12 At & T Corp ソフトウエアの更新のための装置及び方法
WO1998000780A1 (en) * 1996-06-28 1998-01-08 New Moon Software, Inc. Client-server technique for distributed computing
US5971851A (en) * 1996-12-27 1999-10-26 Silicon Gaming, Inc. Method and apparatus for managing faults and exceptions
EP0965923A2 (en) * 1998-06-19 1999-12-22 Intellution Inc. System and method for secure software component containment
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

Family Cites Families (3)

* 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
US6490722B1 (en) 1999-03-30 2002-12-03 Tivo Inc. Software installation and recovery system
US7174194B2 (en) * 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0895814A (ja) * 1994-09-08 1996-04-12 At & T Corp ソフトウエアの更新のための装置及び方法
WO1998000780A1 (en) * 1996-06-28 1998-01-08 New Moon Software, Inc. Client-server 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
EP0965923A2 (en) * 1998-06-19 1999-12-22 Intellution Inc. System and method for secure software component containment

Also Published As

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

Similar Documents

Publication Publication Date Title
US8606950B2 (en) System and method for transparently processing multimedia data
US9146760B2 (en) Fast booting a computing device to a specialized experience
US8302089B2 (en) Rebootless display driver upgrades
KR20110007114A (ko) 원격 세션에서의 멀티미디어 동작을 관리하는 시스템 및 방법
WO2020221190A1 (zh) 小程序状态同步方法、设备和计算机存储介质
WO2019127114A1 (zh) 一种虚拟机的音频播放方法及其装置、移动终端
JP4589645B2 (ja) オーディオ処理オブジェクトによるアクセス違反時の障害回復
US11157233B1 (en) Application subset selective audio capture
WO2019071678A1 (zh) 一种直播的方法和装置
US7228526B2 (en) Application imaging infrastructure
US8010965B2 (en) Automatic task performance as scheduled using embedded secondary processor
US7783987B2 (en) User experience enforcement
US7571016B2 (en) Crossfade of media playback between different media processes
CN120011106A (zh) 中间件通信方法、装置、设备及存储介质
CN118101629B (zh) 一种音频直播及音频处理方法、装置及存储介质
US20080124041A1 (en) Adding video effects for video enabled applications
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
CN117472321A (zh) 音频处理方法、装置、存储介质及电子设备
CN112015443A (zh) 电子设备的升级方法、装置、电子设备和存储介质
CN1317115A (zh) 应用程序崩溃后向视频堆栈的接入保持
US20250251900A1 (en) Offloading a cpu-based audio pump and processing to an audio co-processor
TW202414207A (zh) 控制系統及控制方法
Saint-Hilaire Extreme Programming with Intel vPro Technology: Pushing the Limits with Innovative Software.
KR20110006979A (ko) 터미널 서비스의 가속화를 위한 멀티미디어 재생 분산처리 시스템 및 그 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070306

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100528

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100903

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100910

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130917

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees