Condividi tramite


Metodo CVideoTransformFilter.Receive

[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 Receive metodo riceve un campione multimediale, lo elabora e distribuisce un esempio di output al filtro downstream. Questo metodo esegue l'override del metodo CTransformFilter::Receive .

Sintassi

HRESULT Receive(
   IMediaSample *pSample
);

Parametri

pSample

Puntatore all'interfaccia IMediaSample nell'esempio di input.

Valore restituito

Restituisce un valore HRESULT . I possibili valori sono i seguenti:

Codice restituito Descrizione
S_FALSE
Il filtro upstream deve interrompere l'invio di campioni.
S_OK
Operazione completata.

Commenti

Questo metodo chiama CVideoTransformFilter::ShouldSkipFrame per determinare se deve recapitare questo esempio o semplicemente eliminarlo. Se ShouldSkipFrame restituisce FALSE (che indica che l'esempio deve essere recapitato), il metodo esegue le operazioni seguenti:

  1. Chiama CTransformFilter::InitializeOutputSample per preparare l'esempio di output
  2. Chiama CTransformFilter::Transform per elaborare l'esempio di input. Questo metodo è virtuale puro e deve essere implementato nella classe derivata.
  3. Chiama CBaseOutputPin::D eliver per recapitare l'esempio di output.

Inoltre, questo metodo verifica la presenza di modifiche al formato nell'esempio di input o output chiamando IMediaSample::GetMediaType. In caso di modifica del formato, il metodo imposta il tipo di connessione sul pin corrispondente. Prima di impostare il nuovo tipo, chiama StopStreaming. Dopo aver impostato il nuovo tipo, chiama StartStreaming. La classe derivata può usare questi metodi per aggiornare lo stato interno. La classe derivata potrebbe anche dover verificare la presenza del nuovo formato nel metodo Transform .

Requisiti

Requisito Valore
Intestazione
Vtrans.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)

Vedi anche

Classe CVideoTransformFilter