Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído pelo MediaPlayer, IMFMediaEngine e Captura de áudio/vídeo no Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer, o IMFMediaEngine e a Captura de áudio/vídeo no Media Foundation em vez do 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.]
Este artigo descreve a biblioteca de classes base do Microsoft DirectShow. Essa biblioteca destina-se a desenvolvedores de filtro, mas desenvolvedores de aplicativos podem achar algumas das classes auxiliares e utilitários de depuração interessantes. No entanto, a biblioteca de classes base não é necessária para a programação do DirectShow.
As seções a seguir resumem as classes base mais importantes da biblioteca.
Classes de objeto COM
As seguintes classes dão suporte à criação de objetos COM:
| Classe | Descrição |
|---|---|
| CBaseObject | Classe de objeto base. |
| CUnknown | Implementa a interface IUnknown. |
A maioria das classes do DirectShow derivam de CBaseObject. Essa classe fornece assistência de depuração mantendo uma contagem de todos os objetos ativos na DLL em tempo de execução. Em builds de depuração, a DLL declara se ela é descarregada enquanto a contagem de objetos é maior que zero. Isso facilita o rastreamento de vazamentos causados por problemas de contagem de referência.
Todas as classes base que dão suporte a interfaces COM derivam do CUnknown, que herda o CBaseObject. A classe CUnknown dá suporte à contagem de referência, QueryInterface e agregação. Para obter mais informações, consulte Como implementar o IUnknown.
Filtrar e marcar classes
As seguintes classes dão suporte à criação de objetos de filtro e pino do DirectShow.
| Classe | Descrição |
|---|---|
| CBaseFilter | Classe base para filtros. Implementa a interface IBaseFilter. |
| CBasePin | Classe base para pinos. Implementa as interfaces IPin e IQualityControl. |
| CBaseInputPin | Classe base para pinos de entrada que usam o transporte de memória local. Implementa a interface IMemInputPin . Essa classe deriva de CBasePin. |
| CBaseOutputPin | Classe base para pinos de saída que usam conexões IMemInputPin . Essa classe deriva de CBasePin. |
As seguintes classes são úteis para criar tipos mais especializados de filtros:
| Classe | Descrição |
|---|---|
| do CSource | Classe base para filtros de origem. Essa classe foi projetada para criar fontes de push. Não é adequado para fontes de pull, como leitores de arquivo. Para criar pinos de saída para essa classe, use a classe CSourceStream . |
| CTransformFilter | Classe base para filtros de transformação. Essa classe faz uma cópia dos dados. Os pinos dessa classe são CTransformInputPin e CTransformOutputPin. |
| CTransInPlaceFilter | Classe base para filtros de transformação que não copiam dados. Essa classe executa o processamento de dados diretamente nos dados de entrada antes de passá-los para baixo. Os pinos dessa classe são CTransInPlaceInputPin e CTransInPlaceOutputPin. |
| CVideoTransformFilter | Classe base para filtros de transformação de vídeo. Essa classe deriva de CTransformFilter e adiciona suporte para controle de qualidade. |
| do CBaseRenderer | Classe base para filtros de renderizador. O pino de entrada dessa classe é CRendererInputPin. |
| CBaseVideoRenderer | Classe base para renderizadores de vídeo. Essa classe deriva do CBaseRenderer. |
Para usar essas classes, você deve derivar sua própria classe e escrever código para dar suporte à funcionalidade específica do filtro. Quanto mais especializada a classe base, menos código você precisará escrever em sua classe derivada.
Objetos auxiliares
As classes a seguir implementam objetos auxiliares que são usados por filtros e pinos. A maioria dessas classes pode ser usada sem derivar novas classes delas:
| Classe | Descrição |
|---|---|
| CPullPin | Objeto auxiliar para pinos de entrada em filtros de análise. Dá suporte a conexões IAsyncReader com fontes de pull. |
| COutputQueue | Objeto auxiliar para pinos de saída que enfileiram exemplos para entrega em um thread de trabalho. |
| CSourceSeeking | Objeto auxiliar para implementar a busca em um filtro de origem com exatamente um pino de saída. (Essa classe não foi projetada para filtros com vários pinos, como analisadores.) |
| CEnumPins | Objeto enumerador para enumerar pinos em um filtro. Implementa a interface IEnumPins . |
| CEnumMediaTypes | Objeto enumerador para enumerar tipos de mídia preferenciais em um pino. Implementa a interface IEnumMediaTypes . |
| CMemAllocator | Objeto alocador de memória. Implementa a interface IMemAllocator. |
| CMediaSample | Objeto de exemplo de mídia. Implementa a interface IMediaSample2. |
| CBaseReferenceClock | Classe base para relógios de referência. Implementa a interface IReferenceClock . |
| CMediaType | Objeto auxiliar para manipular estruturas de AM_MEDIA_TYPE . |