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

O método GetMixFormat recupera o formato de fluxo que o mecanismo de áudio usa para o processamento interno de fluxos de modo compartilhado.

Sintaxe

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

Parâmetros

[out] ppDeviceFormat

Ponteiro para uma variável de ponteiro na qual o método grava o endereço do formato de combinação. Esse parâmetro deve ser um ponteiro não NULL válido para uma variável de ponteiro. O método grava o endereço de uma estrutura WAVEFORMATEX (ou WAVEFORMATEXTENSIBLE) nessa variável. O método aloca o armazenamento para a estrutura. O chamador é responsável por liberar o armazenamento, quando ele não é mais necessário, chamando a função CoTaskMemFree . Se a chamada GetMixFormat falhar, *ppDeviceFormat será NULL. Para obter informações sobre WAVEFORMATEX, WAVEFORMATEXTENSIBLE e CoTaskMemFree, consulte a documentação do SDK do Windows.

Retornar valor

Se o método for bem-sucedido, retornará S_OK. Se falhar, os códigos de retorno possíveis incluem, mas não se limitam a, os valores mostrados na tabela a seguir.

Código de retorno Descrição
AUDCLNT_E_DEVICE_INVALIDATED
O dispositivo de ponto de extremidade de áudio foi desconectado ou o hardware de áudio ou os recursos de hardware associados foram reconfigurados, desabilitados, removidos ou não estão disponíveis para uso.
AUDCLNT_E_SERVICE_NOT_RUNNING
O serviço de áudio do Windows não está em execução.
E_POINTER
O parâmetro ppDeviceFormat é NULL.
E_OUTOFMEMORY
Sem memória.

Comentários

O cliente pode chamar esse método antes de chamar o método IAudioClient::Initialize . Ao criar um fluxo de modo compartilhado para um dispositivo de ponto de extremidade de áudio, o método Initialize sempre aceita o formato de fluxo obtido de uma chamada GetMixFormat no mesmo dispositivo.

O formato de combinação é o formato que o mecanismo de áudio usa internamente para processamento digital de fluxos de modo compartilhado. Esse formato não é necessariamente um formato compatível com o dispositivo de ponto de extremidade de áudio. Portanto, o chamador pode não conseguir criar um fluxo de modo exclusivo com um formato obtido chamando GetMixFormat.

Por exemplo, para facilitar o processamento de áudio digital, o mecanismo de áudio pode usar um formato de combinação que representa exemplos como valores de ponto flutuante. Se o dispositivo der suporte apenas a exemplos de PCM inteiros, o mecanismo converterá os exemplos para ou de valores pcm inteiros na conexão entre o dispositivo e o mecanismo. No entanto, para evitar a resampação, o mecanismo pode usar um formato de combinação com uma taxa de exemplo compatível com o dispositivo.

Para determinar se o método Initialize pode criar um fluxo de modo compartilhado ou de modo exclusivo com um formato específico, chame o método IAudioClient::IsFormatSupported .

Por si só, uma estrutura WAVEFORMATEX não pode especificar o mapeamento de canais para posições de locutor. Além disso, embora WAVEFORMATEX especifique o tamanho do contêiner para cada exemplo de áudio, ele não pode especificar o número de bits de precisão em um exemplo (por exemplo, 20 bits de precisão em um contêiner de 24 bits). No entanto, a estrutura WAVEFORMATEXTENSIBLE pode especificar o mapeamento de canais para alto-falantes e o número de bits de precisão em cada exemplo. Por esse motivo, o método GetMixFormat recupera um descritor de formato que está na forma de uma estrutura WAVEFORMATEXTENSIBLE em vez de uma estrutura WAVEFORMATEX autônoma. Por meio do parâmetro ppDeviceFormat , o método gera um ponteiro para a estrutura WAVEFORMATEX que é inserida no início desta estrutura WAVEFORMATEXTENSIBLE . Para obter mais informações sobre WAVEFORMATEX e WAVEFORMATEXTENSIBLE, consulte a documentação do DDK do Windows.

Para obter mais informações sobre o método GetMixFormat , consulte Formatos de dispositivo. Para obter exemplos de código que chamam GetMixFormat, consulte os seguintes tópicos:

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho audioclient.h

Confira também

IAudioClient Interface

IAudioClient::Initialize

IAudioClient::IsFormatSupported