IAudioClient3::InitializeSharedAudioStream-Methode (audioclient.h)
Initialisiert einen freigegebenen Stream mit der angegebenen Periodizität.
Syntax
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Parameter
[in] StreamFlags
Art: DWORD
Flags, um die Erstellung des Datenstroms zu steuern. Der Client sollte diesen Parameter auf 0 oder auf den bitweisen OR einer oder mehrerer der unterstützten AUDCLNT_STREAMFLAGS_XXX Konstanten oder AUDCLNT_SESSIONFLAGS_XXX Konstanten festlegen. Die unterstützten AUDCLNT_STREAMFLAGS_XXX Konstanten für diesen Parameter bei Verwendung dieser Methode sind:
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
Typ: UINT32
Vom Client angeforderte Periodizität. Dieser Wert muss ein integrales Vielfaches des Werts sein, der im pFundamentalPeriodInFrames-Parameter für IAudioClient3::GetSharedModeEnginePeriod zurückgegeben wird. PeriodInFrames müssen auch größer oder gleich dem in pMinPeriodInFrames zurückgegebenen Wert und kleiner oder gleich dem in pMaxPeriodInFrames zurückgegebenen Wert sein.
[in] pFormat
Typ: const WAVEFORMATEX*
Zeiger auf einen Formatdeskriptor. Dieser Parameter muss auf einen gültigen Formatdeskriptor vom Typ WAVEFORMATEX oder WAVEFORMATEXTENSIBLE verweisen. Weitere Informationen finden Sie im Abschnitt Hinweise für IAudioClient::Initialize.
[in, optional] AudioSessionGuid
Typ: LPCGUID
Zeiger auf eine Sitzungs-GUID. Dieser Parameter verweist auf einen GUID-Wert, der die Audiositzung identifiziert, zu der der Stream gehört. Wenn die GUID eine Sitzung identifiziert, die zuvor geöffnet wurde, fügt die -Methode den Stream zu dieser Sitzung hinzu. Wenn die GUID keine vorhandene Sitzung identifiziert, öffnet die -Methode eine neue Sitzung und fügt der Sitzung den Stream hinzu. Der Stream bleibt während seiner Lebensdauer Mitglied derselben Sitzung. Das Festlegen dieses Parameters auf NULL entspricht dem Übergeben eines Zeigers auf einen GUID_NULL Wert.
Rückgabewert
Typ: HRESULT
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 |
---|---|
|
Das IAudioClient-Objekt ist bereits initialisiert. |
|
Das AUDCLNT_STREAMFLAGS_LOOPBACK-Flag ist festgelegt, aber das Endpunktgerät ist ein Erfassungsgerät, kein Renderinggerät. |
|
Gibt an, dass die Dauer des Prozessdurchlaufs die maximale CPU-Auslastung überschritten hat. Die Audio-Engine verfolgt die CPU-Auslastung, indem die Dauer des Prozessdurchlaufs die maximale CPU-Auslastung überschreitet. Die maximale CPU-Auslastung wird als Prozentsatz der Periodizität der Engine berechnet. Der Prozentsatzwert ist der CPU-Drosselungswert des Systems (im Bereich von 10 % und 90 %). Wenn dieser Wert nicht gefunden wird, wird der Standardwert von 40 % verwendet, um die maximale CPU-Auslastung zu berechnen. |
|
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. |
|
Das Endpunktgerät wird bereits verwendet. Entweder wird das Gerät im exklusiven Modus verwendet, oder das Gerät wird im freigegebenen Modus verwendet, und der Aufrufer wurde aufgefordert, das Gerät im exklusiven Modus zu verwenden. |
|
Der angegebene Client AUDCLNT_STREAMOPTIONS_MATCH_FORMAT beim Aufrufen von IAudioClient2::SetClientProperties, aber das Format der Audio-Engine wurde von einem anderen Client gesperrt. In diesem Fall können Sie IAudioClient2::SetClientProperties aufrufen, ohne die Option "Übereinstimmungsformat" anzugeben, und dann das aktuelle Format der Audio-Engine verwenden. |
|
Der angegebene Client AUDCLNT_STREAMOPTIONS_MATCH_FORMAT beim Aufrufen von IAudioClient2::SetClientProperties, aber die Periodizität der Audio-Engine wurde von einem anderen Client gesperrt. In diesem Fall können Sie IAudioClient2::SetClientProperties aufrufen, ohne die Option "Übereinstimmungsformat" anzugeben, und dann die aktuelle Periodizität der Audio-Engine verwenden. |
|
Fehler beim Erstellen des Audioendpunkts für das Render- oder Aufnahmegerät. Dies kann auftreten, wenn das Audioendpunktgerät nicht angeschlossen wurde oder die Audiohardware oder die zugehörigen Hardwareressourcen neu konfiguriert, deaktiviert, entfernt oder anderweitig für die Verwendung nicht verfügbar gemacht wurden. |
|
Gibt an, dass der angeforderte Gerätezeitraum, der mit den PeriodInFrames angegeben wird, kein integrales Vielfaches der grundlegenden Periodizität der Audio-Engine ist, kürzer als der Mindestzeitraum des Moduls ist oder länger als der maximale Zeitraum des Moduls ist. Rufen Sie die unterstützten Periodizitätswerte der Engine ab, indem Sie IAudioClient3::GetSharedModeEnginePeriod aufrufen. |
|
Das Audiomodul (freigegebener Modus) oder das Audioendpunktgerät (exklusiver Modus) unterstützt das angegebene Format nicht. |
|
Der Windows-Audiodienst wird nicht ausgeführt. |
|
Der Parameter pFormat ist NULL. |
|
Parameter pFormat verweist auf eine ungültige Formatbeschreibung. oder das AUDCLNT_STREAMFLAGS_LOOPBACK-Flag festgelegt ist, aber ShareMode ist nicht gleich AUDCLNT_SHAREMODE_SHARED; oder das AUDCLNT_STREAMFLAGS_CROSSPROCESS-Flag festgelegt ist, aber ShareMode entspricht AUDCLNT_SHAREMODE_EXCLUSIVE.
Ein vorheriger Aufruf von SetClientProperties wurde mit einer ungültigen Kategorie für Audio-/Renderdatenströme durchgeführt. |
|
Nicht genügend Arbeitsspeicher. |
Hinweise
Im Gegensatz zu IAudioClient::Initialize können Sie mit dieser Methode keine Puffergröße angeben. Die Puffergröße wird basierend auf der mit dem Parameter PeriodInFrames angeforderten Periodizität berechnet. Es liegt in der Verantwortung der Client-App sicherzustellen, dass Audiobeispiele rechtzeitig in den Puffer und aus dem Puffer übertragen werden.
Audioclients sollten auf zulässige Werte für den Parameter PeriodInFrames überprüfen, indem sie IAudioClient3::GetSharedModeEnginePeriod aufrufen. Der Wert von PeriodInFrames muss ein integrales Vielfaches des werts sein, der im pFundamentalPeriodInFrames-Parameter zurückgegeben wird. PeriodInFrames müssen auch größer oder gleich dem in pMinPeriodInFrames zurückgegebenen Wert und kleiner oder gleich dem Wert von pMaxPeriodInFrames sein.
Für ein 44100-kHz-Format gibt GetSharedModeEnginePeriod beispielsweise Folgendes zurück:
pDefaultPeriodInFrames = 448 Frames (ca. 10,16 Millisekunden)
pFundamentalPeriodInFrames = 4 Frames (ca. 0,09 Millisekunden)
pMinPeriodInFrames = 48 Frames (ca. 1,09 Millisekunden)
pMaxPeriodInFrames = 448 Frames (identisch mit der Standardeinstellung)
Zulässige Werte für den Parameter PeriodInFrames für InitializeSharedAudioStream wären 48 und 448. Sie würden auch Dinge wie 96 und 128 umfassen.
Sie enthalten NICHT 4 (was kleiner als der zulässige Mindestwert ist) oder 98 (was kein Vielfaches des Fundamentalwerts ist) oder 1000 (was größer als der maximal zulässige Wert ist).
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2016 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | audioclient.h |