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.]
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:
- Derivar uma classe de CSourceStream.
- Substitua o método CSourceStream::GetMediaType e, possivelmente, o método CSourceStream::CheckMediaType , que valida tipos de mídia para o pino.
- Implemente o método CBaseOutputPin::D ecideBufferSize , que retorna os requisitos de buffer do pin.
- Implemente o método CSourceStream::FillBuffer , que preenche um buffer de exemplo de mídia com dados.
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 |
|
Biblioteca |
|