CBaseOutputPin.Deliver-Methode

Die Deliver -Methode übergibt ein Medienbeispiel an den verbundenen Eingabepin.

Syntax

virtual HRESULT Deliver(
   IMediaSample *pSample
);

Parameter

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 aufgeführten Werte.

Rückgabecode Beschreibung
S _ OK
Erfolg.
VFW _ E _ NICHT _ VERBUNDEN
Die Stecknadel ist nicht verbunden.

Hinweise

Diese Methode ruft die IMemInputPin::Receive-Methode für den Eingabepin auf. Receive kann blockieren, wenn die IMemInputPin::ReceiveCanBlock-Methode S _ OK zurückgibt.

Geben Sie das Beispiel nach dem Aufruf dieser Methode frei. Der Eingabepin kann einen Verweiszähler für das Beispiel speichern, daher sollten Sie das Beispiel nicht wiederverwenden. Rufen Sie immer die CBaseOutputPin::GetDeliveryBuffer-Methode auf, um ein neues Beispiel zu erhalten.

Halten Sie den kritischen Abschnitt des Filters, bevor Sie diese Methode aufrufen. Andernfalls wird die Verbindung mit dem Pin während des Methodenaufrufs möglicherweise getrennt. Wenn der Filter einen Arbeitsthread verwendet, um Beispiele zu liefern, halten Sie den kritischen Abschnitt, wenn der Filter bereit ist, ein Beispiel zu liefern. Andernfalls können Sie den kritischen Abschnitt in der IMemInputPin::Receive-Methode des Filters halten, in der der Filter Stichproben verarbeitet.

Arbeitsthreads können zu einem potenziellen Deadlock führen. Wenn der Thread den kritischen Abschnitt enthält, kann er auf eine Zustandsänderung im Filter warten. Gleichzeitig kann die Zustandsänderung auf den Abschluss des Threads warten. Um dies zu verhindern, sollte der Code zur Zustandsänderung ein Ereignis signalisieren, das den Thread beendet, und dann warten, bis der Thread den Abschluss signalisiert.

Anforderungen

Anforderung Wert
Header
Amfilter.h (include Streams.h)
Bibliothek
Strmbase.lib (Einzelhandels-Builds);
Strmbasd.lib (Debugbuilds)

Siehe auch

CBaseOutputPin-Klasse