Metodo CBaseOutputPin.Deliver
[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 Deliver
metodo fornisce un esempio multimediale al pin di input connesso.
Sintassi
virtual HRESULT Deliver(
IMediaSample *pSample
);
Parametri
-
pSample
-
Puntatore all'interfaccia IMediaSample dell'esempio.
Valore restituito
Restituisce un valore HRESULT . I valori possibili includono quelli elencati nella tabella seguente.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il pin non è connesso. |
Commenti
Questo metodo chiama il metodo IMemInputPin::Receive nel pin di input. La ricezione può bloccare se il metodo IMemInputPin::ReceiveCanBlock restituisce S_OK.
Rilasciare l'esempio dopo aver chiamato questo metodo. Il pin di input potrebbe contenere un conteggio dei riferimenti nell'esempio, quindi non riutilizzare l'esempio. Chiamare sempre il metodo CBaseOutputPin::GetDeliveryBuffer per ottenere un nuovo esempio.
Tenere premuta la sezione critica del filtro prima di chiamare questo metodo. In caso contrario, il pin potrebbe essere disconnesso durante la chiamata al metodo. Se il filtro usa un thread di lavoro per recapitare esempi, tenere la sezione critica quando il filtro è pronto per recapitare un esempio. In caso contrario, è possibile contenere la sezione critica nel metodo IMemInputPin::Receive del filtro, in cui vengono elaborati esempi di filtro.
I thread di lavoro possono creare un potenziale deadlock. Quando il thread contiene la sezione critica, potrebbe attendere una modifica dello stato nel filtro. Allo stesso tempo, la modifica dello stato potrebbe attendere il completamento del thread. Per evitare questo problema, il codice di modifica dello stato deve segnalare un evento che termina il thread e quindi attendere il completamento del thread.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|