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