2016-05-08 21 views
-1

ich den Medialooks Multisource-Filter in meiner Anwendung verwenden möchten, hat Dieser Eintrag in HKEY_CURRENT_USER \ SOFTWARE \ Classes \ CLSID \ Aber ich habe immer noch diesen Filter manuell hinzufügen verwenden CLS_ID und AddFilter Funktion.Wie Directshow machen Diagramm erstellen automatisch mit verfügbaren Filtern

Gibt es eine Möglichkeit, so dass Render Funktion von DShow automatisch ein Diagramm erstellt, indem die Filter aus der Registry Aufzählen

Karo in Grphedt Werkzeug, aber wenn ich manuell Filter einsetzen und schließe ich die Videos abspielen kann richtig.Andernfalls wird es nicht automatisch rendern durch Erstellen der Grafik

Antwort

1

Fähigkeit yo connect Filter und erhalten Sie eine Topologie Ihres Interesses ist eine Sache, und diese Art der Verbindung stattfindet während Intelligent Connect ist eine andere Sache. Für Intelligent Connect und RenderFile müssen die Filter von Interesse offensichtlich registriert werden, und dann haben sie genaue DirectShow-Registrierungsdetails: Verdienst, Medientypen. Ziemlich oft fehlt Filtern diese Registrierung (und zu anderen Zeiten "überregistrieren" sie sich selbst, so dass sie aufgenommen werden, wenn sie offensichtliches Fehlverhalten sind).

Obwohl Sie Filter selbst registrieren können (siehe IFilterMapper2::RegisterFilter) mit alternativen Registrierungsdetails, tun Sie es normalerweise nicht. Es ist die Aufgabe des Filterentwicklers, sich genau zu registrieren. Die bessere Alternative für Sie besteht darin, ein Diagramm mit AddFilter Aufrufen zu erstellen, bei denen Sie die Konstruktion des Diagramms genau steuern können. Oder Sie möchten es als Fallback-Konstruktionsmethode ausführen, wenn RenderFile an erster Stelle fehlschlägt.

+0

Wie kann ich bestätigen, dass der Filter richtig registriert ist oder nicht? – Gajukorse

+0

Sie können die Registrierung mit GraphEdit, GraphStudioNext oder ähnlichem überprüfen. Vergleichen Sie dann mit [Richtlinien zum Registrieren von Filtern] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd388793) und entscheiden Sie, ob es korrekt ist oder nicht. Ob es der Absicht entspricht und was vom Entwickler getan werden soll, oder eher wie ein Fehler oder eine Ungenauigkeit aussieht. –

+0

Ich fand, wie Verdienst oder Filter auf MERIT_DO_NOT_USE (0x002000) vom grphedit Werkzeug eingestellt wird. Dieses ist ein Quellfilter. Kann ich den Verdienst des Filters mich ändern? – Gajukorse