WASAPIWindows Audio Session API、通称 WASAPI(ワサピ)はアプリ-オーディオデバイス間のストリームを管理する低レベルWin32 APIである[1]。Core Audio APIsの1つ。 概要オーディオを扱うアプリケーションはマイク・スピーカー等の"オーディオエンドポイントデバイス"と連携して機能する。デバイスはOSによって管理されており、これらデバイスとアプリケーションを繋ぐオーディオストリームの管理がWASAPIの役割である。 例えばスピーカー出力を行うためにはWASAPIを用いて"エンドポイントバッファ"へ音声データを書きこめばよい[2]。APIコールを受けたOSはAudioEngineによるミキシング、デバイスドライバを介したスピーカー制御をおこない、実際にスピーカーから音声が出力される。 WASAPIは基本的にどのようなサウンドデバイスでも利用することができるが、使用するアプリケーションがWASAPIに対応している必要がある。 動作モード排他モード(exclusive)OS標準のミキサーや各種エフェクト(APO)処理を一切介さずにエンドポイントバッファ上のオーディオサンプルをアプリケーションが直接読み書きできる構造となっている。 共有モード他のアプリケーションの出力と共にOS標準のミキサーや各種エフェクト(APO)を介して再生されるため、複数の音声再生・録音アプリケーションを同時に使用する場合に適している。 利用WASAPIはWin32 APIすなわちOSに対するシステムコールである。Windows OSは WASAPIの利用ではまずストリームの準備を次のようにおこなう。
オーディオI/Oの場合、開始に引き続いて、必要に応じてパケット単位のread/writeを次のようにおこなう。
このように、WASAPIはクライアントとエンドポイントバッファ間のデータ転送を簡潔に記述できる。高レベルAPIと異なりバッファ取得を明示的に都度おこなうため、read/writeされるデータ量や転送頻度の調整を柔軟にプログラムできる。また初期化時の設定により排他モード/共有モード、バッファ全長、デバイス動作周期など、Windows OSが提供するストリーム管理の様々な側面を調整できる。 対応ソフトウェア以下はWASAPI対応ソフトウェアの一例である。 DTMソフトウェア波形編集ソフトウェアメディアプレーヤー
歴史Core Audio APIの一部としてMicrosoft Windows Vistaにて導入された。それ以降も機能が追加されている(例: IAudioClient3)。 脚注
関連項目
外部リンク |