Freigeben über


IAudioClient::GetDevicePeriod-Methode (audioclient.h)

Die GetDevicePeriod-Methode ruft die Länge des periodischen Intervalls ab, das die aufeinanderfolgenden Verarbeitungsdurchläufe von der Audio-Engine für die Daten im Endpunktpuffer trennt.

Syntax

HRESULT GetDevicePeriod(
  [out] REFERENCE_TIME *phnsDefaultDevicePeriod,
  [out] REFERENCE_TIME *phnsMinimumDevicePeriod
);

Parameter

[out] phnsDefaultDevicePeriod

Zeiger auf eine REFERENCE_TIME Variable, in die die -Methode einen Zeitwert schreibt, der das Standardintervall zwischen periodischen Verarbeitungsdurchläufen durch die Audio-Engine angibt. Die Zeit wird in 100 Nanosekundeneinheiten ausgedrückt. Informationen zu REFERENCE_TIME finden Sie in der Dokumentation zum Windows SDK.

[out] phnsMinimumDevicePeriod

Zeiger auf eine REFERENCE_TIME Variable, in die die Methode einen Zeitwert schreibt, der das Mindestintervall zwischen periodischen Verarbeitungsdurchläufen durch das Audioendpunktgerät angibt. Die Zeit wird in 100 Nanosekundeneinheiten ausgedrückt.

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
Die Parameter phnsDefaultDevicePeriod und phnsMinimumDevicePeriod sind beide NULL.

Hinweise

Der Client kann diese Methode aufrufen, bevor er die IAudioClient::Initialize-Methode aufruft .

Der Parameter phnsDefaultDevicePeriod gibt den Standardplanungszeitraum für einen Stream im freigegebenen Modus an. Der Parameter phnsMinimumDevicePeriod gibt den Mindestplanungszeitraum für einen Datenstrom im exklusiven Modus an.

Mindestens einer der beiden Parameter , phnsDefaultDevicePeriod und phnsMinimumDevicePeriod, muss nicht NULL sein, oder die Methode gibt sofort mit Fehlercode E_POINTER zurück. Wenn beide Parameter nicht NULL sind, gibt die Methode sowohl den Standard- als auch den Mindestzeitbereich aus.

Bei einem Stream im freigegebenen Modus verarbeitet die Audio-Engine die Daten in regelmäßigen Abständen im Endpunktpuffer, die das Modul mit der Clientanwendung teilt. Die Engine plant die Ausführung dieser Verarbeitungsdurchläufe in regelmäßigen Abständen.

Der Zeitraum zwischen der Verarbeitung durch die Audio-Engine wird für ein bestimmtes Audioendpunktgerät festgelegt und stellt das kleinste Verarbeitungsquant für die Audio-Engine dar. Dieser Zeitraum und die Streamlatenz zwischen Puffer und Endpunktgerät stellen die minimale mögliche Latenz dar, die eine Audioanwendung erreichen kann.

Der Client hat die Möglichkeit, seinen regelmäßigen Verarbeitungsthread so zu planen, dass er im gleichen Zeitintervall wie die Audio-Engine ausgeführt wird. Auf diese Weise kann der Client eine möglichst geringe Latenz für einen Datenstrom im freigegebenen Modus erzielen. In einer Anwendung, für die die Latenz weniger wichtig ist, kann der Client jedoch den Prozesswechselaufwand für die CPU reduzieren, indem er seine Verarbeitungsdurchläufe so plant, dass er weniger häufig auftritt. In diesem Fall muss der Endpunktpuffer proportional größer sein, um den längeren Zeitraum zwischen den Verarbeitungsdurchläufen auszugleichen.

Der Client bestimmt die Puffergröße während des Aufrufs der IAudioClient::Initialize-Methode . Wenn der Client für einen Datenstrom im freigegebenen Modus diese Methode mit dem hnsBufferDuration-Parameterwert 0 übergibt, geht die Methode davon aus, dass die Zeiträume für den Client und die Audio-Engine garantiert gleich sind, und die Methode weist einen Puffer zu, der klein genug ist, um die minimale mögliche Latenz zu erreichen. (In der Tat haben alle hnsBufferDuration-Werte zwischen 0 und der Summe aus Zeitraum und Gerätelatenz der Audio-Engine das gleiche Ergebnis.) Wenn der Client "hnsBufferDuration " auf "0" festlegt, geht die Methode für einen Datenstrom im exklusiven Modus davon aus, dass der Zeitraum des Clients auf den Mindestzeitraum des Audioendpunktgeräts festgelegt ist, und die Methode weist einen Puffer zu, der klein genug ist, um die minimale mögliche Latenz zu erreichen.

Wenn der Client seinen regelmäßigen Verarbeitungsthread seltener ausführt, kann er dies auf Kosten einer erhöhten Latenz tun, solange er während des IAudioClient::Initialize-Aufrufs einen Endpunktpuffer erstellt, der ausreichend groß ist.

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