Sobre a sessão de mídia

A Sessão de Mídia expõe a interface IMFMediaSession . Há duas maneiras de criar a Sessão de Mídia, dependendo se o aplicativo dará suporte ao conteúdo protegido:

  • Se o aplicativo não der suporte a conteúdo protegido, você poderá criar a Sessão de Mídia chamando MFCreateMediaSession. Essa função cria a Sessão de Mídia dentro do processo do aplicativo.
  • Para dar suporte ao conteúdo protegido, crie a Sessão de Mídia chamando MFCreatePMPMediaSession. Essa função cria a Sessão de Mídia dentro do processo de PMP (Caminho de Mídia Protegido). O aplicativo recebe um ponteiro para um objeto proxy que realiza marshaling de chamadas de método no limite do processo. Observe que a Sessão de Mídia pmp pode ser usada para reproduzir conteúdo claro, bem como conteúdo protegido.

Qualquer aplicativo que usa a Sessão de Mídia seguirá estas etapas gerais:

  1. Crie uma topologia.
  2. Enfileirar a topologia na Sessão de Mídia chamando IMFMediaSession::SetTopology.
  3. Controle o fluxo de dados chamando IMFMediaSession::Start, IMFMediaSession::P ause ou IMFMediaSession::Stop.
  4. Antes da saída do aplicativo, chame IMFMediaSession::Close para fechar a Sessão de Mídia.
  5. Desligue todas as fontes de mídia que o aplicativo criou chamando IMFMediaSource::Shutdown.
  6. Desligue a Sessão de Mídia chamando IMFMediaSession::Shutdown.

Ao usar a Sessão de Mídia, o aplicativo não deve iniciar, pausar ou parar diretamente a origem da mídia. Todas as alterações de Estado devem ser iniciadas chamando métodos IMFMediaSession . As alterações de estado na fonte de mídia são tratadas pela Sessão de Mídia.

Muitos outros detalhes dependerão da funcionalidade específica do seu aplicativo.

Conteúdo protegido

Para reproduzir conteúdo protegido, você deve criar a Sessão de Mídia dentro do PMP (caminho de mídia protegido), chamando MFCreatePMPMediaSession. Essa função cria uma instância da Sessão de Mídia dentro do PMP e retorna um ponteiro para um objeto proxy que realiza marshaling de interfaces no limite do processo.

Na maioria dos aspectos, o uso da Sessão de Mídia dentro do PMP é transparente para o aplicativo. No entanto, o aplicativo pode precisar invocar determinadas ações que permitem que o usuário reproduza o conteúdo. Por exemplo, o usuário pode precisar obter uma licença drm. O Media Foundation define um mecanismo genérico para essas ações usando a interface IMFContentEnabler .

Para obter mais informações, consulte estes tópicos:

Relógio de Apresentação

A Sessão de Mídia gerencia todos os aspectos do relógio de apresentação:

  • Criando o relógio de apresentação.

  • Selecionando a fonte de tempo.

  • Notificando os coletores de mídia sobre o relógio

  • Iniciando, parando e pausando o relógio conforme necessário.

  • Desligando o relógio.

Para obter um ponteiro para o relógio de apresentação, chame IMFMediaSession::GetClock na Sessão de Mídia. O relógio de apresentação não retorna uma hora válida até que a Sessão de Mídia envie o evento MESessionTopologyStatus com o sinalizador MF_TOPOSTATUS_READY. Até lá, GetClock retorna MF_E_CLOCK_NO_TIME_SOURCE.

Um aplicativo que usa a Sessão de Mídia nunca deve iniciar, parar ou pausar o relógio de apresentação; alterar a taxa do relógio; ou desligue o relógio.

Quando o aplicativo chama IMFMediaSession::Start, a Sessão de Mídia inicia o relógio da apresentação com uma hora inicial igual à posição inicial especificada no método Start . Para obter mais informações sobre a Sessão de Mídia, consulte Sessão de Mídia.

Sessão de Mídia