Método IAudioCaptureClient::ReleaseBuffer (audioclient.h)

O método ReleaseBuffer libera o buffer.

Sintaxe

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Parâmetros

[in] NumFramesRead

O número de quadros de áudio que o cliente leu do buffer de captura. Esse parâmetro deve ser igual ao número de quadros no pacote de dados adquirido anteriormente ou 0.

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_INVALID_SIZE
O parâmetro NumFramesRead é definido como um valor diferente do tamanho do pacote de dados ou 0.
AUDCLNT_E_OUT_OF_ORDER
Essa chamada não foi precedida por uma chamada IAudioCaptureClient::GetBuffer correspondente.
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.

Comentários

O cliente deve chamar esse método quando terminar de ler um pacote de dados obtido anteriormente chamando o método IAudioCaptureClient::GetBuffer .

Os dados no pacote que o cliente obteve de uma chamada GetBuffer têm a garantia de permanecerem válidos até que o cliente chame ReleaseBuffer para liberar o pacote.

Entre cada chamada getbuffer e sua chamada releasebuffer correspondente, o cliente deve ler o pacote de dados inteiro ou nenhum dele. Se o cliente ler todo o pacote após a chamada getBuffer , ele deverá chamar ReleaseBuffer com NumFramesRead definido como o número total de quadros no pacote de dados. Nesse caso, a próxima chamada para GetBuffer produzirá um novo pacote de dados. Se o cliente não ler nenhum dos dados do pacote após a chamada para GetBuffer, ele deverá chamar ReleaseBuffer com NumFramesRead definido como 0. Nesse caso, a próxima chamada GetBuffer produzirá o mesmo pacote de dados que na chamada anterior do GetBuffer .

Se o cliente chamar ReleaseBuffer com NumFramesRead definido como qualquer valor diferente do tamanho do pacote ou 0, a chamada falhará e retornará o código de erro AUDCLNT_E_INVALID_SIZE.

Os clientes devem evitar atrasos excessivos entre a chamada GetBuffer que adquire um buffer e a chamada ReleaseBuffer que libera o buffer. A implementação do mecanismo de áudio pressupõe que a chamada getBuffer e a chamada releasebuffer correspondente ocorram dentro do mesmo período de processamento de buffer. Clientes que atrasam a liberação de um buffer por mais de um período correm o risco de perder dados de exemplo.

Para obter um exemplo de código que chama o método ReleaseBuffer, consulte Capturando um Stream.

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

IAudioCaptureClient Interface

IAudioCaptureClient::GetBuffer