Metodo ICaptureGraphBuilder2::ControlStream (strmif.h)
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il ControlStream
metodo imposta gli orari di inizio e arresto per uno o più flussi di dati acquisiti.
Sintassi
HRESULT ControlStream(
[in] const GUID *pCategory,
[in] const GUID *pType,
[in] IBaseFilter *pFilter,
[in] REFERENCE_TIME *pstart,
[in] REFERENCE_TIME *pstop,
[in] WORD wStartCookie,
[in] WORD wStopCookie
);
Parametri
[in] pCategory
Puntatore a un GUID che specifica una delle categorie di pin elencate in Pin Property Set. Il valore di questo parametro non può essere NULL.
[in] pType
Puntatore a un GUID di tipo principale che specifica il tipo di supporto o NULL. Se questo parametro è NULL, impostare anche il parametro pFilter su NULL . In caso contrario, è possibile controllare il pin errato e ottenere risultati imprevedibili.
[in] pFilter
Puntatore a un'interfaccia IBaseFilter che specifica il filtro da controllare. Per controllare tutti i filtri di acquisizione nel grafico, impostare questo parametro su NULL.
[in] pstart
Puntatore a una variabile contenente l'ora di inizio. Se il valore è MAXLONGLONG (0x7FFFFFFFFFFFFFFF), il metodo annulla la richiesta di avvio precedente. Se il valore è NULL, il pin viene avviato immediatamente quando viene eseguito il grafico.
[in] pstop
Puntatore a una variabile che contiene l'ora di arresto. Se il valore è MAXLONGLONG, il metodo annulla qualsiasi richiesta di arresto precedente. Se il valore è NULL, il pin viene arrestato immediatamente.
[in] wStartCookie
Valore inviato come secondo parametro della notifica degli eventi EC_STREAM_CONTROL_STARTED . Per ulteriori informazioni, vedere la sezione Osservazioni.
[in] wStopCookie
Valore inviato come secondo parametro della notifica degli eventi EC_STREAM_CONTROL_STOPPED . Per ulteriori informazioni, vedere la sezione Osservazioni.
Valore restituito
Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.
Codice restituito | Descrizione |
---|---|
|
Almeno un renderer downstream non invierà una notifica di arresto. |
|
Operazione completata. |
|
Impossibile trovare un pin corrispondente oppure il pin non supportava il controllo del flusso. |
|
Argomento puntatore NULL. |
Commenti
Questo metodo individua i pin di output nei filtri di acquisizione, usando i criteri di ricerca specificati nella chiamata al metodo. Chiama quindi i metodi IAMStreamControl su tali pin. Questo metodo consente a un'applicazione di controllare i flussi senza che l'applicazione debba enumerare i filtri e i puntini nel grafico.
Usare questo metodo per l'acquisizione accurata dei fotogrammi o per il controllo individuale dell'acquisizione e dell'anteprima. Ad esempio, è possibile arrestare l'acquisizione su disco ma lasciare in esecuzione l'anteprima video.
I primi tre parametri specificano i pin da controllare. Un grafico di acquisizione può avere più di un filtro di acquisizione. Ad esempio, potrebbe avere filtri per i dati di video, audio e sottotitoli. Inoltre, un filtro di acquisizione può avere più di un pin di output. Alcuni filtri di acquisizione hanno pin separati per l'anteprima e l'acquisizione o pin separati per dati solo video e dati interleaved audio-video. Per controllare l'anteprima video, ad esempio, specificare PIN_CATEGORY_PREVIEW per pCategory e MEDIATYPE_Video per pType.
Se la categoria pin è PIN_CATEGORY_PREVIEW, non è possibile impostare orari di inizio e arresto specifici, perché gli esempi recapitati da un pin di anteprima non hanno timestamp (vedere Timestamp). Usare invece i valori NULL e MAXLONGLONG per avviare e arrestare il pin nei momenti desiderati.
Inoltre, questo metodo non è supportato per l'anteprima se il dispositivo usa un pin di porta video, perché in questo caso il dispositivo distribuisce gli esempi di anteprima direttamente sull'hardware.
Quando questo metodo individua un pin corrispondente, cerca un altro filtro downstream che supporta IAMStreamControl (in genere un multiplexer). Se ne trova uno, imposta anche l'ora di inizio e di arresto per tale filtro. Vengono generate due coppie di notifiche di arresto: una per il filtro di acquisizione e una per il filtro downstream. Solo la notifica di arresto dal filtro downstream usa il parametro wStopCookie . In attesa di questo evento si garantisce che il filtro downstream riceva l'ultimo esempio.
Se nessun filtro downstream supporta IAMStreamControl, il metodo restituisce S_FALSE. In tal caso, è possibile ricevere la notifica di arresto prima del rendering dell'ultimo esempio.
MAXLONGLONG è il valore REFERENCE_TIME più grande possibile. Nella libreria di classi di base DirectShow viene definita anche come costante MAX_TIME.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | strmif.h (include Dshow.h) |
Libreria | Strmiids.lib |