IngCaptureSample

Diese Beispielanwendung veranschaulicht das Öffnen und Schließen von Kommunikationsstreams und führt zu Verhendungsereignissen, die eine Anwendung erhalten 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 wieder zu spielen.

Dieses Thema enthält folgende Abschnitte:

BESCHREIBUNG

In diesem Beispiel werden die folgenden Features veranschaulicht.

  • MMDevice-API für die Enumeration und Auswahl von Multimedia-Geräten.
  • WASAPI für den Zugriff auf das Kommunikationserfassungs- und -rendergerät, Datenstromverwaltungsvorgänge und die Behandlung von Entschningereignissen.
  • WAVE-APIs für den Zugriff auf das Kommunikationsgerät und das Erfassen von Audioeingaben.

Requirements (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 \ \ \ AntivirusIngCaptureSample \ ...

Erstellen des Beispiels

Führen Sie die folgenden Schritte aus, um das Beispiel "IngCaptureSample" zu erstellen:

  1. Öffnen Sie die Datei "IngCaptureSample.sln" im Visual Studio 2008.
  2. Wählen Sie im Fenster die Projektmappenkonfiguration Debuggen oder Release aus, wählen Sie in der Menüleiste das Menü Erstellen und dann die Option Erstellen aus. Wenn Sie die Visual Studio cmd-Shell für das SDK nicht öffnen, hat Visual Studio keinen Zugriff auf die SDK-Buildumgebung. In diesem Fall wird das Beispiel nur erstellt, wenn Sie explizit die Umgebungsvariable MSSdk festlegen, die in der Projektdatei "IngCaptureSample.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 in ein DuckingCaptureSample Befehlsfenster ein.

Mit "TwoingCaptureSample" erhalten Benutzer zwei Implementierungen zum Erfassen von Audiodaten vom Standardkonsolengerät: WASAPI- und Wave-APIs. Wählen Sie zum Starten einer Erfassungssitzung einen Modus aus, und klicken Sie auf der Benutzeroberfläche der Anwendung auf Starten. Klicken Sie auf Beenden, um die Sitzung zu beenden. Je nach dem vom Benutzer angegebenen Gerät (Eingabe oder Ausgabe) verwendet die Anwendung die MMDevice-API, um einen Verweis auf das Standardmäßige Rendering- oder Erfassungskommunikationsgerät zu erhalten. 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 Ereignishand handle zu, das signalisiert, dass Stichproben 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 Verarbeitungslauf den Erfassungsclient, um die Gesamtmenge der erfassten Daten zu erhalten, die im Puffer verfügbar sind, Daten vom Standardeingabegerät zu lesen, das Paket frei zu geben und den Puffer zum Lesen des nächsten Sets erfasster Daten zur Verfügung zu stellen.

Für das Rendering bestimmt die Anwendung die Datenmenge, die in die Warteschlange eingereiht wird, um sie im Puffer des Erfassungsendpunkts wieder zu verwenden. Er schreibt entsprechend in den Puffer und gibt den Puffer als Vorbereitung auf den nächsten Verarbeitungslauf frei, bis alle Daten geschrieben wurden. Für das Rendering werden unbesendete Frames vorabrollt, um zu verhindern, dass die Audio-Engine beim Start nicht mehr ausgeführt wird. Außerdem wird gezeigt, wie sie den Renderstream aus dem Volumemixer ausblenden.

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

SDK-Beispiele, die die Kernaudio-APIs verwenden