Método IAudioClient::IsFormatSupported (audioclient.h)

El método IsFormatSupported indica si el dispositivo de punto de conexión de audio admite un formato de secuencia determinado.

Sintaxis

HRESULT IsFormatSupported(
  [in]  AUDCLNT_SHAREMODE  ShareMode,
  [in]  const WAVEFORMATEX *pFormat,
  [out] WAVEFORMATEX       **ppClosestMatch
);

Parámetros

[in] ShareMode

Modo de uso compartido para el formato de secuencia. A través de este parámetro, el cliente indica si quiere usar el formato especificado en modo exclusivo o en modo compartido. El cliente debe establecer este parámetro en uno de los siguientes valores de enumeración AUDCLNT_SHAREMODE:

AUDCLNT_SHAREMODE_EXCLUSIVE

AUDCLNT_SHAREMODE_SHARED

[in] pFormat

Puntero al formato de secuencia especificado. Este parámetro apunta a un descriptor de formato asignado por el autor de la llamada de tipo WAVEFORMATEX o WAVEFORMATEXTENSIBLE. El cliente escribe una descripción de formato en esta estructura antes de llamar a este método. Para obtener información sobre WAVEFORMATEX y WAVEFORMATEXTENSIBLE, consulte la documentación de DDK de Windows.

[out] ppClosestMatch

Puntero a una variable de puntero en la que el método escribe la dirección de una estructura WAVEFORMATEX o WAVEFORMATEXTENSIBLE . Esta estructura especifica el formato admitido más cercano al formato que el cliente especificó a través del parámetro pFormat . Para el modo compartido (es decir, si el parámetro ShareMode es AUDCLNT_SHAREMODE_SHARED), establezca ppClosestMatch para que apunte a una variable de puntero válida que no sea NULL . Para el modo exclusivo, establezca ppClosestMatch enNULL. El método asigna el almacenamiento para la estructura. El autor de la llamada es responsable de liberar el almacenamiento, cuando ya no es necesario, llamando a la función CoTaskMemFree . Si se produce un error en la llamada a IsFormatSupported y ppClosestMatch no es NULL, el método establece *ppClosestMatch en NULL. Para obtener información sobre CoTaskMemFree, consulte la documentación de Windows SDK.

Valor devuelto

Código devuelto Descripción
S_OK
Correcto y el dispositivo de punto de conexión de audio admite el formato de secuencia especificado.
S_FALSE
Se realizó correctamente con una coincidencia más cercana al formato especificado.
AUDCLNT_E_UNSUPPORTED_FORMAT
Se realizó correctamente, pero el formato especificado no se admite en modo exclusivo.
 

Si se produce un error en la operación, los posibles códigos de retorno incluyen, pero no están limitados a, los valores que se muestran en la tabla siguiente.

Código devuelto Descripción
E_POINTER
El parámetro pFormat es NULL o ppClosestMatch es NULL y ShareMode es AUDCLNT_SHAREMODE_SHARED.
E_INVALIDARG
Parameter ShareMode es un valor distinto de AUDCLNT_SHAREMODE_SHARED o AUDCLNT_SHAREMODE_EXCLUSIVE.
AUDCLNT_E_DEVICE_INVALIDATED
El dispositivo de punto de conexión de audio se ha desconectado o el hardware de audio o los recursos de hardware asociados se han reconfigurado, deshabilitado, quitado o no están disponibles para su uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
El servicio de audio de Windows no se está ejecutando.

Comentarios

Este método proporciona una manera de que un cliente determine, antes de llamar a IAudioClient::Initialize, si el motor de audio admite un formato de secuencia determinado.

Para el modo exclusivo, IsFormatSupported devuelve S_OK si el dispositivo de punto de conexión de audio admite el formato especificado por el autor de la llamada o devuelve AUDCLNT_E_UNSUPPORTED_FORMAT si el dispositivo no admite el formato. El parámetro ppClosestMatch puede ser NULL. Si no es NULL, el método escribe NULL en *ppClosestMatch.

Para el modo compartido, si el motor de audio admite el formato especificado por el autor de la llamada, IsFormatSupported establece *ppClosestMatch en NULL y devuelve S_OK. Si el motor de audio no admite el formato especificado por el autor de la llamada, pero admite un formato similar, el método recupera el formato similar a través del parámetro ppClosestMatch y devuelve S_FALSE. Si el motor de audio no admite el formato especificado por el autor de la llamada o cualquier formato similar, el método establece *ppClosestMatch en NULL y devuelve AUDCLNT_E_UNSUPPORTED_FORMAT.

En modo compartido, el motor de audio siempre admite el formato de combinación, que el cliente puede obtener llamando al método IAudioClient::GetMixFormat . Además, el motor de audio puede admitir formatos similares que tienen la misma frecuencia de muestreo y el mismo número de canales que el formato de combinación, pero difieren en la representación de los valores de muestra de audio. El motor de audio representa los valores de ejemplo internamente como números de punto flotante, pero si el formato especificado por el autor de la llamada representa valores de ejemplo como enteros, el motor de audio normalmente puede convertir entre los valores de ejemplo enteros y su representación interna de punto flotante.

Es posible que el motor de audio pueda admitir una gama aún más amplia de formatos de modo compartido si el paquete de instalación del dispositivo de audio incluye un objeto de procesamiento de audio (APO) de efectos locales (LFX) que puede controlar las conversiones de formato. Un APO LFX es un módulo de software que realiza el procesamiento específico del dispositivo de una secuencia de audio. El generador de gráficos de audio del servicio de audio de Windows inserta el APO LFX en la secuencia entre cada cliente y el motor de audio. Cuando un cliente llama al método IsFormatSupported y el método determina que se instala un APO de LFX para su uso con el dispositivo, el método dirige la consulta al APO LFX, lo que indica si admite el formato especificado por el autor de la llamada.

Por ejemplo, un APO LFX determinado podría aceptar una secuencia de sonido envolvente de 6 canales de un cliente y convertir la secuencia en un formato estéreo que se puede reproducir a través de auriculares. Normalmente, un APO de LFX solo admite formatos de cliente con velocidades de muestreo que coinciden con la frecuencia de muestreo del formato de combinación.

Para obtener más información sobre las API, vea Objetos de procesamiento de audio de Windows. Para obtener más información sobre el método IsFormatSupported , consulte Formatos de dispositivo.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado audioclient.h

Consulte también

IAudioClient (interfaz)

IAudioClient::GetMixFormat

IAudioClient::Initialize