Compartilhar via


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

hierarquia de classe cpullpin

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:

  1. Derive uma classe auxiliar de CPullPine derive uma classe de pin de entrada de CBasePin. Declare uma instância do CPullPin objeto como uma variável membro da classe pin.
  2. Substitua o método CBasePin::CheckConnect para chamar CPullPin::Connect. Esse método consulta o outro pin para IAsyncReader.
  3. Substitua o método CBasePin::BreakConnect para chamar CPullPin::D isconnect.
  4. 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.
  5. Substitua o método CBasePin::Inactive para chamar CPullPin::Inactive. Esse método desliga o thread de trabalho.
  6. Implemente o método CPullPin::Receive virtual puro para processar amostras de entrada e entregá-las downstream.
  7. 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.
  8. Implemente os métodos CPullPin::EndOfStream, CPullPin::BeginFlush e CPullPin::EndFlush puros, conforme descrito nas observações para esses métodos.
  9. 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
Pullpin.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)