RenderSharedEventDriven
Diese Beispielanwendung verwendet die Core Audio-APIs zum Rendern von Audiodaten auf einem Vom Benutzer angegebenen Ausgabegerät. In diesem Beispiel wird die ereignisgesteuerte Pufferung für einen Renderclient im gemeinsam genutzten Modus veranschaulicht. Bei einem Datenstrom im gemeinsam genutzten Modus teilt der Client den Endpunktpuffer mit dem Audiomodul.
Dieses Thema enthält die folgenden Abschnitte.
- Beschreibung
- Anforderungen
- Herunterladen des Beispiel-
- Erstellen des Beispiel-
- Ausführen des Beispiel-
- Verwandte Themen
Beschreibung
In diesem Beispiel werden die folgenden Features veranschaulicht.
- MMDevice-API für die Enumeration und Auswahl von Multimediageräten.
- WASAPI für Datenstromverwaltungsvorgänge.
Anforderungen
Produkt | Version |
---|---|
Windows SDK- | Windows 7 |
Visual Studio | 2008 |
Herunterladen des Beispiels
Dieses Beispiel ist an den folgenden Speicherorten verfügbar.
Ort | Pfad/URL |
---|---|
Windows SDK | \Programme\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderSharedEventDriven\... |
Erstellen des Beispiels
Führen Sie zum Erstellen des RenderSharedEventDriven-Beispiels die folgenden Schritte aus:
- Öffnen Sie die CMD-Shell für das Windows SDK, und wechseln Sie zum RenderSharedEventDriven-Beispielverzeichnis.
- Führen Sie den Befehl
start WASAPIRenderSharedEventDriven.sln
im Verzeichnis RenderSharedEventDriven aus, um das WASAPIRenderSharedEventDriven-Projekt im Visual Studio-Fenster zu öffnen. - Wählen Sie im Fenster die Debug- oder Release Lösungskonfiguration aus, wählen Sie das Menü Erstellen in der Menüleiste und dann die Option Erstellen aus. Wenn Sie Visual Studio nicht über die CMD-Shell für das SDK öffnen, hat Visual Studio keinen Zugriff auf die SDK-Buildumgebung. In diesem Fall wird das Beispiel nur erstellt, wenn Sie die Umgebungsvariable MSSdk explizit festlegen, die in der Projektdatei verwendet wird, WASAPIRenderSharedEventDriven.vcproj.
Ausführen des Beispiels
Wenn Sie die Demoanwendung erfolgreich erstellen, wird eine ausführbare Datei WASAPIRenderSharedEventDriven.exegeneriert. Geben Sie zum Ausführen WASAPIRenderSharedEventDriven
in ein Befehlsfenster ein, gefolgt von erforderlichen oder optionalen Argumenten. Das folgende Beispiel zeigt, wie Sie das Beispiel ausführen, indem Sie die Wiedergabedauer auf dem Standard-Multimediagerät angeben.
WASAPIRenderSharedEventDriven.exe -d 20 -multimedia
In der folgenden Tabelle sind die Argumente aufgeführt.
Argument | Beschreibung |
---|---|
-? | Zeigt Hilfe an. |
-h | Zeigt Hilfe an. |
-f | Sinuswellenfrequenz in Hz. |
-l | Audiowiedergabelatenz in Millisekunden. |
-d | Sinuswellendauer in Sekunden. |
-m | Deaktiviert die Verwendung von MMCSS. |
-Konsole | Verwenden Sie das Standardkonsolengerät. |
-Kommunikationen | Verwenden Sie das Standardkommunikationsgerät. |
-Multimedia | Verwenden Sie das Standardmäßige Multimediagerät. |
-Endpunkt | Verwenden Sie den im Switchwert angegebenen Endpunktbezeichner. |
Wenn die Anwendung ohne Argumente ausgeführt wird, listet sie die verfügbaren Geräte auf und fordert den Benutzer auf, ein Gerät für die Renderingsitzung auszuwählen. Nachdem der Benutzer ein Gerät angegeben hat, rendert die Anwendung eine Sinuswelle mit 440 Hz für 10 Sekunden. Diese Werte können geändert werden, indem sie -f und -d Schalterwerte angeben.
RenderSharedEventDriven veranschaulicht die ereignisgesteuerte Pufferung. Im Beispiel wird gezeigt, wie Sie:
- Instanziieren Sie einen Audioclient, konfigurieren Sie ihn für die Ausführung im exklusiven Modus, und aktivieren Sie die ereignisgesteuerte Pufferung, indem Sie das AUDCLNT_STREAMFLAGS_EVENTCALLBACK Flag im Aufruf auf IAudioClient::Initializefestlegen.
- Ordnen Sie den Client den Beispielen zu, die gerendert werden können, indem Sie ein Ereignishandle für das System bereitstellen, indem Sie die IAudioClient::SetEventHandle-Methode aufrufen.
- Erstellen Sie einen Renderthread, um Beispiele aus dem Audiomodul auszusprechen.
- Überprüfen Sie das Mixformat des Geräteendpunkts, um zu ermitteln, ob die Beispiele gerendert werden können. Wenn das Gerät das Mixformat nicht unterstützt, werden die Daten in PCM konvertiert.
- Behandeln Des Datenstromwechsels.
Nach Beginn der Renderingsitzung und dem Start des Datenstroms signalisiert das Audiomodul den bereitgestellten Ereignishandle, um den Client jedes Mal zu benachrichtigen, wenn ein Puffer für den Client verarbeitet werden kann. Die Audiodaten können auch in einer zeitgesteuerten Schleife verarbeitet werden. Dieser Modus wird im RenderSharedTimerDriven Beispiel veranschaulicht.
Weitere Informationen zum Rendern eines Datenstroms finden Sie unter Rendern eines Stream-.
Verwandte Themen