Sequencer-Quellereignisse

Wenn die Sequencerquelle eine Sequenz von Dateien wiedergibt, sendet die Mediensitzung in der Regel alle Ereignisse, die während der normalen Wiedergabe gesendet werden und die unter Mediensitzungsereignisseaufgeführt sind. Die Anwendung ruft diese Ereignisse mithilfe der SCHNITTSTELLE "MEDIAEventGenerator" der Mediensitzung ab.

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

Ereignis BESCHREIBUNG
MENewPresentation Signalisiert der Anwendung, die nächste Topologie vorab zurollen.
Um einen nahtlosen Übergang zwischen zwei aufeinander folgenden Präsentationen zu ermöglichen, lädt die Sequencerquelle die nächste Topologie im Voraus. Während die aktive Topologie noch abgespielt 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 in der Mediensitzung verantwortlich, wie unter Verwenden der Sequencerquellebeschrieben.
MEEndOfPresentationSegment Die Sequencerquelle löst dieses Ereignis aus, wenn die Mediensitzung die Wiedergabe des aktuellen Segments abgeschlossen hat, wenn auf dieses Segment ein anderes Segment folgt. (Wenn das aktuelle Segment das letzte segment 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 bereitstellen.
MESessionTopologyStatusmit status MF _ TOPOSTATUS _ SINK _ SWITCHED. Die Mediensitzung löst dieses Ereignis aus, wenn ein Übergang zur nächsten Topologie in der Sequencerquelle erfolgt und die Wiedergabe der vorherigen Topologie in den Mediensenken abgeschlossen ist. Dieses Ereignis enthält einen Zeiger auf die nächste Topologie.

Beispiel 1: Wiedergabe ohne Überspringen

Wenn die Sequencerquelle beteiligt 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 überlappen.

Im ersten Beispiel reiht die Anwendung drei Segmente in die Warteschlange ein: 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 gestalten.

Diese Liste enthält nicht jedes Ereignis, das Sie möglicherweise empfangen. (Beispielsweise wird das MESessionCapabilitiesChanged-Ereignis ausgelassen, 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. Die wichtigsten Ereignisse sind MENewPresentation, die der Anwendung signalisiert, die nächste Topologie vorab zurollen, 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önnten 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 z. B. nur gesendet, wenn das letzte Segment über das Flag SequencerTopologyFlags _ Last verfügt.

Schließlich gibt diese Liste nicht den Zeitablauf an. Die Zeit von "Start 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 Segment skipping

In diesem Beispiel stellt die Anwendung die gleichen Segmente in die Warteschlange, überspringt jedoch 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 Sequencerquelle Segment 1 ab, das noch abgespielt wird. Das MEEndOfPresentationSegment-Ereignis für dieses Segment enthält das MF EVENT SOURCE _ _ _ TOPOLOGY _ CANCELED-Attribut, das angibt, dass das Segment beendet wurde, weil es abgebrochen wurde. Da Segment 2 bereits vorab ausgeführt wurde, wird dieses Segment gestartet, aber sofort abgebrochen. Das MEEndOfPresentationSegment-Ereignis für Segment 2 enthält auch das MF _ EVENT SOURCE _ _ TOPOLOGY _ CANCELED-Attribut. Die Sitzung kann dann zu Segment 3 wechseln und normal wiedergeben.

Informationen zur Sequencerquelle

Sequencer-Quelle