Condividi tramite


Informazioni su WASAPI

L'API Sessione Audio Windows (WASAPI) consente alle applicazioni client di gestire il flusso di dati audio tra l'applicazione e un dispositivo punto di terminazione audio .

I file di intestazione Audioclient.h e Audiopolicy.h definiscono le interfacce WASAPI.

Ogni flusso audio è membro di una sessione audio . Tramite l'astrazione della sessione, un client WASAPI può identificare un flusso audio come membro di un gruppo di flussi audio correlati. Il sistema può gestire tutti i flussi nella sessione come singola unità.

Il motore audio è il componente audio in modalità utente , attraverso cui le applicazioni condividono l'accesso a un dispositivo di endpoint audio. Il motore audio trasferisce i dati audio tra un buffer di endpoint e un dispositivo endpoint. Per riprodurre un flusso audio tramite un dispositivo endpoint di rendering, un'applicazione scrive periodicamente dati audio in un buffer dell'endpoint di rendering. Il motore audio combina i flussi delle varie applicazioni. Per registrare un flusso audio da un dispositivo endpoint di acquisizione, un'applicazione legge periodicamente i dati audio da un buffer di endpoint di acquisizione.

WASAPI è costituito da diverse interfacce. Il primo è l'interfaccia IAudioClient. Per accedere alle interfacce WASAPI, un client ottiene innanzitutto un riferimento all'interfaccia IAudioClient di di un dispositivo endpoint audio chiamando il metodo IMMDevice::Activate con il parametro iid impostato su IID_IAudioClient REFIID. Il client chiama il metodo IAudioClient::Initialize per inizializzare un flusso in un dispositivo endpoint. Dopo l'inizializzazione di un flusso, il client può ottenere riferimenti alle altre interfacce WASAPI chiamando il metodo IAudioClient::GetService.

Molti dei metodi in WASAPI restituiscono il codice di errore AUDCLNT_E_DEVICE_INVALIDATED se il dispositivo endpoint audio usato da un'applicazione client non è valido. Spesso, l'applicazione può recuperare da questo errore. Per altre informazioni, vedere Ripristino da un errore Invalid-Device.

WASAPI implementa le interfacce seguenti.

Interfaccia Descrizione
IAudioCaptureClient Consente a un client di leggere i dati di input da un buffer dell'endpoint di acquisizione.
IAudioClient Consente a un client di creare e inizializzare un flusso audio tra un'applicazione audio e il motore audio o il buffer hardware di un dispositivo endpoint audio.
IAudioClock Consente a un client di monitorare la frequenza dei dati di un flusso e la posizione corrente nel flusso.
IAudioRenderClient Consente a un client di scrivere dati di output in un buffer dell'endpoint di rendering.
IAudioSessionControl Consente a un client di configurare i parametri di controllo per una sessione audio e di monitorare gli eventi nella sessione.
IAudioSessionManager Consente a un client di accedere ai controlli delle sessioni e ai controlli del volume sia per le sessioni audio multi-processo che per le sessioni audio specifiche del processo.
IAudioStreamVolume Consente a un client di controllare e monitorare i livelli di volume per tutti i canali in un flusso audio.
IChannelAudioVolume Consente a un client di controllare i livelli di volume per tutti i canali nella sessione audio a cui appartiene il flusso.
ISimpleAudioVolume Consente a un client di controllare il livello di volume master di una sessione audio.

 

I client WASAPI che richiedono la notifica degli eventi correlati alla sessione devono implementare l'interfaccia seguente.

Interfaccia Descrizione
IAudioSessionEvents Fornisce notifiche di eventi correlati alla sessione, ad esempio modifiche a livello di volume, nome visualizzato e stato della sessione.

 

Gestione dei flussi

Riferimento alla programmazione