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 |
|---|---|
|
Erfolg. |
|
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 |
|
| Bibliothek |
|