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 |
---|---|
|
Correcto y el dispositivo de punto de conexión de audio admite el formato de secuencia especificado. |
|
Se realizó correctamente con una coincidencia más cercana al formato especificado. |
|
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 |
---|---|
|
El parámetro pFormat es NULL o ppClosestMatch es NULL y ShareMode es AUDCLNT_SHAREMODE_SHARED. |
|
Parameter ShareMode es un valor distinto de AUDCLNT_SHAREMODE_SHARED o AUDCLNT_SHAREMODE_EXCLUSIVE. |
|
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. |
|
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 |