Share via


IAudioClient::GetBufferSize-Methode (audioclient.h)

Die GetBufferSize-Methode ruft die Größe (maximale Kapazität) des Endpunktpuffers ab.

Syntax

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

Parameter

[out] pNumBufferFrames

Zeiger auf eine UINT32-Variable , in die die Methode die Anzahl der Audioframes schreibt, die der Puffer enthalten kann.

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_NOT_INITIALIZED
Der Audiostream wurde nicht erfolgreich initialisiert.
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.
E_POINTER
Der Parameter pNumBufferFrames ist NULL.

Hinweise

Diese Methode erfordert eine vorherige Initialisierung der IAudioClient-Schnittstelle . Alle Aufrufe dieser Methode schlagen mit dem Fehler AUDCLNT_E_NOT_INITIALIZED fehl, bis der Client den Audiodatenstrom durch erfolgreiches Aufrufen der IAudioClient::Initialize-Methode initialisiert .

Diese Methode ruft die Länge des Endpunktpuffers ab, der zwischen der Clientanwendung und der Audio-Engine gemeinsam genutzt wird. Die Länge wird als Die Anzahl der Audioframes angegeben, die der Puffer aufnehmen kann. Die Größe eines Audioframes in Bytes wird als die Anzahl der Kanäle im Stream multipliziert mit der Beispielgröße pro Kanal berechnet. Beispielsweise beträgt die Framegröße vier Bytes für einen Stereodatenstrom (2 Kanäle) mit 16-Bit-Beispielen.

Die IAudioClient::Initialize-Methode weist den Puffer zu. Der Client gibt die Pufferlänge im hnsBufferDuration-Parameterwert an, den er an die Initialize-Methode übergibt. Bei Renderingclients bestimmt die Pufferlänge die maximale Menge an Renderingdaten, die die Anwendung während eines einzelnen Verarbeitungsdurchlaufs in den Endpunktpuffer schreiben kann. Bei Erfassungsclients bestimmt die Pufferlänge die maximale Menge an Aufzeichnungsdaten, die die Audio-Engine während eines einzelnen Verarbeitungsdurchlaufs aus dem Endpunktpuffer lesen kann. Der Client sollte immer GetBufferSize aufrufen, nachdem Initialize aufgerufen wurde, um die tatsächliche Größe des zugeordneten Puffers zu bestimmen, die sich von der angeforderten Größe unterscheiden kann.

Renderingclients können diesen Wert verwenden, um die größte Renderingpuffergröße zu berechnen, die von IAudioRenderClient::GetBuffer während jedes Verarbeitungsdurchlaufs angefordert werden kann.

Codebeispiele, die die GetBufferSize-Methode aufrufen, finden Sie in den folgenden Themen:

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

IAudioClient-Schnittstelle

IAudioClient::Initialize

IAudioRenderClient::GetBuffer