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 |
---|---|
|
Der NumFramesRead-Parameter ist auf einen anderen Wert als die Datenpaketgröße oder 0 festgelegt. |
|
Diesem Aufruf war kein entsprechender IAudioCaptureClient::GetBuffer-Aufruf vorangestellt. |
|
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. |
|
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 |