Freigeben über


Sequencer-Quellereignisse

Wenn die Sequencer Source eine Abfolge von Dateien wiedergibt, sendet die Mediensitzung im Allgemeinen alle ereignisse, die während der normalen Wiedergabe gesendet werden und die in Mediensitzungsereignissenaufgeführt werden. Die Anwendung ruft diese Ereignisse mithilfe der IMFMediaEventGenerator Schnittstelle der Mediensitzung ab.

Darüber hinaus gibt es einige Ereignisse, die speziell für Wiedergabelistensegmente gelten.

Ereignis Beschreibung
MENewPresentation Signalisiert die Anwendung, die nächste Topologie vorab zu erstellen.
Um einen nahtlosen Übergang zwischen zwei aufeinander folgenden Präsentationen bereitzustellen, lädt die Sequenzerquelle die nächste Topologie im Voraus. Während die aktive Topologie noch wiedergegeben wird, sendet die Sequenzerquelle 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 in Using the Sequencer Sourcebeschrieben.
MEEndOfPresentationSegment Die Sequenzerquelle löst dieses Ereignis aus, wenn die Mediensitzung die Wiedergabe des aktuellen Abschnitts abgeschlossen hat, wenn auf dieses Segment ein anderes Segment folgt. (Wenn das aktuelle Segment der letzte ist, löst die Sequenzerquelle 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.
MESessionTopologyStatusmit Status MF_TOPOSTATUS_SINK_SWITCHED. Die Mediensitzung löst dieses Ereignis aus, wenn ein Übergang zur nächsten Topologie in der Sequenzerquelle und Mediensenken die Wiedergabe der vorherigen Topologie abgeschlossen ist. Dieses Ereignis enthält einen Zeiger auf die nächste Topologie.

 

Beispiel 1: Wiedergabe ohne Überspringen

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

Im ersten Beispiel werden in der Anwendung drei Segmente, S1, S2 und S3 in die Warteschlange gestellt. Das dritte Segment weist das SequencerTopologyFlags_Last Flag 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 aufgelistet, um die Reihenfolge der Vorgänge klarer zu gestalten.

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 in einer Präsentation.) Die hier aufgeführten Ereignisse sind die Ereignisse, die den Übergang von einem Segment zum nächsten anzeigen. Die wichtigsten Ereignisse sind MENewPresentation, die die Anwendung signalisiert, die nächste Topologie vorzurollen, und MEEndOfPresentationSegment, was 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 empfangen, bevor die Anwendung SetTopology- für S2 aufruft.

Außerdem erhalten Sie möglicherweise nicht jedes hier aufgeführte Ereignis. Die MEEndOfPresentation-- und MESessionEnded--Ereignisse werden z. B. erst gesendet, wenn das letzte Segment über das SequencerTopologyFlags_Last-Kennzeichen verfügt.

Schließlich gibt diese Liste nicht die Passage der Zeit an. Die Zeit von "Anfang S1" bis "Ende von S1" ist die gesamte Dauer von S1, die je nach Quelle ein paar Sekunden oder viele Stunden sein kann.

Beispiel 2: Wiedergabe mit Segment-Überspringen

In diesem Beispiel werden in der Anwendung dieselben Segmente in die Warteschlange gestellt, 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, was 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, da es abgebrochen wurde. Da Segment 2 dann bereits vorab ausgeführt wurde, 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.

Über die Sequenzerquelle

Sequencer Source