Metodo IMemInputPin::Receive (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 Receive metodo riceve l'esempio multimediale successivo nel flusso.

Sintassi

HRESULT Receive(
  [in] IMediaSample *pSample
);

Parametri

[in] pSample

Puntatore all'interfaccia IMediaSample dell'esempio.

Valore restituito

Restituisce un valore HRESULT . I valori possibili includono quelli visualizzati nella tabella seguente.

Codice restituito Descrizione
S_OK
Operazione completata.
S_FALSE
L'esempio è stato rifiutato.
E_POINTER
Argomento puntatore NULL.
VFW_E_INVALIDMEDIATYPE
Tipo di supporto non valido.
VFW_E_RUNTIME_ERROR
Si è verificato un errore di runtime.
VFW_E_WRONG_STATE
Il pin viene arrestato.

Commenti

Questo metodo è sincrono e possibilmente bloccando. Il pin esegue una delle operazioni seguenti:

  • Rifiuta l'esempio.
  • Restituisce immediatamente e elabora l'esempio in un thread di lavoro.
  • Elabora l'esempio prima di restituire.
Nell'ultimo caso, il metodo potrebbe bloccare in modo indefinito. In questo caso, il metodo IMemInputPin::ReceiveCanBlock restituisce S_OK.

Se il pin usa un thread di lavoro per elaborare l'esempio, contiene un conteggio dei riferimenti nell'esempio. In qualsiasi caso, il pin di output non può riutilizzare direttamente questo esempio. Deve chiamare il metodo IMemAllocator::GetBuffer per ottenere un nuovo esempio.

Se questo metodo restituisce S_FALSE o un codice di errore, il filtro upstream deve interrompere l'invio di campioni fino a quando il grafico si arresta o completa un'operazione di scaricamento. I motivi tipici per un valore restituito S_FALSE includono:

  • Il pin downstream sta scaricando; ovvero, ha ricevuto una chiamata BeginFlush e non ha ancora ricevuto una chiamata EndFlush .
  • Il filtro downstream ha rilevato la fine del flusso. Vedere Notifiche end-of-Stream.

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 IMemInputPin