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

El método ReleaseBuffer libera el búfer.

Sintaxis

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Parámetros

[in] NumFramesRead

Número de fotogramas de audio que el cliente leyó del búfer de captura. Este parámetro debe ser igual al número de fotogramas del paquete de datos adquirido anteriormente o 0.

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_INVALID_SIZE
El parámetro NumFramesRead se establece en un valor distinto del tamaño del paquete de datos o 0.
AUDCLNT_E_OUT_OF_ORDER
Esta llamada no estaba precedida de una llamada IAudioCaptureClient::GetBuffer correspondiente.
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.

Comentarios

El cliente debe llamar a este método cuando termine de leer un paquete de datos que obtuvo anteriormente llamando al método IAudioCaptureClient::GetBuffer .

Se garantiza que los datos del paquete que el cliente obtuvo de una llamada GetBuffer permanecen válidos hasta que el cliente llama a ReleaseBuffer para liberar el paquete.

Entre cada llamada GetBuffer y su llamada ReleaseBuffer correspondiente, el cliente debe leer todo el paquete de datos o ninguno de ellos. Si el cliente lee todo el paquete después de la llamada a GetBuffer , debe llamar a ReleaseBuffer con NumFramesRead establecido en el número total de fotogramas del paquete de datos. En este caso, la siguiente llamada a GetBuffer generará un nuevo paquete de datos. Si el cliente lee ninguno de los datos del paquete después de la llamada a GetBuffer, debe llamar a ReleaseBuffer con NumFramesRead establecido en 0. En este caso, la siguiente llamada a GetBuffer generará el mismo paquete de datos que en la llamada a GetBuffer anterior.

Si el cliente llama a ReleaseBuffer con NumFramesRead establecido en cualquier valor distinto del tamaño del paquete o 0, se produce un error en la llamada y se devuelve el código de error AUDCLNT_E_INVALID_SIZE.

Los clientes deben evitar retrasos excesivos entre la llamada GetBuffer que adquiere un búfer y la llamada ReleaseBuffer que libera el búfer. La implementación del motor de audio supone que la llamada GetBuffer y la llamada ReleaseBuffer correspondiente se producen dentro del mismo período de procesamiento del búfer. Clientes que retrasan la liberación de un búfer durante más de un período, lo que pierde datos de ejemplo.

Para obtener un ejemplo de código que llama al método ReleaseBuffer, vea Capturar un Stream.

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

IAudioCaptureClient (Interfaz)

IAudioCaptureClient::GetBuffer