Metodo IAMStreamControl::StopAt (strmif.h)

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

Il StopAt metodo informa il pin quando interrompere la distribuzione dei dati.

Sintassi

HRESULT StopAt(
  [in] const REFERENCE_TIME *ptStop,
  [in] BOOL                 bSendExtra,
  [in] DWORD                dwCookie
);

Parametri

[in] ptStop

Puntatore a un valore REFERENCE_TIME che specifica quando il pin deve interrompere la distribuzione dei dati. Se il valore è MAXLONGLONG (0x7FFFFFFFFFFFFFFF), il metodo annulla qualsiasi richiesta di arresto precedente. Se psStop è NULL, il pin si arresta immediatamente.

Per i pin di anteprima, solo i valori NULL e MAXLONGLONG sono validi, perché i pin di anteprima non eseguono il timestamp degli esempi recapitati.

[in] bSendExtra

Specifica un valore booleano che indica se inviare un esempio aggiuntivo dopo l'ora di arresto pianificata. Se TRUE, il pin invia un esempio aggiuntivo.

[in] dwCookie

Specifica un valore da inviare insieme alla notifica iniziale. Vedere la sezione Osservazioni.

Valore restituito

Se il metodo ha esito positivo, il valore restituito è S_OK. In caso contrario, restituisce un valore HRESULT che indica la causa dell'errore.

Commenti

Se il parametro dwCookie è diverso da zero, il pin invierà un evento EC_STREAM_CONTROL_STOPPED quando interrompe la distribuzione dei dati. Il primo parametro evento è un puntatore all'interfaccia IPin del pin e il secondo è il valore di dwCookie. Se ptStop è NULL o MAXLONGLONG, non viene inviato alcun evento e il valore di dwCookie viene ignorato.

Nell'acquisizione video, in genere si chiama questo metodo sul pin di output del filtro di acquisizione e sul pin di input del multiplexer. L'applicazione deve attendere l'evento di arresto dal multiplexer. Ciò garantisce che il filtro di acquisizione invii il numero corretto di fotogrammi, garantendo che tutti i fotogrammi raggiungano il multiplexer. Impostare anche il parametro bSendExtra su TRUE per il pin di acquisizione, ma FALSE per il pin multiplexer. In questo modo il filtro di acquisizione invia un frame aggiuntivo. Il multiplexer si basa sui timestamp dal pin di acquisizione, quindi se il fotogramma aggiuntivo non viene inviato, il multiplexer attende in modo indefinito per l'ora di arresto. Quando il multiplexer riceve il frame aggiuntivo, lo eliminerà.

Questo metodo gestisce le condizioni di limite seguenti:

  • Se il tempo di arresto rientra tra l'ora di inizio e di arresto di un esempio, il pin recapita tale esempio.
  • Se l'ora di inizio è uguale all'ora di arresto, il pin restituisce un esempio.
MAXLONGLONG è il valore più grande possibile REFERENCE_TIME . Nella libreria di classi di base viene anche definita 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

Vedi anche

Codici errore e esito positivo

Interfaccia IAMStreamControl