Udostępnij za pośrednictwem


Informacje o sesji multimediów

Sesja multimedialna eksponuje interfejs IMFMediaSession. Istnieją dwa sposoby tworzenia sesji multimediów, w zależności od tego, czy aplikacja będzie obsługiwać chronioną zawartość:

  • Jeśli aplikacja nie obsługuje chronionej zawartości, możesz utworzyć sesję multimediów, wywołując MFCreateMediaSession. Ta funkcja tworzy sesję multimediów wewnątrz procesu aplikacji.
  • Aby obsługiwać chronioną zawartość, utwórz sesję multimediów, wywołując MFCreatePMPMediaSession. Ta funkcja tworzy sesję multimedialną w procesie Protected Media Path (PMP). Aplikacja otrzymuje wskaźnik do obiektu pełnomocnika, który przekazuje wywołania metod przez granicę procesu. Należy pamiętać, że sesja multimediów PMP może służyć do odtwarzania jasnej zawartości, a także chronionej zawartości.

Każda aplikacja korzystająca z sesji multimediów będzie wykonywać następujące ogólne kroki:

  1. Utwórz topologię.
  2. Ustaw topologię w sesji multimedialnej, wywołując IMFMediaSession::SetTopology.
  3. Kontroluj przepływ danych, wywołując IMFMediaSession::Start, IMFMediaSession::Pauselub IMFMediaSession::Stop.
  4. Przed zamknięciem aplikacji wywołaj IMFMediaSession::Zamknij, aby zamknąć sesję multimediów.
  5. Zamknij wszystkie źródła multimediów utworzone przez aplikację, wywołując IMFMediaSource::Shutdown.
  6. Zamknij sesję multimediów, wywołując IMFMediaSession::Shutdown.

W przypadku korzystania z sesji multimediów aplikacja nie powinna bezpośrednio uruchamiać, wstrzymywać ani zatrzymywać źródła multimediów. Wszystkie zmiany stanu muszą być inicjowane przez wywołanie metod IMFMediaSession. Zmiany stanu w źródle multimediów są obsługiwane przez Sesję multimedialną.

Wiele innych szczegółów zależy od konkretnych funkcji aplikacji.

Chroniona zawartość

Aby odtworzyć chronioną zawartość, należy utworzyć sesję multimediów wewnątrz ścieżki chronionego nośnika (PMP), wywołując MFCreatePMPMediaSession. Ta funkcja tworzy instancję sesji multimedialnej w PMP i zwraca wskaźnik do obiektu pełnomocnika, który przesyła interfejsy przez granicę procesu.

W większości przypadków użycie sesji multimediów wewnątrz protokołu PMP jest niewidoczne dla aplikacji. Jednak aplikacja może wymagać wywołania pewnych akcji, które umożliwiają użytkownikowi odtwarzanie zawartości. Na przykład użytkownik może potrzebować uzyskania licencji DRM. Program Media Foundation definiuje ogólny mechanizm tych akcji przy użyciu interfejsu IMFContentEnabler.

Aby uzyskać więcej informacji, zobacz następujące tematy:

Zegar prezentacji

Sesja multimediów zarządza wszystkimi aspektami zegara prezentacji:

  • Tworzenie zegara prezentacji.

  • Wybieranie źródła czasu.

  • Powiadamianie odbiorników multimedialnych o zegarze

  • Uruchamianie, zatrzymywanie i wstrzymanie zegara w razie potrzeby.

  • Zamykanie zegara.

Aby uzyskać wskaźnik do zegara prezentacji, wywołaj IMFMediaSession::GetClock w Media Session. Zegarek prezentacji nie zwraca prawidłowego czasu, dopóki sesja multimedialna nie wyśle zdarzenia MESessionTopologyStatus z flagą MF_TOPOSTATUS_READY. Do tego czasu GetClock zwraca MF_E_CLOCK_NO_TIME_SOURCE.

Aplikacja korzystająca z sesji multimediów nigdy nie powinna uruchamiać, zatrzymywać ani wstrzymywać zegara prezentacji; zmień częstotliwość zegara; lub zamknij zegar.

Gdy aplikacja wywołuje IMFMediaSession::Start, Sesja Mediów rozpoczyna zegar prezentacji, przy czym czas rozpoczęcia jest równy pozycji początkowej określonej w metodzie Start. Aby uzyskać więcej informacji na temat sesji multimedialnej, zapoznaj się z sesją multimedialną.

sesja multimediów