Diretrizes para registrar filtros

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

As informações do registro de filtro determinam como o Gerenciador de Grafo de Filtro funciona durante a Conexão Inteligente. Portanto, isso afeta todos os aplicativos gravados para o DirectShow, não apenas os que usarão o filtro. Você deve garantir que o filtro se comporte corretamente seguindo estas diretrizes.

  1. Você precisa dos dados de filtro no Registro? Para muitos filtros personalizados, não há nenhum motivo para tornar o filtro visível para o Mapeador de Filtro ou o Enumerador de Dispositivo do Sistema. Desde que você registre a DLL, seu aplicativo pode criar o filtro usando CoCreateInstance. Nesse caso, basta omitir a estrutura AMOVIESETUP_FILTER do modelo de fábrica. (Uma desvantagem é que o filtro não ficará visível no GraphEdit. Para contornar isso, você pode criar uma categoria privada de "Teste" usando o método IFilterMapper2::CreateCategory . Você só deve fazer isso para compilações de depuração.)

  2. Escolha a categoria de filtro correta. A categoria padrão "Filtros directShow" é para filtros de uso geral. Sempre que apropriado, registre o filtro em uma categoria mais específica. Quando IFilterMapper2 procura um filtro, ele ignora qualquer categoria cujo mérito é MERIT_DO_NOT_USE ou menos. Categorias não destinadas à reprodução normal têm baixo mérito.

  3. Evite especificar MEDIATYPE_None, MEDIASUBTYPE_None ou GUID_NULL nas informações de AMOVIESETUP_MEDIATYPE para um pin. IFilterMapper2 os trata como curingas, o que pode retardar o processo de criação de grafo.

  4. Escolha o menor valor de mérito possível. Aqui estão algumas diretrizes:

    Tipo de filtro Mérito recomendado
    Renderizador padrão MERIT_PREFERRED. No entanto, para tipos de mídia padrão, um renderizador personalizado nunca deve ser o padrão.
    Renderizador não padrão MERIT_DO_NOT_USE ou MERIT_UNLIKELY
    Mux MERIT_DO_NOT_USE
    Decodificador MERIT_NORMAL
    Spitter, analisador MERIT_NORMAL ou inferior
    Filtro de finalidade especial; qualquer filtro criado diretamente pelo aplicativo MERIT_DO_NOT_USE
    Capturar MERIT_DO_NOT_USE
    Filtro "Fallback"; por exemplo, o Filtro de Conversor de Espaço de Cor MERIT_UNLIKELY

     

    Se você estiver dando a um filtro um mérito de MERIT_DO_NOT_USE, considere se você precisa registrar essas informações em primeiro lugar. (Consulte o item 1.)

  5. Não registre um filtro na categoria "Filtros do DirectShow" que aceite RGB de 24 bits. O filtro interferirá no filtro Conversor de Espaço de Cor.

Como registrar filtros do DirectShow