Condividi tramite


Classe CBaseStreamControl

[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 cbasestreamcontrol

Questa classe implementa l'interfaccia IAMStreamControl per i pin di input e output. Fornisce il controllo sull'avvio e l'arresto di un singolo pin sul filtro. Un pin che supporta IAMStreamControl deve ereditare da questa classe di base. Di seguito è riportata una dichiarazione tipica per un pin di input:

class CMyInputPin : public CBaseInputPin, public CBaseStreamControl

Assicurarsi di eseguire l'override di NonDelegatingQueryInteface per esporre IAMStreamControl. Per altre informazioni, vedere Come implementare IUnknown.

Metodi pubblici Descrizione
CBaseStreamControl Metodo costruttore.
~CBaseStreamControl Metodo distruttore.
CheckStreamState Determina se un esempio multimediale deve essere recapitato o rimosso.
Flushing Notifica alla classe di base che il pin è stato avviato o arrestato lo scaricamento.
NotifyFilterState Notifica al pin quando lo stato del filtro cambia.
SetFilterGraph Specifica il sink di eventi per gli eventi di controllo di flusso.
SetSyncSource Notifica alla classe di base dell'orologio di riferimento corrente.
Metodi IAMStreamControl Descrizione
GetInfo Recupera informazioni sulle impostazioni correnti del controllo di flusso, inclusi gli orari di avvio e arresto.
StartAt Informa il pin quando iniziare a recapitare i dati.
Stopat Informa il pin quando interrompere la distribuzione dei dati.

Commenti

Questa classe richiede il pin e il filtro proprietario per notificare alla classe quando si verificano vari eventi, ad esempio il filtro che unisce il grafico o riceve un nuovo orologio di riferimento. È necessario chiamare i metodi di classe seguenti:

La CBaseStreamControl classe usa l'orologio di riferimento del grafico del filtro per determinare quali esempi devono essere recapitati dal filtro e che deve essere rimosso. Nel metodo IMemInputPin::Receive del pin chiamare il metodo CBaseStreamControl::CheckStreamState con un puntatore all'esempio multimediale in ingresso. Se il metodo restituisce il valore STREAM_FLOWING, recapitare l'esempio downstream. In caso contrario, eliminarlo.

Requisiti

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