Acerca de WASAPI

La API de sesión de audio de Windows (WASAPI) permite a las aplicaciones cliente administrar el flujo de datos de audio entre la aplicación y un dispositivo de punto de conexión de audio.

Los archivos de encabezado Audioclient.h y Audiopolicy.h definen las interfaces WASAPI.

Cada secuencia de audio es miembro de una sesión de audio. A través de la abstracción de sesión, un cliente WASAPI puede identificar una secuencia de audio como miembro de un grupo de secuencias de audio relacionadas. El sistema puede administrar todas las secuencias de la sesión como una sola unidad.

El motor de audio es el componente de audio en modo de usuario a través del cual las aplicaciones comparten acceso a un dispositivo de punto de conexión de audio. El motor de audio transporta datos de audio entre un búfer de punto de conexión y un dispositivo de punto de conexión. Para reproducir una secuencia de audio a través de un dispositivo de punto de conexión de representación, una aplicación escribe periódicamente datos de audio en un búfer de punto de conexión de representación. El motor de audio mezcla las secuencias de las distintas aplicaciones. Para grabar una secuencia de audio desde un dispositivo de punto de conexión de captura, una aplicación lee periódicamente los datos de audio de un búfer de punto de conexión de captura.

WASAPI consta de varias interfaces. La primera de estas es la interfaz IAudioClient . Para acceder a las interfaces WASAPI, un cliente obtiene primero una referencia a la interfaz IAudioClient de un dispositivo de punto de conexión de audio llamando al método IMMDevice::Activate con el parámetro iid establecido en REFIID IID_IAudioClient. El cliente llama al método IAudioClient::Initialize para inicializar una secuencia en un dispositivo de punto de conexión. Después de inicializar una secuencia, el cliente puede obtener referencias a las demás interfaces WASAPI llamando al método IAudioClient::GetService .

Muchos de los métodos de WASAPI devuelven código de error AUDCLNT_E_DEVICE_INVALIDATED si el dispositivo de punto de conexión de audio que usa una aplicación cliente deja de ser válido. Con frecuencia, la aplicación puede recuperarse de este error. Para obtener más información, consulte Recuperación de un error de Invalid-Device.

WASAPI implementa las siguientes interfaces.

Interfaz Descripción
IAudioCaptureClient Permite a un cliente leer datos de entrada de un búfer de punto de conexión de captura.
IAudioClient Permite a un cliente crear e inicializar una secuencia de audio entre una aplicación de audio y el motor de audio o el búfer de hardware de un dispositivo de punto de conexión de audio.
IAudioClock Permite a un cliente supervisar la velocidad de datos de una secuencia y la posición actual en la secuencia.
IAudioRenderClient Permite a un cliente escribir datos de salida en un búfer de punto de conexión de representación.
IAudioSessionControl Permite a un cliente configurar los parámetros de control para una sesión de audio y supervisar eventos en la sesión.
IAudioSessionManager Permite a un cliente acceder a los controles de sesión y a los controles de volumen para sesiones de audio específicas del proceso y entre procesos.
IAudioStreamVolume Permite a un cliente controlar y supervisar los niveles de volumen de todos los canales de una secuencia de audio.
IChannelAudioVolume Permite a un cliente controlar los niveles de volumen de todos los canales de la sesión de audio a la que pertenece la secuencia.
ISimpleAudioVolume Permite a un cliente controlar el nivel de volumen maestro de una sesión de audio.

 

Los clientes WASAPI que requieren notificación de eventos relacionados con la sesión deben implementar la siguiente interfaz.

Interfaz Descripción
IAudioSessionEvents Proporciona notificaciones de eventos relacionados con la sesión, como cambios en el nivel de volumen, el nombre para mostrar y el estado de sesión.

 

Administración de flujos

Referencia de programación