Freigeben über


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
S_OK
Die Methode wurde erfolgreich ausgeführt.
MF_E_END_OF_STREAM
Das Ende des Streams wurde erreicht.
MF_E_MEDIA_SOURCE_WRONGSTATE
Die Medienquelle wird beendet.
MF_E_SHUTDOWN
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:

  1. Ruft das erste Token aus der Warteschlange ab.
  2. Legt das MFSampleExtension_Token-Attribut für das Medienbeispiel fest. Die Attributdaten sind ein Zeiger auf das Tokenobjekt.
  3. Sendet ein MEMediaSample-Ereignis . Die Ereignisdaten sind ein Zeiger auf die IMFSample-Schnittstelle des Medienbeispiels.
  4. Ruft Release für das Token auf.
Wenn der Mediendatenstrom die Anforderung des Aufrufers für ein Beispiel nicht erfüllen kann, gibt er einfach das Tokenobjekt frei und überspringt die Schritte 2 und 3.

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.

Hinweis In früheren Versionen der Dokumentation wurde der falsche Fehlercode für diesen Fall aufgeführt.

 

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

Weitere Informationen

IMFMediaStream

Medienquellen