2016-09-14 4 views
0

Ich versuche, einen benutzerdefinierten DS-Rendering-Filter zu schreiben. Ich entschied mich, von einem Beispielfilter zu starten, der mit dem SDK geliefert wurde, nämlich "Dump". Ich kann DUMP.DLL und zugehörige Dateien erfolgreich erstellen, aber ich kann nicht herausfinden, wie es in meiner App verwendet wird.DirectShow-Beispielfilter: Wie verwendet man?

Es sieht aus wie IFilterMapper2-> RegisterFilter könnte es tun, aber (IMHO) ist es eine Monstrosität und das Dokument ist minimalistisch. Außerdem sehe ich nirgends die DLL als InProcServer angeben, was ich für eine Voraussetzung halte.

Ich habe auch versucht, regsvr32 DUMP.DLL, aber ich bin mir nicht sicher, ob das hilft.

Ich glaube, die Antwort muss einfach sein, aber ich sehe es einfach nicht. Jede Hilfe wird sehr geschätzt werden, vor allem Code-Snipplets (akademische Diskurse sind nicht sehr hilfreich). Außerdem sollte die beste Lösung reines C++ sein (keine Pakete von Drittanbietern oder .NET-Sachen).

Vielen Dank im Voraus,
-Johannes

Antwort

2

Filter werden nicht standalone eingesetzt - sie sind ein Teil einer Pipeline, kommunizieren sie mit anderen Filtern und mit Filter Graph-Manager.

Filter sind tatsächlich mit IFilterMapper2::RegisterFilter Anruf registriert. Beachten Sie, dass die Registrierung bei der Registrierung unter HKLM mit erhöhten Rechten des lokalen Administrators erfolgen muss.

In den meisten Fällen, obwohl es nicht genau so geschehen muss, ist diese Registrierung ein Teil der generischen COM-Registrierung, die durch regsvr32 oder einen gleichwertigen Aufruf erfolgt. Der DLL-Registrierungscode führt normalerweise IFilterMapper2::RegisterFilter für Filter, die es veröffentlicht.

In Dump Beispiel, there is a AMovieDllRegisterServer2 call, die es behandelt, mit Hilfe von g_Templates in der gleichen Datei höher.

Sobald Sie einen Filter registriert haben, kann er von Anwendungen aufgelistet werden. Das erste, was Sie ausprobieren möchten, ist SDK GraphEdit Tool oder seine neuere und leistungsfähigere Open-Source-Ersatz GraphStudioNext.

Ctrl +F öffnet Filterliste, wo Sie Ihr finden und es in Filtergraphen einfügen interaktiv gebaut. Dann verbinden Sie sich mit anderen Filtern und laufen Sie.

Siehe Using GraphEdit auf MSDN.

+0

Ja, ich verstehe, aber meine Frage ist, wie genau "registriere ich einen Filter" (und es zu AddFilter zu einem Diagramm verwenden)? – DontPanic

+0

@DontPanic: Ich habe oben aktualisiert. –

+0

Großartig! Genau das, was ich brauchte. – DontPanic