IMFMediaStream::RequestSample-Methode (mfidl.h)
Fordert ein Beispiel von der Medienquelle an.
Syntax
HRESULT RequestSample(
[in] IUnknown *pToken
);
Parameter
[in] pToken
Zeiger auf die IUnknown-Schnittstelle auf ein Objekt, das als Token für die Anforderung verwendet wird. Der Aufrufer muss dieses Objekt implementieren. Dieser Parameter kann NULL sein. Siehe Hinweise.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Das Ende des Streams wurde erreicht. |
|
Die Medienquelle wird beendet. |
|
Die Shutdown-Methode der Quelle wurde aufgerufen. |
Hinweise
Wenn pToken nicht NULL ist, ruft der Medienstream AddRef auf pToken auf und platziert das Token in einer first-in, first-out-Warteschlange.
Wenn das nächste Beispiel verfügbar ist, führt der Medienstreamstream folgendes aus:
- Ruft das erste Token aus der Warteschlange ab.
- Legt das MFSampleExtension_Token-Attribut für das Medienbeispiel fest. Die Attributdaten sind ein Zeiger auf das Tokenobjekt.
- Sendet ein MEMediaSample-Ereignis . Die Ereignisdaten sind ein Zeiger auf die IMFSample-Schnittstelle des Medienbeispiels.
- Ruft Release für das Token auf.
Der Aufrufer sollte die Referenzanzahl für das Anforderungstoken überwachen. Wenn der Medienstream ein MEMediaSample-Ereignis sendet, rufen Sie das attribut MFSampleExtension_Token aus dem Beispiel ab, und stimmen Sie den Attributwert mit dem Token ab. Wenn die Verweisanzahl des Tokens auf 0 fällt und Sie kein MEMediaSample-Ereignis erhalten haben, bedeutet dies, dass die Anforderung gelöscht wurde.
Da die Media Foundation-Pipeline Multithreads ist, kann die RequestSample-Methode der Quelle aufgerufen werden, nachdem die Quelle beendet wurde. Wenn die Medienquelle beendet wird, sollte die Methode MF_E_MEDIA_SOURCE_WRONGSTATE zurückgeben. Die Pipeline behandelt diesen Rückgabecode nicht als Fehlerbedingung. Wenn die Quelle einen anderen Fehlercode zurückgibt, wird dieser von der Pipeline als schwerwiegender Fehler behandelt und die Sitzung angehalten.
Wenn die Medienquelle angehalten wird, ist die Methode erfolgreich, aber der Stream übermittelt das Beispiel erst, wenn die Quelle erneut gestartet wird.
Wenn eine Medienquelle bei der Verarbeitung von Daten asynchron auf einen Fehler stößt, sollte sie den Fehler auf eine der folgenden Arten signalisieren (aber nicht beides):
- Gibt einen Fehlercode aus dem nächsten RequestSample-Aufruf zurück.
- Senden Sie ein MEError-Ereignis .
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | mfidl.h |
Bibliothek | Mfuuid.lib |