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:
- Crie uma topologia.
- Enfileirar a topologia na Sessão de Mídia chamando IMFMediaSession::SetTopology.
- Controle o fluxo de dados chamando IMFMediaSession::Start, IMFMediaSession::P ause ou IMFMediaSession::Stop.
- Antes da saída do aplicativo, chame IMFMediaSession::Close para fechar a Sessão de Mídia.
- Desligue todas as fontes de mídia que o aplicativo criou chamando IMFMediaSource::Shutdown.
- 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.
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:
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.