Compartilhar via


Filter Base Classes

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

A arquitetura do DirectShow transmitir é baseada em filtros e pinos. Os filtros se comunicar com o filtro gráfico Gerenciador e com os pinos no filtro. Filtros conectar pinos e identificador transportar dados para baixo a transmitir.

CBaseFilter é o classe base para todas as classes filtro. Ela implementa a IBaseFilter interface, que especifica os métodos que permitem que o filtro gráfico Gerenciador para criar e enumerar fixa, recuperar informações filtro e notificar o filtro que ele foi adicionado a um filtro gráfico.

CBaseFilter também implementa o IMediaFilter interface (do qual IBaseFilter deriva) para permitir que o filtro para receber executar, pausa e parar comandos de Gerenciador o filtro de gráfico.

Esta classe base Adiciona funções membro para recuperar a contagem pino, recuperar ponteiros para individual pinos e recuperar a versão pino.

O CBaseMediaFilter classe também implementa o IMediaFilter interface. No entanto, porque IMediaFilter Também é implementada por CBaseFilter, essa classe raramente é usado, exceto para gravar um plug-in o distribuidor (PID).

Diversas classes são derivado diretamente do CBaseFilter. Cada uma dessas classes fornece uma classe base para implementar um tipo específico de filtro. Esses incluem:

O CSource classe filtro funciona em conjunto com o CSourceStream classe pino para ajudá-lo a criar um filtro origem. A maioria do trabalho é feito na classe de pino, e CSource Adiciona funções membro criação e exclusão pino. O CSourcePosition classe implementa um filtro origem.

O CTransformFilter classe implementa um filtro transformar. Se você desejar fazer uma copiar dos dados, derivam sua classe transformar a partir CTransformFilter.

O CTransInPlaceFilter classe, derivado de CTransformFilter, permite em-local transformações que não copiar os dados. Esses filtro transformar classes trabalho em conjunto da mesma forma nomeado classes pino (por exemplo, CTransformOutputPin e CTransformInputPin).

A maioria das funções membro nas classes pino são implementadas para chamar funções membro na classe de filtro transformar, geralmente caso você só precisa derivar o filtro da classe filtro e substituir a few funções membro para implementar um filtro transformar.

CTransformFilter Adiciona várias funções membro aqueles herdadas CBaseFilter. Algumas dessas são funções puro membro virtual que o classe derivada deve substituir.

Um exemplo é o CTransformFilter::Transform função membro, que é chamado quando a entrada pino recebe um exemplo. Essa função membro fornece o núcleo da funcionalidade transformar. Outras funções membro a ser substituído também envolvem implementações que são específicas a classe derivada, such as Verificando tipos de mídia em pinos e alocar o quantidade de memória correto.

Além disso, vários CTransformFilter são funções membro chamado em vários pontos de conexão ou fluxo contínuo o processo. O classe derivada pode substitui-los aos requisitos identificador como adicionando ou liberando referências para interfaces.

O CVideoTransformFilter classe deriva da CTransformFilter classe e é usado como um classe base para filtros que podem afetar a qualidade de um vídeo gerado por descartando quadros quando o vídeo processador envia qualidade-controle mensagens. Essa classe é usada principalmente por vídeo descompactadores em tempo de execução o DirectShow.

O CBaseRenderer classe e seu classe derivada, CBaseVideoRenderer, são as classes filtro de base que implementar um vídeo filtro processador. O vídeo filtro processador usado no DirectShow é derivado de CBaseVideoRenderer.

Outro processador classes trabalho em conjunto com essas classes, mas não são derivado de CBaseFilter, incluindo o seguinte:

A seguinte ilustração mostra todas as classes que renderers suporte que não são derivado de CBaseFilter Ou CBasePin.