Megosztás a következőn keresztül:


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.

 

Adatfolyam kezelése

programozási referencia