Compartilhar via


Classe CSource

[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.]

hierarquia da classe csource

A classe CSource é uma classe base para implementar filtros de origem. Um filtro derivado de CSource contém um ou mais pinos de saída derivados da classe CSourceStream . Cada pino de saída cria um thread de trabalho que envia amostras de mídia para baixo.

Observação

A classe CSource foi projetada para dar suporte ao modelo de push para o fluxo de dados. Essa classe não é recomendada para criar filtros de leitor de arquivo. Os leitores de arquivos devem dar suporte ao modelo de pull por meio da interface IAsyncReader . Para obter mais informações, consulte Fluxo de Dados para desenvolvedores de filtro.

Variáveis de membro protegidas Descrição
m_iPins Número de pinos no filtro.
m_paStreams Matriz de pinos.
m_cStateLock Objeto de seção crítico que protege o estado do filtro.
Métodos públicos Descrição
Csource Método de construtor.
~Csource Método destruidor.
GetPinCount Recupera o número de pinos no filtro.
Getpin Recupera um pino.
pStateLock Recupera um ponteiro para o objeto de seção crítico do filtro.
AddPin Adiciona um novo pino de saída ao filtro.
RemovePin Remove um pino especificado do filtro.
FindPinNumber Recupera o número de um pino especificado no filtro.
Métodos IBaseFilter Descrição
Findpin Recupera o pino com o identificador especificado.

Comentários

Para implementar um pino de saída, faça o seguinte:

Para implementar o filtro, faça o seguinte:

  • Derivar uma classe de CSource.
  • No construtor, crie um ou mais pinos de saída derivados de CSourceStream. Os pinos se adicionam automaticamente ao filtro em seus métodos de construtor e removem-se em seus métodos destruidores.

Para sincronizar o estado do filtro entre vários threads, chame o método CSource::p StateLock . Esse método retorna um ponteiro para a seção crítica de estado de filtro. Use a classe CAutoLock para manter a seção crítica. Em um pin, você pode acessar pStateLock da variável de membro CBasePin::m_pFilter do pin, da seguinte maneira:

CAutoLock lock(m_pFilter->pStateLock());

Requisitos

Requisito Valor
parâmetro
Source.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Gravando filtros de origem