Core Audio (Windows)
From Wikipedia, the free encyclopedia
概要
Core Audioは、DirectSound、DirectMusic、WindowsマルチメディアAPI (waveXxx関数、mixerXxx関数) およびMedia Foundationといった高レベルAPIの基盤を提供する、COMベースの新しいオーディオAPIであり、ヘッドフォンやマイクといったオーディオデバイスにアクセスする手段を提供する。
導入されたCore Audio APIsは以下の4つのWin32 APIである[3]。
- MMDevice API: 現在[いつ?]非推奨、代替は
Windows.Devices.Enumeration[4] - WASAPI
- DeviceTopology API: 現在[いつ?]非推奨
- EndpointVolume API: 現在[いつ?]非推奨
Core AudioはWindowsのユーザーモードのシステムコンポーネントであるAudioses.dllおよびMmdevapi.dllに実装されている[5]。
またユーザーモードを基礎とするオーディオサブシステムが追加された[6]。オーディオストリームが共有モード(shared mode)で動作する場合はWindows audio engineへのルーティングが行なわれ、全ストリームがミックスされてエンドポイントデバイスに渡される。逆に排他モード(exclusive mode)で動作する場合はaudio engineをバイパスしてアプリケーションとエンドポイントが1:1でデータ転送を行なう[7]。Audio engineの実体はユーザーモードで動作する特殊なプロセス(Audiodg.exe)である[8][9]。
背景
Windows XPではオーディオパイプラインの大半がカーネルモードに存在していたが、WASAPIではこれをユーザーモードに移動した。これによって例えばエフェクト処理で致命的な問題が発生した場合、Windows XPではOSがブルースクリーンとなるが、Windows Vista以降ではオーディオサービス (audiosrv) やオーディオエンジン (audiodg) が異常終了するだけでOS全体には影響がないようになっている。
Windowsオーディオデバイスグラフアイソレーション
Windows Audio
Windows Audio はオーディオを司るWindowsサービスである[11]。実体は AudioSrv.dll であり、専用の Svchost.exe を介して実行される[12]。audiodg.exe を介してAudioEngineを管理しており[13]、このサービスをオフにすると主要な音声機能がストップする。