Compartir a través de


Uso de un dispositivo de comunicación

En Windows 7, el panel de control multimedia de Windows, Mmsys.cpl, proporciona una nueva pestaña Comunicaciones . Esta pestaña contiene opciones que permiten a un usuario establecer opciones que definen cómo administra el sistema un dispositivo de comunicación. Un dispositivo de comunicación se usa principalmente para realizar o recibir llamadas telefónicas en el equipo. Para un equipo que solo tiene un dispositivo de representación (altavoz) y un dispositivo de captura (micrófono), estos dispositivos de audio también actúan como los dispositivos de comunicación predeterminados. Cuando un usuario conecta un nuevo dispositivo, como un casco USB, el sistema realiza la detección automática de roles de dispositivo mediante la búsqueda de las opciones de configuración rellenadas por el OEM. Si el sistema determina que un dispositivo es más adecuado para fines de comunicación, el sistema asigna el rol eCommunications al dispositivo. Para estos dispositivos, el Mmsys.cpl windows 7 proporciona la opción Dispositivo de comunicación predeterminado que permite a un usuario seleccionar un dispositivo de comunicación cada uno para la representación de audio (pestaña Reproducción ) y la captura de audio (pestaña Grabación ). El sistema realiza la detección automática de roles, pero no establece un dispositivo determinado que se usará para las comunicaciones. El usuario debe hacerlo. El nuevo rol eCommunications permite a una aplicación distinguir entre un dispositivo elegido por el usuario para controlar las llamadas telefónicas y un dispositivo que se usará como dispositivo multimedia (reproducción de música). Por ejemplo, si el usuario tiene un auricular y un altavoz conectado al equipo, el sistema asigna el rol eConsole al altavoz y al rol eCommunications al casco. Una vez que el usuario selecciona los auriculares que se van a usar como dispositivo de comunicación, para desarrollar una aplicación de comunicación, puede dirigirse a los auriculares específicamente para representar una secuencia de audio. Una aplicación que el usuario no puede cambiar el rol de dispositivo asignado por el sistema. Para obtener más información sobre los roles de dispositivo, consulte Roles de dispositivo.

Aplicaciones de comunicación, como voIP y aplicaciones de comunicación unificada, colocan y reciben llamadas telefónicas a través de un equipo. Por ejemplo, una aplicación VoIP podría asignar una secuencia que contenga la notificación de llamada al punto de conexión de un conjunto de dispositivos de comunicación para representar secuencias de audio. Además, la aplicación podría abrir los flujos de entrada y salida de voz en los dispositivos de punto de conexión de captura y representación que se establecen como dispositivos de comunicación.

Para integrar las funcionalidades de comunicación en las aplicaciones, puede usar:

  • MMDevice API: para obtener una referencia al punto de conexión del dispositivo de comunicación.
  • WASAPI: para representar y capturar secuencias de audio a través del dispositivo de comunicación. El sistema operativo considera que la secuencia abierta en un dispositivo de comunicación es una secuencia de comunicación.

La aplicación de comunicación enumera los dispositivos y proporciona administración de flujos para una secuencia de comunicación (representación o captura) de la misma manera que administraría una secuencia de no comunicación mediante las API de audio principal.

Una de las características que puede integrar en la aplicación de comunicación es laatenuación de transmisión o pato. Este comportamiento define lo que debe ocurrir con otros sonidos cuando se abre una secuencia de comunicación, como cuando se recibe una llamada telefónica en el dispositivo de comunicación. El sistema puede silenciar o reducir el volumen de audio de la secuencia de no comunicación en función de la elección del usuario. El sistema de audio genera eventos de pato cuando se abre o cierra una secuencia de comunicación para representar o capturar secuencias. De forma predeterminada, el sistema operativo proporciona una experiencia de pato predeterminada. Una aplicación multimedia puede reemplazar el comportamiento predeterminado y controlar estos eventos para proporcionar una experiencia de pato personalizada.

En las secciones siguientes se describe cómo usar core Audio API para proporcionar una experiencia de pato personalizada.

Obtener una referencia al punto de conexión de dispositivo de comunicación

Para usar el dispositivo de comunicación, un cliente WASAPI directo debe enumerar los dispositivos mediante el enumerador de dispositivos. Obtenga una referencia al punto de conexión del dispositivo de comunicación predeterminado llamando a IMMDeviceEnumerator::GetDefaultAudioEndpoint. En esta llamada, la aplicación debe especificar eCommunications en el parámetro Role para restringir la enumeración de dispositivos a los dispositivos de comunicación. Después de obtener una referencia al punto de conexión del dispositivo para el dispositivo, puede activar los servicios cuyo ámbito es el punto de conexión mediante una llamada a IMMDevice::Activate. Por ejemplo, puede pasar el identificador de servicio de IID_IAudioClient para activar un objeto de cliente de audio y usarlo para la administración de flujos, el identificador de IID_IAudioEndpointVolume para obtener acceso a los controles de volumen del punto de conexión del dispositivo de comunicación o el identificador de IID_IAudioSessionManager para activar el administrador de sesiones que le permite interactuar con el motor de directivas del punto de conexión. Para obtener información sobre las operaciones de flujo, consulte Administración de flujos.

Mediante la referencia de IMMDevice , también puede acceder al almacén de propiedades para el punto de conexión del dispositivo. Estos valores de propiedad, como el nombre descriptivo del dispositivo y el nombre del fabricante, se rellenan mediante el OEM y permiten que una aplicación determine las características de un dispositivo de comunicación. Para obtener más información, consulte Propiedades del dispositivo.

El código de ejemplo siguiente obtiene una referencia al punto de conexión del dispositivo de comunicación predeterminado para representar una secuencia de audio.

IMMDevice *defaultDevice = NULL;

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
            CLSCTX_INPROC_SERVER, 
            __uuidof(IMMDeviceEnumerator), 
            (LPVOID *)&deviceEnumerator);

hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, 
            eCommunications, &defaultDevice);

Administración de flujos