Classe CPullPin
[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 CPullPin
classe fornece suporte para pinos de entrada que efetuam pull de dados por meio da interface IAsyncReader . Use essa classe se você estiver implementando um filtro que usa o modelo de pull para solicitar dados do filtro upstream. Para obter mais informações, consulte Fluxo de Dados no grafo de filtro e no modelo de pull.
Essa classe não deriva de CBasePin nem implementa a interface IPin e alguns dos nomes de método entram em conflito com IPin, portanto, ela é melhor usada como um objeto auxiliar dentro do pin. Para usar essa classe, faça o seguinte:
- Derive uma classe auxiliar de
CPullPin
e derive uma classe de pin de entrada de CBasePin. Declare uma instância doCPullPin
objeto como uma variável membro da classe pin. - Substitua o método CBasePin::CheckConnect para chamar CPullPin::Connect. Esse método consulta o outro pin para IAsyncReader.
- Substitua o método CBasePin::BreakConnect para chamar CPullPin::D isconnect.
- Substitua o método CBasePin::Active para chamar CPullPin::Active. Esse método inicia um thread de trabalho que extrai amostras do filtro upstream. Quando os pinos se conectam, você pode especificar se deseja que o thread de trabalho faça solicitações de leitura assíncronas ou síncronas.
- Substitua o método CBasePin::Inactive para chamar CPullPin::Inactive. Esse método desliga o thread de trabalho.
- Implemente o método CPullPin::Receive virtual puro para processar amostras de entrada e entregá-las downstream.
- Para definir as posições de parada e início, ou para buscar o fluxo, chame o método CPullPin::Seek . Esse método pausa o thread de trabalho e libera o grafo de filtro.
- Implemente os métodos CPullPin::EndOfStream, CPullPin::BeginFlush e CPullPin::EndFlush puros, conforme descrito nas observações para esses métodos.
- Implemente o método CPullPin::OnError virtual puro para lidar com erros de streaming.
Variáveis de membro público | Descrição |
---|---|
m_pAlloc | Ponteiro para a interface IMemAllocator do alocador de memória. |
Métodos públicos | Descrição |
Ativo | Cria um thread de trabalho que extrai dados do pino de saída. |
AlignDown | Trunca um valor para um limite de alinhamento especificado. |
AlignUp | Arredonda um valor até um limite de alinhamento especificado. |
Conectar | Conclui uma conexão com o pino de saída. |
Cpullpin | Método de construtor. |
~Cpullpin | Método destruidor. Virtual. |
DecideAllocator | Negocia um alocador com o pino de saída. Virtual. |
Desconectar | Indica a conexão com o pino de saída. |
Duração | Recupera a duração do fluxo. |
Getreader | Retorna um ponteiro para a interface IAsyncReader do pino de saída. |
Inativo | Desliga o thread de trabalho que extrai dados do pino de saída. |
Seek | Define as posições de início e parada do fluxo. |
Métodos virtuais puros | Descrição |
Beginflush | Informa o filtro proprietário para liberar os filtros downstream. |
Endflush | Informa o filtro proprietário para encerrar uma operação de liberação. |
EndOfStream | Chamado depois que o objeto entrega o último exemplo. |
OnError | Chamado se ocorrer um erro durante o streaming. |
Receber | Chamado quando o objeto recebe um exemplo de mídia do pino de saída. |
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|