Compartir a través de


Directrices para registrar filtros

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

La información del registro de filtro determina cómo funciona El Administrador de grafos de filtro durante Intelligent Connect. Por lo tanto, afecta a todas las aplicaciones escritas para DirectShow, no solo las que usarán el filtro. Debe asegurarse de que el filtro se comporta correctamente siguiendo estas instrucciones.

  1. ¿Necesita los datos de filtro en el registro? Para muchos filtros personalizados, no hay ninguna razón para hacer que el filtro sea visible para el asignador de filtros o el enumerador de dispositivos del sistema. Siempre que registre el archivo DLL, la aplicación puede crear el filtro mediante CoCreateInstance. En ese caso, simplemente omita la estructura de AMOVIESETUP_FILTER de la plantilla de fábrica. (Un inconveniente es que el filtro no será visible en GraphEdit. Para evitarlo, puede crear una categoría privada de "Pruebas" mediante el método IFilterMapper2::CreateCategory . Solo debe hacerlo para las compilaciones de depuración).

  2. Elija la categoría de filtro correcta. La categoría predeterminada "Filtros directShow" es para filtros de uso general. Siempre que corresponda, registre el filtro en una categoría más específica. Cuando IFilterMapper2 busca un filtro, omite cualquier categoría cuyo mérito sea MERIT_DO_NOT_USE o menos. Las categorías que no están pensadas para la reproducción normal tienen un mérito bajo.

  3. Evite especificar MEDIATYPE_None, MEDIASUBTYPE_None o GUID_NULL en la información de AMOVIESETUP_MEDIATYPE para un pin. IFilterMapper2 las trata como caracteres comodín, lo que puede ralentizar el proceso de creación de grafos.

  4. Elija el valor de mérito más bajo posible. Estas son algunas directrices:

    Tipo de filtro Mérito recomendado
    Representador predeterminado MERIT_PREFERRED. Sin embargo, en el caso de los tipos de medios estándar, un representador personalizado nunca debe ser el valor predeterminado.
    Representador no predeterminado MERIT_DO_NOT_USE o MERIT_UNLIKELY
    Mux MERIT_DO_NOT_USE
    Descodificador MERIT_NORMAL
    Spitter, analizador MERIT_NORMAL o inferior
    Filtro de propósito especial; cualquier filtro creado directamente por la aplicación MERIT_DO_NOT_USE
    Capturar MERIT_DO_NOT_USE
    Filtro "Reserva"; por ejemplo, el filtro convertidor de espacio de color MERIT_UNLIKELY

     

    Si va a proporcionar un filtro un mérito de MERIT_DO_NOT_USE, considere si necesita registrar esta información en primer lugar. (Véase el elemento 1).

  5. No registre un filtro en la categoría "DirectShow Filters" que acepta RGB de 24 bits. El filtro interferirá con el filtro Convertidor de espacio de colores.

Cómo registrar filtros directShow