Delen via


Streambeheer

Na het inventariseren van de audio-eindpuntapparaten in het systeem en het identificeren van een geschikt rendering- of opnameapparaat, is de volgende taak voor een audioclienttoepassing het openen van een verbinding met het eindpuntapparaat en het beheren van de stroom van audiogegevens via die verbinding. WASAPI- stelt clients in staat om audiostreams te maken en te beheren.

WASAPI implementeert verschillende interfaces om streambeheerservices te bieden aan audioclients. De primaire interface is IAudioClient. Een client verkrijgt de IAudioClient--interface voor een audio-eindpuntapparaat door de methode IMMDevice::Activate (met parameter iid ingesteld op REFIID- IID_IAudioClient) op het eindpuntobject.

De client roept de methoden aan in de IAudioClient interface om het volgende te doen:

  • Ontdek welke audio-indelingen het eindpuntapparaat ondersteunt.
  • Haal de grootte van de eindpuntbuffer op.
  • Haal de streamindeling en latentie op.
  • Start, stop en stel de stroom opnieuw in die door het eindpuntapparaat stroomt.
  • Toegang tot aanvullende audioservices.

Een client roept de IAudioClient::Initialize methode aan om een stream te maken. Via deze methode geeft de client de gegevensindeling op voor de stream, de grootte van de eindpuntbuffer en of de stream werkt in de gedeelde of exclusieve modus.

De resterende methoden in de IAudioClient interface vallen in twee groepen:

  • Methoden die alleen kunnen worden aangeroepen nadat de stream is geopend door IAudioClient::Initialiseer.
  • Methoden die op elk gewenst moment kunnen worden aangeroepen vóór of na de initialiseren aanroep.

De volgende methoden kunnen alleen worden aangeroepen nadat de aanroep naar IAudioClient::Initialiseer:

De volgende methoden kunnen worden aangeroepen vóór of na de IAudioClient::Initialiseer aanroep:

Voor toegang tot de extra audioclientservices roept de client de methode IAudioClient::GetService aan. Via deze methode kan de client verwijzingen verkrijgen naar de volgende interfaces:

  • IAudioRenderClient-

    Schrijft renderinggegevens naar een buffer voor het audiorenderingseindpunt.

  • IAudioCaptureClient

    Leest vastgelegde gegevens uit een eindpuntbuffer voor audio-capture.

  • IAudioSessionControl

    Communiceert met de audiosessiebeheerder om de audiosessie te configureren en te beheren die is gekoppeld aan de stream.

  • ISimpleAudioVolume

    Hiermee bepaalt u het volumeniveau van de audiosessie die is gekoppeld aan de stream.

  • IChannelAudioVolume

    Hiermee bepaalt u de volumeniveaus van de afzonderlijke kanalen in de audiosessie die aan de stream is gekoppeld.

  • IAudioClock-

    Hiermee wordt de stroomgegevenssnelheid en de streampositie bewaakt.

Daarnaast moeten WASAPI-clients die melding van sessiegerelateerde gebeurtenissen vereisen, de volgende interface implementeren:

Ten slotte kan een client een API op een hoger niveau gebruiken om een audiostream te maken, maar ook toegang nodig tot de sessiebesturingselementen en volumebesturingselementen voor de sessie die de stream bevat. Een API op een hoger niveau biedt deze toegang doorgaans niet. De client kan de besturingselementen voor een bepaalde sessie verkrijgen via de IAudioSessionManager interface. Met deze interface kan de client de IAudioSessionControl en ISimpleAudioVolume interfaces voor een sessie verkrijgen zonder dat de client de IAudioClient interface moet gebruiken om een stream te maken en de stream toe te wijzen aan de sessie. Een client verkrijgt de IAudioSessionManager--interface voor een audio-eindpuntapparaat door de methode IMMDevice::Activate (met parameter iid ingesteld op REFIID- IID_IAudioSessionManager) op het eindpuntobject aan te roepen.

De IAudioSessionControl, IAudioSessionEventsen IAudioSessionManager interfaces worden gedefinieerd in het headerbestand Audiopolicy.h. Alle andere WASAPI-interfaces worden gedefinieerd in het headerbestand Audioclient.h.

In de volgende secties wordt beschreven hoe u WASAPI gebruikt om audiostreams te beheren:

programmeerhandleiding voor