Freigeben über


DuckingCaptureSample

Diese Beispielanwendung veranschaulicht das Öffnen und Schließen von Kommunikationsdatenströmen und das Verursachen von Duckingereignissen, die eine Anwendung abrufen kann, um die Streamdämpfung zu implementieren. Diese Anwendung implementiert einen Chatclient, der Core Audio-APIs verwendet, um Audiodaten von einem Kommunikationsgerät zu lesen und auf dem Ausgabegerät wiederzugeben.

Dieses Thema enthält folgende Abschnitte:

BESCHREIBUNG

In diesem Beispiel werden die folgenden Features veranschaulicht.

  • MMDevice-API für Die Aufzählung und Auswahl von Multimediageräten.
  • WASAPI für den Zugriff auf das Kommunikationserfassungs- und Rendergerät, die Streamverwaltungsvorgänge und die Behandlung von Duckingereignissen.
  • WAVE-APIs für den Zugriff auf das Kommunikationsgerät und die Erfassung von Audioeingaben.

Anforderungen

Produkt Version
Windows SDK Windows 7
Visual Studio 2008

 

Herunterladen des Beispiels

Dieses Beispiel ist an den folgenden Speicherorten verfügbar.

Position Pfad/URL
Windows SDK \Programme\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\DuckingCaptureSample\...

 

Erstellen des Beispiels

Führen Sie zum Erstellen des DuckingCaptureSample-Beispiels die folgenden Schritte aus:

  1. Öffnen Sie DuckingCaptureSample.sln in Visual Studio 2008.
  2. 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 DuckingCaptureSample.vcproj verwendet wird.

Ausführen des Beispiels

Wenn Sie die Anwendung erfolgreich erstellen, wird eine ausführbare Datei DuckingCaptureSample.exe generiert. Wählen Sie zum Ausführen im Menü Debuggen die Option Debuggen starten oder Ohne Debuggen starten aus, oder geben Sie DuckingCaptureSample in ein Befehlsfenster ein.

DuckingCaptureSample stellt dem Benutzer zwei Implementierungen bereit, um Audio vom Standardkonsolengerät zu erfassen: WASAPI und Wave-APIs. Um eine Aufzeichnungssitzung zu starten, wählen Sie einen Modus aus, und klicken Sie auf der Benutzeroberfläche der Anwendung auf Start . Klicken Sie zum Beenden der Sitzung auf Beenden. Abhängig vom vom Benutzer angegebenen Gerät (Eingabe oder Ausgabe) verwendet die Anwendung die MMDevice-API, um einen Verweis auf das Standardrendering- oder Aufzeichnungskommunikationsgerät abzurufen. Nachdem der Benutzer eine Chatsitzung gestartet hat, führt die Anwendung die folgenden Aufgaben aus:

  • Erstellt und initialisiert einen Audioclient im ereignisgesteuerten Modus.
  • Ordnet den Client dem Ereignishandle zu, das signalisiert, dass die Beispiele für die Erfassung oder das Rendering bereit sind.
  • Richtet einen Erfassungsclient und einen Renderingclient für den Transport ein.
  • Erstellt den Chatthread und startet die Audio-Engine.

Zum Erfassen von Audiodaten verwendet das Beispiel bei jedem Verarbeitungsdurchlauf den Erfassungsclient, um die Gesamtmenge der erfassten Daten abzurufen, die im Puffer verfügbar ist, daten vom Standardeingabegerät zu lesen und das Paket freizugeben und den Puffer zum Lesen des nächsten Datensatzes verfügbar zu machen.

Zum Rendern bestimmt die Anwendung die Datenmenge, die in die Warteschlange gestellt wird, um sie im Erfassungsendpunktpuffer abzuspielen. Entsprechend schreibt es in den Puffer und gibt den Puffer zur Vorbereitung auf den nächsten Verarbeitungsdurchlauf frei, bis alle Daten geschrieben wurden. Für das Rendern werden unbeaufsichtigte Frames vorgerollt, um zu verhindern, dass die Audio-Engine beim Start zu störungen. DuckingCaptureSample zeigt auch, wie der Renderstream vor dem Volumemischer ausgeblendet wird.

Weitere Informationen zur Streamdämpfungsfunktion finden Sie unter Verwenden eines Kommunikationsgeräts.

SDK-Beispiele, die die Core-Audio-APIs verwenden