Synth-Filterbeispiel
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
BESCHREIBUNG
Der Synth-Filter ist ein Quellfilter, der Audiowellenformen generiert.
Dieser Filter veranschaulicht das Erstellen dynamischer Diagramme. Es kann zwischen unkomprimiertem PCM-Audio und komprimiertem MS_ADPCM-Format (Microsoft Adaptive Delta Pulse Code Modulation) wechseln.
Dieser Filter wird in GraphEdit als "Audiosynthesizerfilter" angezeigt.
Weitere Informationen zum Erstellen dynamischer Diagramme finden Sie unter Erstellen von dynamischen Graphen.
Verbrauch
Der Synth-Filter ermöglicht es dem Benutzer, die Wellenform, die Frequenz, die Anzahl der Kanäle und andere Eigenschaften über die Eigenschaftenseite festzulegen. Um entweder den oberen oder unteren Endpunkt des gefepten Frequenzbereichs festzulegen, halten Sie die UMSCHALTTASTE gedrückt, während Sie den Frequenzschieberegler anpassen. Der Filter unterstützt auch die benutzerdefinierte Schnittstelle ISynth2 zum Festlegen dieser Eigenschaften.
Gehen Sie wie folgt vor, um das Feature zum Erstellen dynamischer Diagramme zu veranschaulichen:
- Erstellen Sie den Filter, und registrieren Sie ihn mit dem Hilfsprogramm Regsvr32.
- Starten Sie GraphEdit.
- Fügen Sie den Filter Audiosynthesizer ein. Sie wird in der Kategorie DirectShow-Filter angezeigt.
- Rendern Sie den Ausgabepin des Filters.
- Klicken Sie auf die Schaltfläche Wiedergeben .
- Öffnen Sie die Eigenschaftenseite des Filters.
- Wählen Sie im Bereich Ausgabeformat die Option PCM oder Microsoft ADPCM aus.
Programmieranmerkungen
Dieses Beispiel enthält die folgenden Dateien:
- Dynsrc.h, Dynsrc.cpp: Enthält zwei Basisklassen für Quellfilter, die das Erstellen dynamischer Diagramme unterstützen: CDynamicSource und CDynamicSourceStream.
- ISynth.h: Deklariert die benutzerdefinierte ISynth2-Schnittstelle zum Festlegen von Eigenschaften für den Filter.
- Resource.h: Enthält Ressourcenkonstanten.
- Synth.def: Exportiert die DLL-Funktionen, die von der COM-Bibliothek benötigt werden.
- Synth.h, Synth.cpp: Enthält die CAudioSynth-Klasse, die die Audiodaten generiert, und die CSynthFilter-Klasse, die den Filter implementiert.
- Synth.rc: Enthält vom Filter verwendete Ressourcen.
- Synthprp.h, Synthprp.cpp: Implementiert die Eigenschaftenseite des Filters.
Die CDynamicSource-Klasse wird von der CSource-Basisklasse angepasst. Es verwendet einen oder mehrere Ausgabepins, die von der CDynamicSourceStream-Klasse abgeleitet sind. Die CDynamicSourceStream-Klasse wird von der CSourceStream-Klasse angepasst, wird aber von der CDynamicOutputPin-Klasse und nicht von der CBaseOutputPin-Klasse abgeleitet.
Die CDynamicSource-Klasse verfügt über die folgenden Methoden, die in CSource nicht gefunden wurden:
- Stop: Signalisiert das Stop-Ereignis (CDynamicOutputPin::m_hStopEvent) und beendet den Workerthread für alle nicht verbundenen Pins. Bei einem verbundenen Pin wird der Arbeitsthread von der Inactive-Methode des Pins heruntergefahren.
- Pause: Setzt das Stop-Ereignis zurück.
- JoinFilterGraph: Ruft die CDynamicOutputPin::SetConfigInfo-Methode an jedem Pin auf.
Die CDynamicSourceStream-Klasse verfügt über die folgenden Methoden, die in CSourceStream nicht gefunden wurden:
- DestroySourceThread: Beendet den Workerthread.
- FatalError: Signalisiert einen Fehler an den Filterdiagramm-Manager.
- OutputPinNeedsToBeReconnected: Signalisiert, dass der Ausgabepin wiederhergestellt werden soll. Wenn diese Methode aufgerufen wird, ruft der Workerthread die CDynamicOutputPin::D ynamicReconnect-Methode auf, um den Pin wiederherzustellen.
Herunterladen des Beispiels
Installieren Sie zum Herunterladen der DirectShow SDK-Beispiele die neueste Version des Windows SDK.
Dieses Beispiel wird unter dem folgenden Pfad installiert: [SDK-Stamm]\Samples\Multimedia\DirectShow\Filters\Synth.
Zugehörige Themen