Freigeben über


IAudioCaptureClient::ReleaseBuffer-Methode (audioclient.h)

Die ReleaseBuffer-Methode gibt den Puffer frei.

Syntax

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Die Parameter

[in] NumFramesRead

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

Rückgabewert

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

Rückgabecode Description
AUDCLNT_E_INVALID_SIZE
Der Parameter NumFramesRead wird auf einen anderen Wert als die Datenpaketgröße oder 0 festgelegt.
AUDCLNT_E_OUT_OF_ORDER
Diesem Aufruf wurde kein entsprechender IAudioCaptureClient::GetBuffer-Aufruf vorangestellt.
AUDCLNT_E_DEVICE_INVALIDATED
Das Audioendpunktgerät wurde nicht angeschlossen, oder die Audiohardware oder die zugehörigen Hardwareressourcen wurden neu konfiguriert, deaktiviert, entfernt oder anderweitig nicht zur Verwendung verfügbar gemacht.
AUDCLNT_E_RESOURCES_INVALIDATED
Die Ressourcen des Datenstroms wurden ungültig. Dieser Fehler kann aus den folgenden Gründen ausgelöst werden:
– Der Datenstrom wird angehalten.
– Ein exklusiver oder Offload-Datenstrom wird getrennt.
– Eine verpackte Anwendung mit einem exklusiven Modus oder Offload-Stream wird stillgeschützt.
- Ein "geschützter Ausgabedatenstrom" wird geschlossen.
AUDCLNT_E_SERVICE_NOT_RUNNING
Der Windows-Audiodienst wird nicht ausgeführt.

Bemerkungen

Der Client sollte diese Methode aufrufen, wenn das Lesen eines Zuvor abgerufenen Datenpakets durch Aufrufen der IAudioCaptureClient::GetBuffer-Methode abgeschlossen ist.

Die Daten im Paket, die der Client von einem GetBuffer-Aufruf erhalten 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 keins davon lesen. Wenn der Client das gesamte Paket nach dem GetBuffer-Aufruf liest, sollte es 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 keine Daten aus dem Paket liest, die auf den Aufruf von GetBuffer folgen, sollte releaseBuffer aufgerufen werden, wobei NumFramesRead auf 0 festgelegt ist. In diesem Fall erzeugt der nächste GetBuffer-Aufruf dasselbe Datenpaket wie im vorherigen GetBuffer-Aufruf .

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

Clients sollten übermäßige Verzögerungen zwischen dem GetBuffer-Aufruf vermeiden, der einen Puffer abruft, und dem ReleaseBuffer-Aufruf , der den Puffer freigibt. Bei der Implementierung des Audiomoduls wird davon ausgegangen, dass der GetBuffer-Aufruf und der entsprechende ReleaseBuffer-Aufruf innerhalb desselben Pufferverarbeitungszeitraums erfolgen. Clients, die das Freigeben eines Puffers für mehrere Perioden verzögern, riskant sind, dass Beispieldaten verloren gehen.

Ein Codebeispiel, das die ReleaseBuffer-Methode aufruft, finden Sie unter Erfassen eines Datenstroms.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista [Desktop-Apps | UWP-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Fenster
Header audioclient.h

Siehe auch

IAudioCaptureClient-Schnittstelle

IAudioCaptureClient::GetBuffer