Metodo CBaseRenderer.Receive

[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 Receive metodo riceve l'esempio multimediale successivo nel flusso.

Sintassi

virtual Receive(
   IMediaSample *pMediaSample
);

Parametri

pMediaSample

Puntatore all'interfaccia IMediaSample dell'esempio.

Valore restituito

Restituisce S_OK se ha esito positivo o un valore HRESULT che indica la causa dell'errore.

Commenti

Il pin di input chiama questo metodo quando riceve un esempio dal filtro upstream.

Se il filtro è in esecuzione, questo metodo esegue la procedura seguente:

  1. Pianifica l'esempio per il rendering (CBaseRenderer::P repareReceive).
  2. Attende l'ora pianificata (CBaseRenderer::WaitForRenderTime).
  3. Esegue il rendering dell'esempio (CBaseRenderer::Rendering).
  4. Rilascia l'esempio (CBaseRenderer::ClearPendingSample).

Se il filtro viene sospeso, il metodo esegue la procedura seguente:

  1. Notifica alla classe derivata che è disponibile un esempio (CBaseRenderer::OnReceiveFirstSample).
  2. Attende l'ora pianificata.
  3. Esegue il rendering dell'esempio.
  4. Rilascia l'esempio.

Durante la pausa, il metodo attende nel passaggio 2 fino a quando il filtro passa a uno stato in esecuzione. A quel punto, il filtro pianifica l'esempio.

Nella classe base il metodo OnReceiveFirstSample non esegue nulla. La classe derivata può eseguirne l'override. Ad esempio, quando viene sospeso un renderer video, viene visualizzato il primo esempio come immagine ancora.

Requisiti

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

Vedi anche

Classe CBaseRenderer