RenderExclusiveTimerDriven
Diese Beispielanwendung verwendet die Core Audio-APIs, um Audiodaten auf einem vom Benutzer angegebenen Ausgabegerät zu rendern. In diesem Beispiel wird die timergesteuerte Pufferung für einen Renderingclient im exklusiven Modus veranschaulicht. Bei einem Datenstrom im exklusiven Modus teilt der Client den Endpunktpuffer mit dem Audiogerät.
Dieses Thema enthält folgende Abschnitte:
- Beschreibung
- Anforderungen
- Herunterladen des Beispiels
- Erstellen des Beispiels
- Anzeigen der Beispieldateien
- Zugehörige Themen
BESCHREIBUNG
In diesem Beispiel werden die folgenden Features veranschaulicht.
- MMDevice-API für Die Aufzählung und Auswahl von Multimediageräten.
- WASAPI für Streamverwaltungsvorgänge.
Anforderungen
Produkt | Version |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
Herunterladen des Beispiels
Dieses Beispiel ist an den folgenden Speicherorten verfügbar.
Standort | Pfad/URL |
---|---|
Windows SDK | \Programme\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveTimerDriven\... |
Erstellen des Beispiels
Führen Sie zum Erstellen des RenderExclusiveTimerDriven-Beispiels die folgenden Schritte aus:
- Öffnen Sie die CMD-Shell für das Windows SDK, und wechseln Sie zum Beispielverzeichnis RenderExclusiveTimerDriven.
- Führen Sie den Befehl
start WASAPIRenderExclusiveTimerDriven.sln
im Verzeichnis RenderExclusiveTimerDriven aus, um das Projekt WASAPIRenderExclusiveTimerDriven im Visual Studio-Fenster zu öffnen. - Wählen Sie im Fenster die Projektmappenkonfiguration Debuggen oder Freigeben aus, wählen Sie in der Menüleiste das Menü Erstellen aus, und wählen Sie 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 WASAPIRenderExclusiveTimerDriven.vcproj verwendet wird.
Anzeigen der Beispieldateien
Wenn Sie die Demoanwendung erfolgreich erstellen, wird eine ausführbare Datei WASAPIRenderExclusiveTimerDriven.exe generiert. Geben WASAPIRenderExclusiveTimerDriven
Sie zum Ausführen in ein Befehlsfenster gefolgt von erforderlichen oder optionalen Argumenten ein. Das folgende Beispiel zeigt, wie Sie das Beispiel ausführen, indem Sie die Wiedergabedauer auf dem Standardkonsolengerät angeben.
WASAPIRenderExclusiveTimerDriven.exe -d 20 -console
Die folgende Tabelle zeigt die Argumente.
Argument | BESCHREIBUNG |
---|---|
-? | Zeigt Hilfe an. |
-H | Zeigt Hilfe an. |
-f | Sinuswellenfrequenz in Hz. |
-l | Audiorenderlatenz in Millisekunden. |
-d | Sinuswellendauer in Sekunden. |
-M | Deaktiviert die Verwendung von MMCSS. |
-Konsole | Verwenden Sie das Standardkonsolengerät. |
-Kommunikation | Verwenden Sie das Standardkommunikationsgerät. |
-Multimedia | Verwenden Sie das Standard-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 die Switchwerte -f und -d angeben.
RenderExclusiveTimerDriven veranschaulicht timergesteuerte Pufferung. In diesem Modus muss der Client für einen bestimmten Zeitraum warten (die Hälfte der Latenz, die durch den Switchwert -d angegeben wird, in Millisekunden). Wenn der Client zur Hälfte des Verarbeitungszeitraums aufwacht, wird der nächste Satz von Beispielen aus der Engine abgerufen. Vor jedem Verarbeitungsdurchlauf in der Pufferschleife muss der Client die Menge der zu rendernden Daten ermitteln, damit die Daten den Puffer nicht überlaufen.
Audiodaten, die auf dem angegebenen Gerät wiedergegeben werden sollen, können verarbeitet werden, indem ereignisgesteuerte Pufferung aktiviert wird. Dieser Modus wird im Beispiel RenderExclusiveTimerDriven veranschaulicht.
Weitere Informationen zum Rendern eines Datenstroms finden Sie unter Rendern eines Streams.
Zugehörige Themen