Richtlinien für die Registrierung von Filtern

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die Informationen zur Filterregistrierung bestimmen, wie der Filter Graph-Manager während Intelligent Connect funktioniert. Daher wirkt es sich auf jede Anwendung aus, die für DirectShow geschrieben wurde, nicht nur auf die Anwendungen, die Ihren Filter verwenden. Sie sollten sicherstellen, dass sich Ihr Filter ordnungsgemäß verhält, indem Sie diese Richtlinien befolgen.

  1. Benötigen Sie die Filterdaten in der Registrierung? Für viele benutzerdefinierte Filter gibt es keinen Grund, den Filter für die Filterzuordnung oder den Systemgeräte-Enumerator sichtbar zu machen. Solange Sie die DLL registrieren, kann Ihre Anwendung den Filter mit CoCreateInstance erstellen. In diesem Fall lassen Sie einfach die AMOVIESETUP_FILTER-Struktur aus der Factoryvorlage aus. (Ein Nachteil ist, dass Ihr Filter in GraphEdit nicht sichtbar ist. Um dies zu umgehen, können Sie mithilfe der IFilterMapper2::CreateCategory-Methode eine private "Testing"-Kategorie erstellen. Sie sollten dies nur für Debugbuilds tun.)

  2. Wählen Sie die richtige Filterkategorie aus. Die Standardkategorie "DirectShow-Filter" ist für Allgemeine Filter vorgesehen. Registrieren Sie Ihren Filter bei Bedarf in einer spezifischeren Kategorie. Wenn IFilterMapper2 nach einem Filter sucht, werden alle Kategorien ignoriert, deren Wert MERIT_DO_NOT_USE oder weniger ist. Kategorien, die nicht für die normale Wiedergabe bestimmt sind, haben nur einen geringen Wert.

  3. Vermeiden Sie es, MEDIATYPE_None, MEDIASUBTYPE_None oder GUID_NULL in den AMOVIESETUP_MEDIATYPE Informationen für eine Pin anzugeben. IFilterMapper2 behandelt diese als Wildcards, die den Prozess der Grapherstellung verlangsamen können.

  4. Wählen Sie den geringstmöglichen Wert aus. Hier finden Sie einige Richtlinien:

    Filtertyp Empfohlene Leistung
    Standardrenderer MERIT_PREFERRED. Für Standardmedientypen sollte jedoch nie ein benutzerdefinierter Renderer standardmäßig sein.
    Nicht standardmäßiger Renderer MERIT_DO_NOT_USE oder MERIT_UNLIKELY
    Mux MERIT_DO_NOT_USE
    Decoder MERIT_NORMAL
    Spitter, Parser MERIT_NORMAL oder niedriger
    Sonderfilter; Alle Filter, die direkt von der Anwendung erstellt werden MERIT_DO_NOT_USE
    Erfassung MERIT_DO_NOT_USE
    "Fallback"-Filter; Beispiel: Farbraumkonverterfilter MERIT_UNLIKELY

     

    Wenn Sie einem Filter einen Wert von MERIT_DO_NOT_USE geben, überlegen Sie, ob Sie diese Informationen überhaupt registrieren müssen. (Siehe Punkt 1.)

  5. Registrieren Sie keinen Filter in der Kategorie "DirectShow-Filter", der 24-Bit-RGB akzeptiert. Ihr Filter beeinträchtigt den Filter für den Farbraumkonverter.

Registrieren von DirectShow-Filtern