Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die ReleaseBuffer-Methode gibt den pufferbereich frei, der im vorherigen Aufruf der IAudioRenderClient::GetBuffer-Methode abgerufen wurde.
Syntax
HRESULT ReleaseBuffer(
[in] UINT32 NumFramesWritten,
[in] DWORD dwFlags
);
Die Parameter
[in] NumFramesWritten
Die Anzahl der vom Client in das Datenpaket geschriebenen Audioframes. Der Wert dieses Parameters muss kleiner oder gleich der Größe des Datenpakets sein, wie im Parameter NumFramesRequested angegeben, der an die IAudioRenderClient::GetBuffer-Methode übergeben wird.
[in] dwFlags
Die Pufferkonfigurationskennzeichnungen. Der Aufrufer kann diesen Parameter entweder auf 0 oder auf den folgenden _AUDCLNT_BUFFERFLAGS Enumerationswert (ein Flagbit) festlegen:
AUDCLNT_BUFFERFLAGS_SILENT
Wenn dieses Flagbit festgelegt ist, behandelt das Audiomodul das Datenpaket so, als ob es stille enthält, unabhängig von den im Paket enthaltenen Datenwerten. Dieses Flag beseitigt die Notwendigkeit, dass der Client stille Daten explizit in den Renderingpuffer schreibt.
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 |
|---|---|
|
Der NumFramesWritten-Wert überschreitet den im vorherigen IAudioRenderClient::GetBuffer-Aufruf angegebenen NumFramesRequested-Wert. |
|
Der Datenstrom ist exklusiv und verwendet ereignisgesteuerte Pufferung, aber der Client hat versucht, ein Paket freizugeben, das nicht die Größe des Puffers war. |
|
Diesem Aufruf wurde kein entsprechender Aufruf von IAudioRenderClient::GetBuffer vorangestellt. |
|
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. |
|
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. |
|
Der Windows-Audiodienst wird nicht ausgeführt. |
|
Der Parameter dwFlags ist kein gültiger Wert. |
Bemerkungen
Der Client muss dieselbe Anzahl von Frames freigeben, die er im vorherigen Aufruf der IAudioRenderClient::GetBuffer-Methode angefordert hat . Die einzige Ausnahme dieser Regel besteht darin, dass der Client ReleaseBuffer immer aufrufen kann, um 0 Frames freizugeben (es sei denn, der Datenstrom ist exklusiv modus und verwendet ereignisgesteuerte Pufferung).
Dieses Verhalten bietet eine bequeme Möglichkeit, dass der Client ein zuvor angefordertes Paket mit der Länge 0 "freigeben" kann. In diesem Fall ist der Aufruf von ReleaseBuffer optional. Nach dem Aufrufen von GetBuffer zum Abrufen eines Pakets mit der Länge 0 hat der Client die Möglichkeit, ReleaseBuffer nicht aufzurufen, bevor GetBuffer erneut aufgerufen wird.
Wenn der vorherige GetBuffer-Aufruf ein Paket mit nichtzero-Größe abgerufen hat, wird das Aufrufen von ReleaseBuffer mit NumFramesRequested auf 0 erfolgreich ausgeführt (es sei denn, der Datenstrom ist exklusiv modus und verwendet ereignisgesteuerte Pufferung). Die Bedeutung des Anrufs besteht darin, dass der Client vor der Freigabe keine Daten an das Paket geschrieben hat. Daher behandelt die Methode den Teil des Puffers, der durch das Paket dargestellt wird, als nicht verwendet und stellt diesen Teil des Puffers im nächsten GetBuffer-Aufruf erneut für den Client zur Verfügung.
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.
Codebeispiele, die die ReleaseBuffer-Methode aufrufen, finden Sie in den folgenden Themen:
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 |