IMemInputPin::Receive-Methode (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die Receive -Methode empfängt das nächste Medienbeispiel im Stream.

Syntax

HRESULT Receive(
  [in] IMediaSample *pSample
);

Parameter

[in] pSample

Zeiger auf die IMediaSample-Schnittstelle des Beispiels.

Rückgabewert

Gibt einen HRESULT-Wert zurück. Mögliche Werte sind die in der folgenden Tabelle gezeigten Werte.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
S_FALSE
Das Beispiel wurde abgelehnt.
E_POINTER
NULL-Zeigerargument.
VFW_E_INVALIDMEDIATYPE
Ungültiger Medientyp.
VFW_E_RUNTIME_ERROR
Ein Laufzeitfehler ist aufgetreten.
VFW_E_WRONG_STATE
Der Pin wird beendet.

Hinweise

Diese Methode ist synchron und möglicherweise blockierend. Der Pin führt eine der folgenden Aktionen aus:

  • Lehnt das Beispiel ab.
  • Gibt sofort zurück und verarbeitet das Beispiel in einem Workerthread.
  • Verarbeitet das Beispiel vor der Rückgabe.
Im letzten Fall kann die Methode auf unbestimmte Zeit blockiert werden. In diesem Fall gibt die IMemInputPin::ReceiveCanBlock-Methode S_OK zurück.

Wenn der Pin einen Workerthread zum Verarbeiten des Beispiels verwendet, enthält er eine Verweisanzahl für das Beispiel. In jedem Fall kann der Ausgabenadel dieses Beispiel nicht direkt wiederverwenden. Sie muss die IMemAllocator::GetBuffer-Methode aufrufen, um ein neues Beispiel zu erhalten.

Wenn diese Methode S_FALSE oder einen Fehlercode zurückgibt, sollte der Upstream Filter das Senden von Beispielen beenden, bis das Diagramm einen Löschvorgang beendet oder abgeschlossen hat. Typische Gründe für einen S_FALSE Rückgabewert sind:

  • Der Nachgeschaltete Pin wird geleert. Das heißt, es hat einen BeginFlush-Anruf erhalten und noch keinen EndFlush-Anruf erhalten.
  • Der Downstreamfilter hat das Ende des Datenstroms erkannt. (Siehe Benachrichtigungen zum Ende der Stream.)

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Weitere Informationen

Fehler- und Erfolgscodes

IMemInputPin-Schnittstelle