(Translated by https://www.hiragana.jp/)
WASAPI - Wikipedia

Windows 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はAudioclient.hAudiopolicy.h定義ていぎされるWASAPIインターフェースをかいしてOSのオーディオストリーム管理かんり公開こうかいすることで[3]、アプリケーションによるていレイテンシの音声おんせい入出力にゅうしゅつりょく可能かのうにしている。アプリケーションはWASAPIをすことでI/Oストリームを利用りようできる。

WASAPIの利用りようではまずストリームの準備じゅんびつぎのようにおこなう。

オーディオI/Oの場合ばあい開始かいしつづいて、必要ひつようおうじてパケット単位たんいのread/writeをつぎのようにおこなう。

このように、WASAPIはクライアントとエンドポイントバッファあいだのデータ転送てんそう簡潔かんけつ記述きじゅつできる。こうレベルAPIとことなりバッファ取得しゅとく明示めいじてき都度つどおこなうため、read/writeされるデータりょう転送てんそう頻度ひんど調整ちょうせい柔軟じゅうなんにプログラムできる。また初期しょき設定せっていにより排他はいたモード/共有きょうゆうモード、バッファ全長ぜんちょう、デバイス動作どうさ周期しゅうきなど、Windows OSが提供ていきょうするストリーム管理かんり様々さまざま側面そくめん調整ちょうせいできる。

対応たいおうソフトウェア

編集へんしゅう

以下いかはWASAPI対応たいおうソフトウェアのいちれいである。

DTMソフトウェア

編集へんしゅう

波形はけい編集へんしゅうソフトウェア

編集へんしゅう

メディアプレーヤー

編集へんしゅう
  • Media Player Classic
  • foobar2000 (バージョン1.6から共有きょうゆうモードでの出力しゅつりょく既定きてい。バージョン1.6.7からコンポーネントを必要ひつようとせず単体たんたいでの排他はいたモードでの出力しゅつりょく対応たいおう[6]
  • Music Center for PC
  • x-アプリ
  • AIMP
  • KbMedia Player
  • PowerDVD(PowerDVD 14シリーズ以降いこうよりたいおう
  • MusicBee
  • XMPlay(WASAPI output plugin の追加ついか必要ひつよう

Core Audio APIの一部いちぶとしてMicrosoft Windows Vistaにて導入どうにゅうされた。それ以降いこう機能きのう追加ついかされている(れい: IAudioClient3)。

脚注きゃくちゅう

編集へんしゅう
  1. ^ "The Windows Audio Session API (WASAPI) enables client applications to manage the flow of audio data between the application and an audio endpoint device." Windows Developer. About WASAPI.
  2. ^ "To play an audio stream through a rendering endpoint device, an application periodically writes audio data to a rendering endpoint buffer. The audio engine mixes the streams from the various applications." Windows Developer. About WASAPI.
  3. ^ "Header files Audioclient.h and Audiopolicy.h define the WASAPI interfaces." About WASAPI. Windows App Development.
  4. ^ "the client can call the IAudioClient::GetCurrentPadding method to get the total amount of captured data that is available in the buffer." Capturing a Stream. Windows App Development.
  5. ^ "For a rendering buffer, the padding value that is reported by the IAudioClient::GetCurrentPadding method represents the amount of rendering data that is queued up to play in the buffer." Rendering a Stream. Windows App Development.
  6. ^ foobar2000: Change Log”. 2022ねん7がつ15にち閲覧えつらん

関連かんれん項目こうもく

編集へんしゅう

外部がいぶリンク

編集へんしゅう