Condividi tramite


Linee guida per la registrazione dei filtri

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Le informazioni del Registro di sistema di filtro determinano il funzionamento di Filter Graph Manager durante Intelligent Connect. Pertanto, influisce su ogni applicazione scritta per DirectShow, non solo su quelle che useranno il filtro. È necessario assicurarsi che il filtro si comporti correttamente, seguendo queste linee guida.

  1. Sono necessari i dati del filtro nel Registro di sistema? Per molti filtri personalizzati, non esiste alcun motivo per rendere visibile il filtro al filtro Mapper o all'enumeratore del dispositivo di sistema. Se si registra la DLL, l'applicazione può creare il filtro usando CoCreateInstance. In tal caso, omettere semplicemente la struttura AMOVIESETUP_FILTER dal modello factory. Uno svantaggio è che il filtro non sarà visibile in GraphEdit. Per aggirare questo problema, è possibile creare una categoria "Testing" privata usando il metodo IFilterMapper2::CreateCategory . È consigliabile eseguire questa operazione solo per le compilazioni di debug.

  2. Scegliere la categoria di filtro corretta. La categoria predefinita "DirectShow Filters" è per i filtri per utilizzo generico. Quando appropriato, registrare il filtro in una categoria più specifica. Quando IFilterMapper2 cerca un filtro, ignora qualsiasi categoria il cui merito è MERIT_DO_NOT_USE o meno. Le categorie non destinate alla riproduzione normale hanno un merito basso.

  3. Evitare di specificare MEDIATYPE_None, MEDIASUBTYPE_None o GUID_NULL nelle informazioni di AMOVIESETUP_MEDIATYPE per un pin. IFilterMapper2 considera questi come caratteri jolly, che possono rallentare il processo di compilazione del grafo.

  4. Scegliere il valore di merito più basso possibile. Ecco alcune linee guida:

    Type of filter Merito consigliato
    Renderer predefinito MERIT_PREFERRED. Per i tipi di supporti standard, tuttavia, un renderer personalizzato non deve mai essere l'impostazione predefinita.
    Renderer non predefinito MERIT_DO_NOT_USE o MERIT_UNLIKELY
    Mux MERIT_DO_NOT_USE
    Decodificatore MERIT_NORMAL
    Spitter, parser MERIT_NORMAL o inferiore
    Filtro per scopi speciali; qualsiasi filtro creato direttamente dall'applicazione MERIT_DO_NOT_USE
    Acquisizione MERIT_DO_NOT_USE
    Filtro "Fallback" ; Ad esempio, il filtro del convertitore di spazi colori MERIT_UNLIKELY

     

    Se si assegna un filtro a un merito di MERIT_DO_NOT_USE, valutare se è necessario registrare queste informazioni in primo luogo. (Vedere l'elemento 1.)

  5. Non registrare un filtro nella categoria "DirectShow Filters" che accetta RGB a 24 bit. Il filtro interferisce con il filtro Del convertitore di spazi colori.

Come registrare i filtri DirectShow