Сведения о сеансе мультимедиа

На пресс-сессии открывается интерфейс IMFMediaSession . Существует два способа создания сеанса мультимедиа в зависимости от того, будет ли ваше приложение поддерживать защищенное содержимое:

  • Если приложение не поддерживает защищенное содержимое, можно создать сеанс мультимедиа, вызвав MFCreateMediaSession. Эта функция создает сеанс мультимедиа внутри процесса приложения.
  • Для поддержки защищенного содержимого создайте сеанс мультимедиа, вызвав MFCreatePMPMediaSession. Эта функция создает сеанс мультимедиа в процессе защищенного пути к мультимедиа (PMP). Приложение получает указатель на прокси-объект, который маршалирует вызовы методов через границу процесса. Обратите внимание, что сеанс мультимедиа PMP можно использовать для воспроизведения прозрачного содержимого, а также защищенного содержимого.

Все приложения, использующие сеанс мультимедиа, будут выполнять следующие общие действия.

  1. Создайте топологию.
  2. Поставить топологию в очередь в сеансе мультимедиа, вызвав IMFMediaSession::SetTopology.
  3. Управляйте потоком данных, вызывая IMFMediaSession::Start, IMFMediaSession::P ause или IMFMediaSession::Stop.
  4. Перед завершением работы приложения вызовите IMFMediaSession::Close , чтобы закрыть сеанс мультимедиа.
  5. Завершите работу всех источников мультимедиа, созданных приложением, вызвав IMFMediaSource::Shutdown.
  6. Завершите сеанс мультимедиа, вызвав IMFMediaSession::Shutdown.

При использовании сеанса мультимедиа приложение не должно напрямую запускать, приостанавливать или останавливать источник мультимедиа. Все изменения состояния должны инициироваться путем вызова методов IMFMediaSession . Изменения состояния в источнике мультимедиа обрабатываются сеансом мультимедиа.

Многие другие сведения будут зависеть от конкретных функциональных возможностей приложения.

Защищенное содержимое

Чтобы воспроизвести защищенное содержимое, необходимо создать сеанс мультимедиа внутри пути защищенного мультимедиа (PMP), вызвав MFCreatePMPMediaSession. Эта функция создает экземпляр сеанса мультимедиа внутри PMP и возвращает указатель на прокси-объект, который маршалирует интерфейсы через границу процесса.

В большинстве случаев использование сеанса мультимедиа в PMP является прозрачным для приложения. Однако приложению может потребоваться вызвать определенные действия, позволяющие пользователю воспроизводить содержимое. Например, пользователю может потребоваться получить лицензию DRM. Media Foundation определяет универсальный механизм для этих действий с помощью интерфейса IMFContentEnabler .

Дополнительные сведения см. в следующих разделах:

Часы презентации

Сеанс мультимедиа управляет всеми аспектами часов презентации:

  • Создание часов презентации.

  • Выбор источника времени.

  • Уведомление приемников мультимедиа о часах

  • Запуск, остановка и приостановка часов при необходимости.

  • Завершение работы часов.

Чтобы получить указатель на часы презентации, вызовите IMFMediaSession::GetClock в сеансе мультимедиа. Часы представления не возвращают допустимое время, пока сеанс мультимедиа не отправит событие MESessionTopologyStatus с флагом MF_TOPOSTATUS_READY. До тех пор GetClock возвращает MF_E_CLOCK_NO_TIME_SOURCE.

Приложение, использующее сеанс мультимедиа, никогда не должно запускаться, останавливаться или приостанавливать часы презентации; изменение частоты; или завершите работу часов.

Когда приложение вызывает IMFMediaSession::Start, сеанс мультимедиа запускает часы презентации с начальным временем, равным начальной позиции, указанной в методе Start . Дополнительные сведения о сеансе мультимедиа см. в разделе Сеанс мультимедиа.

Сеанс мультимедиа