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 endpoint audio.
I file di intestazione Audioclient.h e Audiopolicy.h definiscono le interfacce WASAPI.
Ogni flusso audio è un 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 tramite cui le applicazioni condividono l'accesso a un dispositivo endpoint audio. Il motore audio trasporta i dati audio tra un buffer dell'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 di questi è l'interfaccia IAudioClient . Per accedere alle interfacce WASAPI, un client ottiene innanzitutto un riferimento all'interfaccia IAudioClient di un dispositivo endpoint audio chiamando il metodo IMMDevice::Activate con il parametro iid impostato su REFIID IID_IAudioClient. 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 di dispositivo non valido.
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 sessione e ai controlli del volume sia per sessioni audio specifiche del 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. |