Condividi tramite


Classe CPullPin

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

gerarchia di classi cpullpin

La CPullPin classe fornisce il supporto per i pin di input che estraggono i dati tramite l'interfaccia IAsyncReader . Usare questa classe se si implementa un filtro che usa il modello pull per richiedere dati dal filtro upstream. Per altre informazioni, vedere Flusso di dati nel grafico di filtro e nel modello pull.

Questa classe non deriva da CBasePin o implementa l'interfaccia IPin e alcuni dei nomi dei metodi si scontrano con IPin, quindi è meglio usato come oggetto helper all'interno del pin. Per usare questa classe, eseguire le operazioni seguenti:

  1. Derivare una classe helper da CPullPine derivare una classe pin di input da CBasePin. Dichiarare un'istanza dell'oggetto CPullPin come variabile membro della classe pin.
  2. Eseguire l'override del metodo CBasePin::CheckConnect per chiamare CPullPin::Connect. Questo metodo esegue una query sull'altro pin per IAsyncReader.
  3. Eseguire l'override del metodo CBasePin::BreakConnect per chiamare CPullPin::D isconnect.
  4. Eseguire l'override del metodo CBasePin::Active per chiamare CPullPin::Active. Questo metodo avvia un thread di lavoro che esegue il pull di esempi dal filtro upstream. Quando i pin si connettono, è possibile specificare se si vuole che il thread di lavoro faccia richieste di lettura asincrone o sincrone.
  5. Eseguire l'override del metodo CBasePin::Inactive per chiamare CPullPin::Inactive. Questo metodo arresta il thread di lavoro.
  6. Implementare il metodo CPullPin::Receive puro per elaborare esempi in ingresso e recapitarli downstream.
  7. Per impostare le posizioni di arresto e avvio oppure per cercare il flusso, chiamare il metodo CPullPin::Seek . Questo metodo sospende il thread di lavoro e scarica il grafico del filtro.
  8. Implementare i metodi CPullPin::EndOfStream, CPullPin::BeginFlush e CPullPin::EndFlush, come descritto nelle osservazioni per tali metodi.
  9. Implementare il metodo CPullPin::OnError puro per gestire gli errori di streaming.
Variabili membro pubbliche Descrizione
m_pAlloc Puntatore all'interfaccia IMemAllocator dell'allocatore di memoria.
Metodi pubblici Descrizione
Attivo Crea un thread di lavoro che esegue il pull dei dati dal pin di output.
AlignDown Tronca un valore a un limite di allineamento specificato.
Allinea Arrotonda un valore fino a un limite di allineamento specificato.
Connettersi Completa una connessione al pin di output.
CPullPin Metodo costruttore.
~CPullPin Metodo distruttore. Virtuale.
DecideAllocator Negozia un allocatore con il pin di output. Virtuale.
Disconnetti Beaks la connessione con il pin di output.
Durata Recupera la durata del flusso.
GetReader Restituisce un puntatore all'interfaccia IAsyncReader del pin di output.
Inactive Arresta il thread di lavoro che esegue il pull dei dati dal pin di output.
Seek Imposta le posizioni di inizio e arresto del flusso.
Metodi virtuali pure Descrizione
BeginFlush Informa il filtro proprietario per scaricare i filtri downstream.
EndFlush Informa il filtro proprietario per terminare un'operazione di scaricamento.
EndOfStream Chiamato dopo che l'oggetto recapita l'ultimo esempio.
OnError Chiamato se si verifica un errore durante lo streaming.
Ricevere Chiamato quando l'oggetto riceve un esempio multimediale dal pin di output.

Requisiti

Requisito Valore
Intestazione
Pullpin.h (includere Streams.h)
Libreria
Strmbase.lib (build al dettaglio);
Strmbasd.lib (build di debug)