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

El método GetMixFormat recupera el formato de secuencia que usa el motor de audio para su procesamiento interno de secuencias en modo compartido.

Sintaxis

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

Parámetros

[out] ppDeviceFormat

Puntero a una variable de puntero en la que el método escribe la dirección del formato de combinación. Este parámetro debe ser un puntero válido que no sea NULL a una variable de puntero. El método escribe la dirección de una estructura WAVEFORMATEX (o WAVEFORMATEXTENSIBLE) en esta variable. 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 GetMixFormat , *ppDeviceFormat es NULL. Para obtener información sobre WAVEFORMATEX, WAVEFORMATEXTENSIBLE y CoTaskMemFree, consulte la documentación de Windows SDK.

Valor devuelto

Si el método se realiza correctamente, devuelve S_OK. Si se produce un error, los códigos de retorno posibles incluyen, entre otros, los valores que se muestran en la tabla siguiente.

Código devuelto Descripción
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 dejado de estar disponible para su uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
El servicio de audio de Windows no se está ejecutando.
E_POINTER
El parámetro ppDeviceFormat es NULL.
E_OUTOFMEMORY
Memoria insuficiente

Comentarios

El cliente puede llamar a este método antes de llamar al método IAudioClient::Initialize . Al crear una secuencia en modo compartido para un dispositivo de punto de conexión de audio, el método Initialize siempre acepta el formato de secuencia obtenido de una llamada GetMixFormat en el mismo dispositivo.

El formato de combinación es el formato que el motor de audio usa internamente para el procesamiento digital de secuencias en modo compartido. Este formato no es necesariamente un formato que admite el dispositivo de punto de conexión de audio. Por lo tanto, es posible que el autor de la llamada no cree correctamente una secuencia en modo exclusivo con un formato obtenido mediante una llamada a GetMixFormat.

Por ejemplo, para facilitar el procesamiento de audio digital, el motor de audio podría usar un formato de combinación que represente muestras como valores de punto flotante. Si el dispositivo solo admite muestras de PCM enteros, el motor convierte las muestras en o desde valores PCM enteros en la conexión entre el dispositivo y el motor. Sin embargo, para evitar volver a muestrear, el motor podría usar un formato de combinación con una frecuencia de muestreo que admite el dispositivo.

Para determinar si el método Initialize puede crear una secuencia en modo compartido o en modo exclusivo con un formato determinado, llame al método IAudioClient::IsFormatSupported .

Por sí mismo, una estructura WAVEFORMATEX no puede especificar la asignación de canales a las posiciones del hablante. Además, aunque WAVEFORMATEX especifica el tamaño del contenedor para cada muestra de audio, no puede especificar el número de bits de precisión en una muestra (por ejemplo, 20 bits de precisión en un contenedor de 24 bits). Sin embargo, la estructura WAVEFORMATEXTENSIBLE puede especificar la asignación de canales a altavoces y el número de bits de precisión en cada muestra. Por este motivo, el método GetMixFormat recupera un descriptor de formato que tiene la forma de una estructura WAVEFORMATEXTENSIBLE en lugar de una estructura WAVEFORMATEX independiente. A través del parámetro ppDeviceFormat , el método genera un puntero a la estructura WAVEFORMATEX incrustada al principio de esta estructura WAVEFORMATEXTENSIBLE . Para obtener más información sobre WAVEFORMATEX y WAVEFORMATEXTENSIBLE, consulta la documentación de Windows DDK.

Para obtener más información sobre el método GetMixFormat , consulte Formatos de dispositivo. Para obtener ejemplos de código que llaman a GetMixFormat, consulte los temas siguientes:

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::Initialize

IAudioClient::IsFormatSupported