A WASAPI ismertetése
A Windows Audio Session API (WASAPI) lehetővé teszi az ügyfélalkalmazások számára a hangadatok áramlásának kezelését az alkalmazás és egy hangvégpont-eszköz között.
Az Audioclient.h és az Audiopolicy.h fejlécfájlok határozzák meg a WASAPI-interfészeket.
Minden audiofolyam egy hangfolyam munkamenetneka tagja. A munkamenet absztrakciója révén a WASAPI-ügyfél azonosíthatja a hangstreameket a kapcsolódó hangstreamek csoportjának tagjaként. A rendszer egyetlen egységként kezelheti a munkamenet összes adatfolyamát.
A hangmotor a felhasználói módú hangösszetevő, amelyen keresztül az alkalmazások megoszthatják a hozzáférést egy hangvégpont-eszközhöz. A hangmotor hangadatokat szállít egy végpontpuffer és egy végponteszköz között. Ha egy hangstreamet renderelő végponteszközön szeretne lejátszani, az alkalmazás rendszeresen ír hangadatokat egy renderelő végpontpufferbe. A hangmotor keveri a streameket a különböző alkalmazásokból. A rögzítési végpont eszközéről származó hangstream rögzítéséhez az alkalmazás rendszeresen felolvassa a hangadatokat a rögzítési végpont pufferéből.
A WASAPI több interfészből áll. Ezek közül az első az IAudioClient felület. A WASAPI-felületek eléréséhez az ügyfél először egy hangvégpont eszköz IAudioClient felületére mutató hivatkozást szerez be azzal, hogy meghívja a IMMDevice::Activate metódust, a iid paramétert beállítva a REFIID IID_IAudioClient értékre. Az ügyfél meghívja a IAudioClient::Initialize metódust egy stream inicializálásához egy végponteszközön. A stream inicializálása után az ügyfél a IAudioClient::GetService metódus meghívásával lekérheti a többi WASAPI-felületre mutató hivatkozásokat.
A WASAPI számos metódusa AUDCLNT_E_DEVICE_INVALIDATED hibakódot ad vissza, ha az ügyfélalkalmazás által használt hangvégpont-eszköz érvénytelenné válik. Az alkalmazás gyakran helyreállhat ebből a hibából. További információ: Helyreállítás egy Invalid-Device hibából.
A WASAPI a következő interfészeket implementálja.
Interfész | Leírás |
---|---|
IAudioCaptureClient | Lehetővé teszi, hogy az ügyfél beolvassa a bemeneti adatokat egy rögzítési végpont pufferéből. |
IAudioClient | A kliens létrehozhat és inicializálhat egy audiofolyamot egy hangalkalmazás és egy audió motor vagy egy hangvégpont-eszköz hardverpuffere között. |
IAudioClock | Lehetővé teszi az ügyfél számára a stream adatsebességének és a stream aktuális pozíciójának monitorozását. |
IAudioRenderClient | Lehetővé teszi, hogy az ügyfél kimeneti adatokat írjon egy renderelő végpontpufferbe. |
IAudioSessionControl | Lehetővé teszi, hogy az ügyfél konfigurálja a hangkonfigurálás vezérlőparamétereit, és figyelje a munkamenet eseményeit. |
IAudioSessionManager | Lehetővé teszi az ügyfél számára, hogy hozzáférjen a munkamenet-vezérlőkhöz és a hangerő-vezérlőkhöz a folyamatközi és folyamatspecifikus hangmunkamenetekhez. |
IAudioStreamVolume | Lehetővé teszi az ügyfél számára a hangstreamek összes csatornájának hangerőszintjének szabályozását és monitorozását. |
IChannelAudioVolume | Lehetővé teszi, hogy az ügyfél szabályozhassa az összes csatorna hangerőszintjét abban a hangülésben, amelyhez a stream tartozik. |
ISimpleAudioVolume | Lehetővé teszi az ügyfél számára, hogy egy hangfolyam mesterhangerő szintjét szabályozza. |
A munkamenethez kapcsolódó eseményekről értesítést igénylő WASAPI-ügyfeleknek a következő felületet kell implementálniuk.
Interfész | Leírás |
---|---|
IAudioSessionEvents | Értesítéseket biztosít a munkamenettel kapcsolatos eseményekről, például a kötetszint változásairól, a megjelenítendő névről és a munkamenet állapotáról. |
Kapcsolódó témakörök