Compartilhar via


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

O método GetBufferSize recupera o tamanho (capacidade máxima) do buffer do ponto de extremidade.

Sintaxe

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

Parâmetros

[out] pNumBufferFrames

Ponteiro para uma variável UINT32 na qual o método grava o número de quadros de áudio que o buffer pode conter.

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_NOT_INITIALIZED
O fluxo de áudio não foi inicializado com êxito.
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 indisponí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 pNumBufferFrames é NULL.

Comentários

Esse método requer a inicialização anterior da interface IAudioClient . Todas as chamadas para esse método falharão com o erro AUDCLNT_E_NOT_INITIALIZED até que o cliente inicialize o fluxo de áudio chamando com êxito o método IAudioClient::Initialize .

Esse método recupera o comprimento do buffer de ponto de extremidade compartilhado entre o aplicativo cliente e o mecanismo de áudio. O comprimento é expresso como o número de quadros de áudio que o buffer pode conter. O tamanho em bytes de um quadro de áudio é calculado como o número de canais no fluxo multiplicado pelo tamanho da amostra por canal. Por exemplo, o tamanho do quadro é de quatro bytes para um fluxo estéreo (de dois canais) com amostras de 16 bits.

O método IAudioClient::Initialize aloca o buffer. O cliente especifica o comprimento do buffer no valor do parâmetro hnsBufferDuration que ele passa para o método Initialize . Para clientes de renderização, o comprimento do buffer determina a quantidade máxima de dados de renderização que o aplicativo pode gravar no buffer de ponto de extremidade durante uma única passagem de processamento. Para clientes de captura, o comprimento do buffer determina a quantidade máxima de dados de captura que o mecanismo de áudio pode ler do buffer do ponto de extremidade durante uma única passagem de processamento. O cliente sempre deve chamar GetBufferSize depois de chamar Initialize para determinar o tamanho real do buffer alocado, que pode ser diferente do tamanho solicitado.

Os clientes de renderização podem usar esse valor para calcular o maior tamanho de buffer de renderização que pode ser solicitado de IAudioRenderClient::GetBuffer durante cada passagem de processamento.

Para obter exemplos de código que chamam o método GetBufferSize , 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

IAudioRenderClient::GetBuffer