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.
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:
- Nel metodo IMediaFilter::SetSyncSource del filtro chiamare il metodo CBaseStreamControl::SetSyncSource . Questo metodo notifica la classe dell'orologio di riferimento corrente.
- Nel metodo CBaseFilter::JoinFilterGraph del filtro chiamare il metodo CBaseStreamControl::SetFilterGraph . Questo metodo fornisce alla classe un puntatore a Filter Graph Manager, in modo che la classe possa inviare gli eventi di controllo di flusso corretti.
- Ogni volta che il filtro cambia stato (per eseguire, sospeso o arrestato), chiamare il metodo CBaseStreamControl::NotifyFilterState .
- Nei metodi IPin::BeginFlush e IPin::EndFlush chiamare il metodo CBaseStreamControl::Flushing.
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 |
|
Libreria |
|