IAudioClient::GetMixFormat-Methode (audioclient.h)

Die GetMixFormat-Methode ruft das Streamformat ab, das die Audio-Engine für die interne Verarbeitung von Datenströmen im freigegebenen Modus verwendet.

Syntax

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

Parameter

[out] ppDeviceFormat

Zeiger auf eine Zeigervariable, in die die Methode die Adresse des Mixformats schreibt. Dieser Parameter muss ein gültiger Nicht-NULL-Zeiger auf eine Zeigervariable sein. Die -Methode schreibt die Adresse einer WAVEFORMATEX-Struktur (oder WAVEFORMATEXTENSIBLE) in diese Variable. Die -Methode weist den Speicher für die Struktur zu. Der Aufrufer ist für das Freigeben des Speichers verantwortlich, wenn er nicht mehr benötigt wird, indem er die CoTaskMemFree-Funktion aufruft . Wenn der GetMixFormat-Aufruf fehlschlägt, ist *ppDeviceFormatNULL. Informationen zu WAVEFORMATEX, WAVEFORMATEXTENSIBLE und CoTaskMemFree finden Sie in der Dokumentation zum Windows SDK.

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_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 ppDeviceFormat ist NULL.
E_OUTOFMEMORY
Nicht genügend Arbeitsspeicher.

Hinweise

Der Client kann diese Methode aufrufen, bevor er die IAudioClient::Initialize-Methode aufruft . Beim Erstellen eines Datenstroms im freigegebenen Modus für ein Audioendpunktgerät akzeptiert die Initialize-Methode immer das Streamformat, das von einem GetMixFormat-Aufruf auf demselben Gerät abgerufen wurde.

Das Mixformat ist das Format, das die Audio-Engine intern für die digitale Verarbeitung von Datenströmen im freigegebenen Modus verwendet. Dieses Format ist nicht unbedingt ein Format, das das Audioendpunktgerät unterstützt. Daher ist es dem Aufrufer möglicherweise nicht erfolgreich, einen Datenstrom im exklusiven Modus mit einem Format zu erstellen, das durch aufrufen von GetMixFormat abgerufen wird.

Um beispielsweise die digitale Audioverarbeitung zu erleichtern, kann die Audio-Engine ein Mixformat verwenden, das Beispiele als Gleitkommawerte darstellt. Wenn das Gerät nur ganzzahlige PCM-Beispiele unterstützt, konvertiert das Modul die Beispiele bei der Verbindung zwischen dem Gerät und dem Modul in oder aus ganzzahligen PCM-Werten. Um eine erneute Entnahme zu vermeiden, kann die Engine jedoch ein Mixformat mit einer vom Gerät unterstützten Samplerate verwenden.

Rufen Sie die IAudioClient::IsFormatSupported-Methode auf, um zu bestimmen, ob die Initialize-Methode einen Stream im freigegebenen Modus oder im exklusiven Modus mit einem bestimmten Format erstellen kann.

An sich kann eine WAVEFORMATEX-Struktur die Zuordnung von Kanälen zu Sprecherpositionen nicht angeben. Darüber hinaus gibt WAVEFORMATEX zwar die Größe des Containers für jedes Audiobeispiel an, kann aber nicht die Anzahl der Bits an Genauigkeit in einem Beispiel angeben (z. B. 20 Bits genauigkeit in einem 24-Bit-Container). Die WAVEFORMATEXTENSIBLE-Struktur kann jedoch sowohl die Zuordnung von Kanälen zu Lautsprechern als auch die Anzahl der Genauigkeitsbits in jedem Beispiel angeben. Aus diesem Grund ruft die GetMixFormat-Methode einen Formatdeskriptor ab, der in Form einer WAVEFORMATEXTENSIBLE-Struktur anstelle einer eigenständigen WAVEFORMATEX-Struktur vorliegt. Über den ppDeviceFormat-Parameter gibt die Methode einen Zeiger auf die WAVEFORMATEX-Struktur aus, die am Anfang dieser WAVEFORMATEXTENSIBLE-Struktur eingebettet ist. Weitere Informationen zu WAVEFORMATEX und WAVEFORMATEXTENSIBLE finden Sie in der Windows DDK-Dokumentation.

Weitere Informationen zur GetMixFormat-Methode finden Sie unter Geräteformate. Codebeispiele, die GetMixFormat 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

IAudioClient::IsFormatSupported