Over WASAPI
Met de Windows Audio Session API (WASAPI) kunnen clienttoepassingen de stroom van audiogegevens tussen de toepassing en een audio-eindpuntapparaatbeheren.
Header-bestanden Audioclient.h en Audiopolicy.h definiëren de WASAPI-interfaces.
Elke audiostream is lid van een audiosessie. Via de sessieabstractie kan een WASAPI-client een audiostream identificeren als lid van een groep gerelateerde audiostreams. Het systeem kan alle streams in de sessie als één eenheid beheren.
De audio-engine is het audioonderdeel in de gebruikersmodus waarmee toepassingen toegang tot een audio-eindpuntapparaat delen. De audio-engine transporteert audiogegevens tussen een eindpuntbuffer en een eindpuntapparaat. Als u een audiostream wilt afspelen via een renderingeindpuntapparaat, schrijft een toepassing periodiek audiogegevens naar een renderingeindpuntbuffer. De audio-engine combineert de streams uit de verschillende toepassingen. Om een audiostream op te nemen van een opname-eindpuntapparaat, leest een toepassing periodiek audiogegevens uit een opname-eindpuntbuffer.
WASAPI bestaat uit verschillende interfaces. De eerste hiervan is de IAudioClient interface. Voor toegang tot de WASAPI-interfaces verkrijgt een client eerst een verwijzing naar de IAudioClient interface van een audio-eindpuntapparaat door de IMMDevice::Activate-methode aan te roepen met parameter iid ingesteld op REFIID- IID_IAudioClient. De client roept de IAudioClient::Initialiseer methode om een stream te initialiseren op een eindpuntapparaat. Nadat een stream is geïnitialiseerd, kan de client verwijzingen naar de andere WASAPI-interfaces verkrijgen door de methode IAudioClient::GetService aan te roepen.
Veel van de methoden in WASAPI retourneren foutcode AUDCLNT_E_DEVICE_INVALIDATED als het audio-eindpuntapparaat dat een clienttoepassing gebruikt, ongeldig wordt. Vaak kan de toepassing herstellen na deze fout. Zie Herstellen van een Invalid-Device Foutvoor meer informatie.
WASAPI implementeert de volgende interfaces.
gebruikersinterface | Beschrijving |
---|---|
IAudioCaptureClient | Hiermee kan een client invoergegevens lezen uit een buffer van een capture-eindpunt. |
IAudioClient | Hiermee kan een client een audiostream maken en initialiseren tussen een audiotoepassing en de audio-engine of de hardwarebuffer van een audio-eindpuntapparaat. |
IAudioClock | Hiermee kan een client de gegevenssnelheid van een stream en de huidige positie in de stream bewaken. |
IAudioRenderClient | Hiermee kan een client uitvoergegevens schrijven naar een buffer voor een renderingeindpunt. |
IAudioSessionControl | Hiermee kan een client de besturingsparameters voor een audiosessie configureren en gebeurtenissen in de sessie bewaken. |
IAudioSessionManager | Hiermee kan een client toegang krijgen tot de sessiebesturingselementen en volumebesturingselementen voor zowel proces- als processpecifieke audiosessies. |
IAudioStreamVolume | Hiermee kan een client de volumeniveaus voor alle kanalen in een audiostream beheren en bewaken. |
IChannelAudioVolume | Hiermee kan een client de volumeniveaus voor alle kanalen in de audiosessie beheren waartoe de stream behoort. |
ISimpleAudioVolume | Hiermee kan een client het volumeniveau van een audiosessie regelen. |
WASAPI-clients waarvoor een melding van sessiegerelateerde gebeurtenissen is vereist, moeten de volgende interface implementeren.
Interface | Beschrijving |
---|---|
IAudioSessionEvents | Biedt meldingen over sessiegerelateerde gebeurtenissen, zoals wijzigingen op volumeniveau, weergavenaam en sessiestatus. |
Verwante onderwerpen