Freigeben über


Sequencer-Quellereignisse

Wenn die Sequencer-Quelle eine Sequenz von Dateien wiedergibt, sendet die Mediensitzung in der Regel alle dieselben Ereignisse, die während der normalen Wiedergabe gesendet werden und die unter Mediensitzungsereignisse aufgeführt sind. Die Anwendung ruft diese Ereignisse mithilfe der IMFMediaEventGenerator-Schnittstelle der Mediensitzung ab.

Darüber hinaus gibt es einige Ereignisse, die spezifisch für Wiedergabelistensegmente sind.

Ereignis BESCHREIBUNG
MENewPresentation Signalisiert der Anwendung, die nächste Topologie vorab zu registrieren.
Um einen nahtlosen Übergang zwischen zwei aufeinanderfolgenden Präsentationen zu ermöglichen, lädt die Sequenzerquelle die nächste Topologie im Voraus. Während die aktive Topologie weiterhin wiedergegeben wird, sendet die Sequencerquelle dieses Ereignis für die nächste Topologie, solange eine nachfolgende Topologie in der Quelle verfügbar ist.
Diese Ereignisdaten für dieses Ereignis sind der Präsentationsdeskriptor für die nächste Topologie. Die Anwendung ist für das Festlegen der entsprechenden Topologie für die Mediensitzung verantwortlich, wie unter Verwenden der Sequenzerquelle beschrieben.
MEEndOfPresentationSegment Die Sequenzerquelle löst dieses Ereignis aus, wenn die Mediensitzung die Wiedergabe des aktuellen Segments abgeschlossen hat, wenn diesem Segment ein anderes Segment folgt. (Wenn das aktuelle Segment das letzte ist, löst die Sequencerquelle stattdessen das MEEndOfPresentation-Ereignis aus.)
Die Mediensitzung leitet dieses Ereignis an die Anwendung weiter. In der Regel empfängt die Anwendung MEEndOfPresentationSegment , nachdem die Mediensitzung mit der Verarbeitung des nächsten Segments begonnen hat, während die Mediensenken weiterhin die Beispiele für das vorherige Segment liefern.
MESessionTopologyStatus mit status MF_TOPOSTATUS_SINK_SWITCHED. Die Mediensitzung löst dieses Ereignis aus, wenn sie einen Übergang zur nächsten Topologie in der Sequenzerquelle macht und die Mediensenken die Wiedergabe der vorherigen Topologie abgeschlossen haben. Dieses Ereignis enthält einen Zeiger auf die nächste Topologie.

 

Beispiel 1: Wiedergabe ohne Überspringen

Wenn die Sequencerquelle involviert ist, kann die Anzahl der Ereignisse, die Sie aus der Mediensitzung erhalten, verwirrend sein, insbesondere weil Ereignisse, die einem Segment zugeordnet sind, häufig mit Ereignissen für das nächste Segment verschachtelt werden.

Im ersten Beispiel stellt die Anwendung drei Segmente in die Warteschlange: S1, S2 und S3. Das dritte Segment weist das Flag SequencerTopologyFlags_Last auf, um zu signalisieren, dass es sich um das letzte Segment in der Sequenz handelt. Das Segment, dem jedes Ereignis entspricht, wird in Klammern angegeben. Die SetTopology-Aufrufe der Anwendung werden ebenfalls aufgeführt, um die Reihenfolge der Vorgänge übersichtlicher zu machen.

Diese Liste enthält nicht jedes Ereignis, das Sie möglicherweise erhalten. (Beispielsweise wird das MESessionCapabilitiesChanged-Ereignis weggelassen , das gesendet wird, wenn sich die Sitzungsfunktionen ändern. Eine Anwendung empfängt in der Regel mehrere MESessionCapabilitiesChanged-Ereignisse während einer Präsentation.) Die hier aufgeführten Ereignisse zeigen den Übergang von einem Segment zum nächsten an. Die wichtigsten Ereignisse sind MENewPresentation, das der Anwendung signalisiert, die nächste Topologie vorab zu registrieren, und MEEndOfPresentationSegment, das das Ende eines Segments signalisiert (mit Ausnahme des letzten Segments).

Da Ereignisse in Media Foundation asynchron sind und nicht mit Methodenaufrufen serialisiert werden, kann die genaue Reihenfolge variieren. Beispielsweise können Sie MF_TOPOSTATUS_STARTED_SOURCE für S1 erhalten, bevor die Anwendung SetTopology für S2 aufruft.

Außerdem wird möglicherweise nicht jedes Ereignis hier aufgeführt. Die Ereignisse MEEndOfPresentation und MESessionEnded werden beispielsweise nur gesendet, wenn das letzte Segment das flag SequencerTopologyFlags_Last aufweist.

Schließlich gibt diese Liste nicht den Ablauf der Zeit an. Die Zeit von "Anfang von S1" bis "Ende von S1" ist die gesamte Dauer von S1, die je nach Quelle einige Sekunden oder viele Stunden betragen kann.

Beispiel 2: Wiedergabe mit Segmentspringen

In diesem Beispiel stellt die Anwendung die gleichen Segmente in die Warteschlange, springt jedoch zu Segment 3, während Segment 1 wiedergegeben wird. In diesem Fall werden die folgenden Ereignisse gesendet:

Wenn die Anwendung Start aufruft, um zu Segment 3 zu springen, bricht die Sequenzerquelle Segment 1 ab, das weiterhin wiedergegeben wird. Das MEEndOfPresentationSegment-Ereignis für dieses Segment enthält das attribut MF_EVENT_SOURCE_TOPOLOGY_CANCELED , das angibt, dass das Segment beendet wurde, weil es abgebrochen wurde. Da Segment 2 dann bereits vorab gerollt ist, wird dieses Segment gestartet, aber dann sofort abgebrochen. Das MEEndOfPresentationSegment-Ereignis für Segment 2 enthält auch das Attribut MF_EVENT_SOURCE_TOPOLOGY_CANCELED . Die Sitzung kann dann zu Segment 3 wechseln und normal wiedergeben.

Informationen zur Sequencerquelle

Sequencerquelle