Administración de flujos

Después de enumerar los dispositivos de punto de conexión de audio en el sistema e identificar un dispositivo de representación o captura adecuados, la siguiente tarea para una aplicación cliente de audio es abrir una conexión con el dispositivo de punto de conexión y administrar el flujo de datos de audio a través de esa conexión. WASAPI permite a los clientes crear y administrar secuencias de audio.

WASAPI implementa varias interfaces para proporcionar servicios de administración de flujos a los clientes de audio. La interfaz principal es IAudioClient. Un cliente obtiene la interfaz IAudioClient para 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) en el objeto de extremo.

El cliente llama a los métodos de la interfaz IAudioClient para hacer lo siguiente:

  • Descubra qué formatos de audio admite el dispositivo de punto de conexión.
  • Obtenga el tamaño del búfer del punto de conexión.
  • Obtenga el formato y la latencia de la secuencia.
  • Inicie, detenga y restablezca la secuencia que fluye a través del dispositivo de punto de conexión.
  • Acceda a servicios de audio adicionales.

Para crear una secuencia, un cliente llama al método IAudioClient::Initialize . A través de este método, el cliente especifica el formato de datos para la secuencia, el tamaño del búfer del punto de conexión y si la secuencia funciona en modo compartido o exclusivo.

Los métodos restantes de la interfaz IAudioClient se dividen en dos grupos:

  • Métodos a los que solo se puede llamar después de que IAudioClient::Initialize haya abierto la secuencia.
  • Métodos que se pueden llamar en cualquier momento antes o después de la llamada Initialize .

Solo se puede llamar a los métodos siguientes después de la llamada a IAudioClient::Initialize:

Se puede llamar a los métodos siguientes antes o después de la llamada IAudioClient::Initialize :

Para acceder a los servicios de cliente de audio adicionales, el cliente llama al método IAudioClient::GetService . A través de este método, el cliente puede obtener referencias a las siguientes interfaces:

  • IAudioRenderClient

    Escribe los datos de representación en un búfer de punto de conexión de representación de audio.

  • IAudioCaptureClient

    Lee los datos capturados de un búfer de punto de conexión de captura de audio.

  • IAudioSessionControl

    Se comunica con el administrador de sesiones de audio para configurar y administrar la sesión de audio asociada a la secuencia.

  • ISimpleAudioVolume

    Controla el nivel de volumen de la sesión de audio asociada a la secuencia.

  • IChannelAudioVolume

    Controla los niveles de volumen de los canales individuales de la sesión de audio asociada a la secuencia.

  • IAudioClock

    Supervisa la velocidad de datos y la posición del flujo.

Además, los clientes WASAPI que requieren la notificación de eventos relacionados con la sesión deben implementar la siguiente interfaz:

Por último, un cliente podría usar una API de nivel superior para crear una secuencia de audio, pero también requerir acceso a los controles de sesión y a los controles de volumen de la sesión que contiene la secuencia. Normalmente, una API de nivel superior no proporciona este acceso. El cliente puede obtener los controles de una sesión determinada a través de la interfaz IAudioSessionManager . Esta interfaz permite al cliente obtener las interfaces IAudioSessionControl e ISimpleAudioVolume para una sesión sin necesidad de que el cliente use la interfaz IAudioClient para crear una secuencia y asignarla a la sesión. Un cliente obtiene la interfaz IAudioSessionManager para un dispositivo de punto de conexión de audio mediante una llamada al método IMMDevice::Activate (con el parámetro iid establecido en REFIID IID_IAudioSessionManager) en el objeto de extremo.

Las interfaces IAudioSessionControl, IAudioSessionEvents e IAudioSessionManager se definen en el archivo de encabezado Audiopolicy.h. Todas las demás interfaces WASAPI se definen en el archivo de encabezado Audioclient.h.

En las secciones siguientes se describe cómo usar WASAPI para administrar secuencias de audio:

Guía de programación