IAudioCaptureClient::ReleaseBuffer-Methode (audioclient.h)

Die ReleaseBuffer-Methode gibt den Puffer frei.

Syntax

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Parameter

[in] NumFramesRead

Die Anzahl der Audioframes, die der Client aus dem Erfassungspuffer liest. Dieser Parameter muss entweder gleich der Anzahl der Frames im zuvor erfassten Datenpaket oder 0 sein.

Rückgabewert

Wenn die Methode erfolgreich ist, wird S_OK zurückgegeben. Wenn ein Fehler auftritt, können mögliche Rückgabecodes die in der folgenden Tabelle gezeigten Werte umfassen, sind jedoch nicht darauf beschränkt.

Rückgabecode Beschreibung
AUDCLNT_E_INVALID_SIZE
Der NumFramesRead-Parameter ist auf einen anderen Wert als die Datenpaketgröße oder 0 festgelegt.
AUDCLNT_E_OUT_OF_ORDER
Diesem Aufruf war kein entsprechender IAudioCaptureClient::GetBuffer-Aufruf vorangestellt.
AUDCLNT_E_DEVICE_INVALIDATED
Das Audioendpunktgerät wurde getrennt, oder die Audiohardware oder die zugehörigen Hardwareressourcen wurden neu konfiguriert, deaktiviert, entfernt oder anderweitig für die Verwendung nicht verfügbar gemacht.
AUDCLNT_E_SERVICE_NOT_RUNNING
Der Windows-Audiodienst wird nicht ausgeführt.

Hinweise

Der Client sollte diese Methode aufrufen, wenn er das Lesen eines Datenpakets beendet, das er zuvor durch Aufrufen der IAudioCaptureClient::GetBuffer-Methode abgerufen hat.

Die Daten in dem Paket, die der Client von einem GetBuffer-Aufruf abgerufen hat, bleiben garantiert gültig, bis der Client ReleaseBuffer aufruft, um das Paket freizugeben.

Zwischen jedem GetBuffer-Aufruf und dem entsprechenden ReleaseBuffer-Aufruf muss der Client entweder das gesamte Datenpaket oder keines davon lesen. Wenn der Client das gesamte Paket nach dem GetBuffer-Aufruf liest, sollte er ReleaseBuffer aufrufen, wobei NumFramesRead auf die Gesamtanzahl der Frames im Datenpaket festgelegt ist. In diesem Fall erzeugt der nächste Aufruf von GetBuffer ein neues Datenpaket. Wenn der Client nach dem Aufruf von GetBuffer keine der Daten aus dem Paket liest, sollte er ReleaseBuffer aufrufen, wobei NumFramesRead auf 0 festgelegt ist. In diesem Fall erzeugt der nächste GetBuffer-Aufruf das gleiche Datenpaket wie im vorherigen GetBuffer-Aufruf .

Wenn der Client ReleaseBuffer aufruft, wobei NumFramesRead auf einen anderen Wert als die Paketgröße oder 0 festgelegt ist, schlägt der Aufruf fehl und gibt den Fehlercode AUDCLNT_E_INVALID_SIZE zurück.

Clients sollten übermäßige Verzögerungen zwischen dem GetBuffer-Aufruf , der einen Puffer abruft, und dem ReleaseBuffer-Aufruf vermeiden, der den Puffer freigibt. Bei der Implementierung der Audio-Engine wird davon ausgegangen, dass der GetBuffer-Aufruf und der entsprechende ReleaseBuffer-Aufruf innerhalb desselben Pufferverarbeitungszeitraums erfolgen. Clients, die das Freigeben eines Puffers um mehr als einen Zeitraum verzögern, riskieren den Verlust von Beispieldaten.

Ein Codebeispiel, das die ReleaseBuffer-Methode aufruft, finden Sie unter Erfassen einer Stream.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile audioclient.h

Weitere Informationen

IAudioCaptureClient-Schnittstelle

IAudioCaptureClient::GetBuffer