Partager via


Instructions pour l’inscription des filtres

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Les informations du registre de filtres déterminent le fonctionnement du Gestionnaire de graphes de filtre pendant Intelligent Connect. Par conséquent, elle affecte toutes les applications écrites pour DirectShow, pas seulement celles qui utiliseront votre filtre. Vous devez vous assurer que votre filtre se comporte correctement en suivant ces instructions.

  1. Avez-vous besoin des données de filtre dans le Registre ? Pour de nombreux filtres personnalisés, il n’y a aucune raison de rendre le filtre visible pour le mappeur de filtre ou l’énumérateur de périphérique système. Tant que vous inscrivez la DLL, votre application peut créer le filtre à l’aide de CoCreateInstance. Dans ce cas, omettez simplement la structure AMOVIESETUP_FILTER du modèle de fabrique. (L’un des inconvénients est que votre filtre ne sera pas visible dans GraphEdit. Pour contourner ce problème, vous pouvez créer une catégorie « Test » privée à l’aide de la méthode IFilterMapper2::CreateCategory . Vous devez effectuer cette opération uniquement pour les builds de débogage.)

  2. Choisissez la catégorie de filtre appropriée. La catégorie « Filtres DirectShow » par défaut est destinée aux filtres à usage général. Le cas échéant, inscrivez votre filtre dans une catégorie plus spécifique. Lorsque IFilterMapper2 recherche un filtre, il ignore toute catégorie dont le mérite est MERIT_DO_NOT_USE ou moins. Les catégories non destinées à une lecture normale ont un faible mérite.

  3. Évitez de spécifier MEDIATYPE_None, MEDIASUBTYPE_None ou GUID_NULL dans les informations de AMOVIESETUP_MEDIATYPE d’une broche. IFilterMapper2 les traite comme des caractères génériques, ce qui peut ralentir le processus de création de graphiques.

  4. Choisissez la valeur de mérite la plus basse possible. Voici quelques recommandations :

    Type de filtre Mérite recommandé
    Convertisseur par défaut MERIT_PREFERRED. Toutefois, pour les types de médias standard, un renderer personnalisé ne doit jamais être la valeur par défaut.
    Convertisseur autre que par défaut MERIT_DO_NOT_USE ou MERIT_UNLIKELY
    Mux MERIT_DO_NOT_USE
    Décodeur MERIT_NORMAL
    Spitter, analyseur MERIT_NORMAL ou inférieur
    Filtre à usage spécial ; tout filtre créé directement par l’application MERIT_DO_NOT_USE
    Capture MERIT_DO_NOT_USE
    Filtre de secours; par exemple, le filtre Convertisseur d’espace de couleur MERIT_UNLIKELY

     

    Si vous donnez à un filtre un mérite de MERIT_DO_NOT_USE, déterminez si vous devez enregistrer ces informations en premier lieu. (Voir l’élément 1.)

  5. N’inscrivez pas de filtre dans la catégorie « Filtres directShow » qui accepte RVB 24 bits. Votre filtre interférera avec le filtre Convertisseur d’espace de couleur.

Comment inscrire des filtres DirectShow