Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Gdy Sequencer Source odtwarza sekwencję plików, sesja multimediów zazwyczaj wysyła wszystkie te same zdarzenia, które są wysyłane podczas normalnego odtwarzania i które są wymienione w zdarzenia sesji multimediów. Aplikacja pobiera te zdarzenia przy użyciu interfejsu IMFMediaEventGenerator sesji multimediów.
Ponadto istnieją pewne zdarzenia specyficzne dla segmentów listy odtwarzania.
| Zdarzenie | Opis |
|---|---|
| MENewPresentation | Sygnalizuje aplikację, aby wstępnie wyrejestrować następną topologię. Aby zapewnić bezproblemowe przejście między dwiema kolejnymi prezentacjami, źródło programu Sequencer ładuje następną topologię z wyprzedzeniem. Mimo że aktywna topologia jest nadal odtwarzana, źródło programu Sequencer wysyła to zdarzenie dla następnej topologii, o ile w źródle jest dostępna kolejna topologia. Te dane zdarzenia dla tego zdarzenia to deskryptor prezentacji dla następnej topologii. Aplikacja jest odpowiedzialna za ustawienie odpowiedniej topologii w sesji multimediów zgodnie z opisem w Using the Sequencer Source. |
| MEEndOfPresentationSegment | Źródło programu Sequencer zgłasza to zdarzenie, gdy sesja multimediów zakończyła odtwarzanie bieżącego segmentu, jeśli po nim następuje inny segment. (Jeśli bieżący segment jest ostatnim, źródło programu sequencer zgłasza MEEndOfPresentation zdarzenia. Sesja multimediów przekazuje to zdarzenie do aplikacji. Zazwyczaj aplikacja odbiera MEEndOfPresentationSegment po rozpoczęciu przetwarzania następnego segmentu sesji multimediów, ale podczas gdy ujścia multimediów nadal dostarczają przykłady dla poprzedniego segmentu. |
| MESessionTopologyStatusze stanem MF_TOPOSTATUS_SINK_SWITCHED. | Sesja multimediów zgłasza to zdarzenie, gdy powoduje przejście do następnej topologii w źródle programu Sequencer, a ujścia multimediów zakończyło odtwarzanie poprzedniej topologii. To zdarzenie zawiera wskaźnik do następnej topologii. |
Przykład 1. Odtwarzanie bez pomijania
Gdy źródło programu Sequencer jest zaangażowane, liczba zdarzeń pobieranych z sesji multimediów może być myląca, zwłaszcza dlatego, że zdarzenia skojarzone z jednym segmentem są często przeplatane zdarzeniami dla następnego segmentu.
W pierwszym przykładzie aplikacja kolejkuje trzy segmenty, S1, S2 i S3. Trzeci segment ma flagę SequencerTopologyFlags_Last, aby zasygnalizować, że jest to ostatni segment w sekwencji. Segment odpowiadający każdemu zdarzeniu jest podany w nawiasach. Wymieniono również wywołania SetTopology aplikacji, aby kolejność operacji było jaśniejsza.
- Wywołania aplikacji IMFMediaSession::SetTopology (S1)
- MESessionTopologySet (S1)
- MESessionTopologyStatus: MF_TOPOSTATUS_READY (S1)
- MENewPresentation (preroll S2)
- Wywołania aplikacji IMFMediaSession::SetTopology (S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_STARTED_SOURCE (początek S1)
- MESessionTopologySet (S2)
- MEEndOfPresentationSegment (koniec S1)
- MESessionTopologyStatus: MF_TOPOSTATUS_ENDED (S1)
- MESessionTopologyStatus: MF_TOPOSTATUS_SINK_SWITCHED (przejście do S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_READY (S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_STARTED_SOURCE (początek S2)
- MENewPresentation (preroll S3)
- Wywołania aplikacji IMFMediaSession::SetTopology (S2)
- MESessionTopologySet (S3)
- MEEndOfPresentationSegment (koniec S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_ENDED (S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_SINK_SWITCHED (przejście do S3)
- MESessionTopologyStatus: MF_TOPOSTATUS_READY (S3)
- MESessionTopologyStatus: MF_TOPOSTATUS_STARTED_SOURCE (początek S3)
- MEEndOfPresentation (koniec S3; ostatni segment)
- MESessionTopologyStatus: MF_TOPOSTATUS_ENDED
- MESessionEnded
Ta lista nie zawiera każdego zdarzenia, które może zostać odebrane. (Na przykład pomija zdarzenie MESessionCapabilitiesChanged, które jest wysyłane za każdym razem, gdy zmienią się możliwości sesji. Aplikacja zazwyczaj odbiera wiele zdarzeń MESessionCapabilitiesChanged w całej prezentacji. Zdarzenia wymienione w tym miejscu to te, które pokazują przejście z jednego segmentu do następnego. Najważniejsze zdarzenia to MENewPresentation, która sygnalizuje aplikację wstępnego wyrejestrowania następnej topologii i MEEndOfPresentationSegment, co sygnalizuje koniec segmentu (z wyjątkiem ostatniego segmentu).
Ponieważ zdarzenia w programie Media Foundation są asynchroniczne i nie są serializowane za pomocą wywołań metod, dokładna kolejność może się różnić. Można na przykład odebrać MF_TOPOSTATUS_STARTED_SOURCE dla S1, zanim aplikacja wywołuje SetTopology dla S2.
Ponadto w tym miejscu może nie zostać wyświetlone każde zdarzenie. Zdarzenia MEEndOfPresentation i MESessionEnded, na przykład, nie są wysyłane, chyba że ostatni segment ma flagę SequencerTopologyFlags_Last.
Na koniec ta lista nie wskazuje na upływ czasu. Czas od "początku S1" do "końca S1" to cały czas trwania S1, który może wynosić kilka sekund lub wiele godzin, w zależności od źródła.
Przykład 2. Odtwarzanie przy użyciu pomijania segmentów
W tym przykładzie aplikacja kolejkuje te same segmenty, ale pomija segment 3 podczas odtwarzania segmentu 1. W takim przypadku wysyłane są następujące zdarzenia:
- Wywołania aplikacji IMFMediaSession::SetTopology (S1)
- MESessionTopologySet (S1)
- MESessionTopologyStatus: MF_TOPOSTATUS_READY (S1)
- MENewPresentation (preroll S2)
- Wywołania aplikacji IMFMediaSession::SetTopology (S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_STARTED_SOURCE (początek S1)
- MESessionTopologySet (S2)
- Wywołania aplikacji IMFMediaSession::Start (przejdź do S3)
- MENewPresentation (preroll S3)
- Wywołania aplikacji IMFMediaSession::SetTopology (S3)
- MESessionStarted
- MEEndOfPresentationSegment (anulowano S1)
- MESessionTopologyStatus: MF_TOPOSTATUS_ENDED (S1)
- MESessionTopologySet (S3)
- MESessionTopologyStatus: MF_TOPOSTATUS_SINK_SWITCHED (przejście do S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_READY (S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_STARTED_SOURCE (S2)
- MEEndOfPresentationSegment (anulowano S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_ENDED (S2)
- MESessionTopologyStatus: MF_TOPOSTATUS_SINK_SWITCHED (przejście do S3)
- MESessionTopologyStatus: TOPOSTATUS_READY (S3)
- MESessionTopologyStatus: MF_TOPOSTATUS_STARTED_SOURCE (S3)
Gdy aplikacja wywołuje Start, aby przejść do segmentu 3, źródło programu Sequencer anuluje segment 1, który nadal jest odtwarzany. Zdarzenie MEEndOfPresentationSegment zawiera atrybut MF_EVENT_SOURCE_TOPOLOGY_CANCELED wskazujący, że segment zakończył się, ponieważ został anulowany. Następnie, ponieważ segment 2 jest już wstępnie wdrożony, ten segment jest uruchamiany, ale następnie natychmiast anulowany. Zdarzenie MEEndOfPresentationSegment dla segmentu 2 zawiera również atrybut MF_EVENT_SOURCE_TOPOLOGY_CANCELED. Sesja może następnie przełączyć się na segment 3 i grać normalnie.
Tematy pokrewne
-
Informacje o źródła programu Sequencer
-
źródło Sequencer