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.
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:
- Derivare una classe helper da
CPullPin
e derivare una classe pin di input da CBasePin. Dichiarare un'istanza dell'oggettoCPullPin
come variabile membro della classe pin. - Eseguire l'override del metodo CBasePin::CheckConnect per chiamare CPullPin::Connect. Questo metodo esegue una query sull'altro pin per IAsyncReader.
- Eseguire l'override del metodo CBasePin::BreakConnect per chiamare CPullPin::D isconnect.
- 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.
- Eseguire l'override del metodo CBasePin::Inactive per chiamare CPullPin::Inactive. Questo metodo arresta il thread di lavoro.
- Implementare il metodo CPullPin::Receive puro per elaborare esempi in ingresso e recapitarli downstream.
- 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.
- Implementare i metodi CPullPin::EndOfStream, CPullPin::BeginFlush e CPullPin::EndFlush, come descritto nelle osservazioni per tali metodi.
- 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 |
|
Libreria |
|