Condividi tramite


Eventi di origine sequencer

Quando l'origine Sequencer riproduce una sequenza di file, la sessione multimediale invia in genere tutti gli stessi eventi inviati durante la riproduzione normale e elencati in Eventi sessione multimediale. L'applicazione ottiene questi eventi usando l'interfaccia IMFMediaEventGenerator sessione multimediale.

Inoltre, ci sono alcuni eventi specifici per i segmenti di playlist.

Evento Descrizione
MENewPresentation Segnala all'applicazione di preregistrare la topologia successiva.
Per garantire una transizione senza problemi tra due presentazioni consecutive, l'origine sequencer carica in anticipo la topologia successiva. Mentre la topologia attiva è ancora in riproduzione, l'origine sequencer invia questo evento per la topologia successiva, purché nell'origine sia disponibile una topologia successiva.
Questi dati di evento per questo evento sono il descrittore di presentazione per la topologia successiva. L'applicazione è responsabile dell'impostazione della topologia corrispondente nella sessione multimediale, come descritto in Uso dell'origine Sequencer.
MEEndOfPresentationSegment L'origine sequencer genera questo evento quando la sessione multimediale ha completato la riproduzione del segmento corrente, se tale segmento è seguito da un altro segmento. Se il segmento corrente è l'ultimo, l'origine sequencer genera invece l'evento MEEndOfPresentation.
La sessione multimediale inoltra questo evento all'applicazione. In genere, l'applicazione riceve MEEndOfPresentationSegment dopo che la sessione multimediale ha avviato l'elaborazione del segmento successivo, ma mentre i sink multimediali forniscono ancora gli esempi per il segmento precedente.
MESessionTopologyStatus, con stato MF_TOPOSTATUS_SINK_SWITCHED. La sessione multimediale genera questo evento quando esegue una transizione alla topologia successiva nell'origine sequencer e nei sink multimediali ha completato la riproduzione della topologia precedente. Questo evento contiene un puntatore alla topologia successiva.

 

Esempio 1: Riproduzione senza ignorare

Quando l'origine sequencer è coinvolta, il numero di eventi che si ottengono dalla sessione multimediale può generare confusione, soprattutto perché gli eventi associati a un segmento vengono spesso interleavedati con gli eventi per il segmento successivo.

Nel primo esempio l'applicazione accoda tre segmenti, S1, S2 e S3. Il terzo segmento ha il flag SequencerTopologyFlags_Last, per segnalarlo è l'ultimo segmento della sequenza. Segmento a cui corrisponde ogni evento viene assegnato tra parentesi. Vengono elencate anche le chiamate SetTopology dell'applicazione per rendere più chiaro l'ordine delle operazioni.

Questo elenco non include tutti gli eventi che è possibile ricevere. Ad esempio, omette l'evento MESessionCapabilitiesChanged, che viene inviato ogni volta che le funzionalità della sessione cambiano. Un'applicazione riceve in genere più eventi MESessionCapabilitiesChanged in una presentazione. Gli eventi elencati di seguito sono quelli che mostrano la transizione da un segmento al successivo. Gli eventi più importanti sono MENewPresentation, che segnala all'applicazione di prerollare la topologia successiva e MEEndOfPresentationSegment, che segnala la fine di un segmento (ad eccezione dell'ultimo segmento).

Poiché gli eventi in Media Foundation sono asincroni e non vengono serializzati con chiamate al metodo, l'ordine esatto potrebbe variare. Ad esempio, è possibile ricevere MF_TOPOSTATUS_STARTED_SOURCE per S1 prima che l'applicazione chiami setTopology per S2.

Inoltre, è possibile che non vengano visualizzati tutti gli eventi elencati qui. Gli eventi MEEndOfPresentation e MESessionEnded, ad esempio, non vengono inviati a meno che l'ultimo segmento non abbia il flag SequencerTopologyFlags_Last.

Infine, questo elenco non indica il passaggio del tempo. L'ora dall'inizio di S1 alla "fine di S1" è l'intera durata di S1, che potrebbe essere di pochi secondi o molte ore, a seconda dell'origine.

Esempio 2: Riproduzione con segmento ignorato

In questo esempio l'applicazione accoda gli stessi segmenti, ma passa al segmento 3 mentre il segmento 1 è in riproduzione. In questo caso, vengono inviati gli eventi seguenti:

Quando l'applicazione chiama Start per passare al segmento 3, l'origine sequencer annulla il segmento 1, che è ancora in riproduzione. L'evento MEEndOfPresentationSegment per questo segmento contiene l'attributo MF_EVENT_SOURCE_TOPOLOGY_CANCELED, a indicare che il segmento è terminato perché è stato annullato. Quindi, poiché il segmento 2 è già pre-roll, il segmento viene avviato ma poi immediatamente annullato. L'evento MEEndOfPresentationSegment per il segmento 2 contiene anche l'attributo MF_EVENT_SOURCE_TOPOLOGY_CANCELED. La sessione può quindi passare al segmento 3 e riprodurla normalmente.

Informazioni sull'origine sequencer

origine sequencer