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.
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.)
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.
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.
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.)
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.
Tópicos relacionados