Compartilhar via


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.

Valor de retorno

Se o método for bem-sucedido, ele 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 Description
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_RESOURCES_INVALIDATED
Os recursos do fluxo foram invalidados. Esse erro pode ser gerado pelos seguintes motivos:
- O fluxo está suspenso.
- Um fluxo exclusivo ou de descarregamento é desconectado.
- Um aplicativo empacotado que tem um modo exclusivo ou fluxo de descarregamento é quiesced.
- Um fluxo de "saída protegida" é fechado.
AUDCLNT_E_SERVICE_NOT_RUNNING
O serviço de áudio do Windows não está em execução.

Observações

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 permanecer válidos até que o cliente chame ReleaseBuffer para liberar o pacote.

Entre cada chamada getbuffer e sua chamada do ReleaseBuffer correspondente, o cliente deve ler o pacote de dados inteiro ou nenhum deles. 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 do ReleaseBuffer correspondente ocorram no mesmo período de processamento de buffer. Os clientes que atrasarem 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 Fluxo.

Requirements

Requirement Value
Cliente mínimo suportado Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo compatível Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
Header audioclient.h

Consulte também

IAudioCaptureClient Interface

IAudioCaptureClient::GetBuffer