Sessão de Mídia PMP

Um aplicativo pode criar a Sessão de Mídia em um processo separado chamado de processo de PMP ( Caminho de Mídia Protegido ). A finalidade main do processo PMP é habilitar a reprodução de conteúdo protegido usando o DRM (gerenciamento de direitos digitais). Por padrão, o processo PMP é criado dentro de um PE (Ambiente Protegido). Somente componentes confiáveis e assinados podem ser carregados dentro de um PE. Um benefício secundário do processo pmp é que ele isola o processo de aplicativo do pipeline de mídia. Para obter mais informações sobre o processo pmp, consulte Caminho de mídia protegido.

Para criar a Sessão de Mídia dentro do processo PMP, chame a função MFCreatePMPMediaSession . Opcionalmente, você pode passar o sinalizador MFPMPSESSION_UNPROTECTED_PROCESS . Se esse sinalizador for definido, o processo PMP será criado dentro de um processo desprotegido e não em um processo PE. O processo desprotegido não pode ser usado para reprodução de DRM, mas oferece os benefícios do isolamento do processo.

A função MFCreatePMPMediaSession retorna um ponteiro para um objeto proxy para a Sessão de Mídia. O aplicativo se comunica com a Sessão de Mídia por meio do proxy.

uma ilustração da sessão de mídia dentro do processo pmp

Por padrão, quando o aplicativo cria uma topologia, a fonte de mídia é criada dentro do processo do aplicativo. Um proxy para a fonte de mídia é criado dentro do processo PMP. A fonte de mídia pode criar objetos dentro do processo PMP usando a interface IMFPMPHost . Por exemplo, para dar suporte ao DRM, uma fonte de mídia cria um objeto chamado ITA ( autoridade de confiança de entrada ). O ITA deve ser criado dentro do processo pmp. (Para obter mais informações sobre ITAs, consulte Caminho de mídia protegido.) Para usar a interface IMFPMPHost , faça o seguinte:

  1. A fonte de mídia deve implementar a interface IMFPMPClient .
  2. Durante a resolução da topologia, o proxy da Sessão de Mídia chama o método IMFPMPClient::SetPMPHost na fonte de mídia.
  3. A fonte de mídia chama IMFPMPHost::CreateObjectByCLSID para criar o objeto dentro do processo PMP. O objeto deve ter um CLSID registrado. Além disso, para carregar dentro do PE, o objeto deve ser confiável e assinado digitalmente. Para obter informações sobre componentes de mídia protegida de assinatura de código, consulte o white paper Assinatura de código para componentes de mídia protegida no Windows Vista

A ilustração a seguir mostra a fonte de mídia criada no processo do aplicativo.

uma ilustração de uma fonte de mídia no processo do aplicativo.

Outra alternativa é criar a fonte de mídia dentro da sessão PMP.

  1. Defina o atributo MF_SESSION_REMOTE_SOURCE_MODE ao criar a Sessão de Mídia. Os atributos de configuração são especificados no parâmetro pConfiguration da função MFCreatePMPMediaSession .

  2. Chame MFGetService na Sessão de Mídia para obter um ponteiro para a interface IMFPMPHost . O identificador de serviço é MF_PMP_SERVICE.

  3. Chame IMFPMPHost::CreateObjectByCLSID com o identificador de classe CLSID_MFSourceResolver para criar o resolvedor de origem dentro do processo pmp. O método retorna um ponteiro para um proxy para o resolvedor de origem.

  4. Chame IMFSourceResolver::BeginCreateObjectFromURL ou IMFSourceResolver::BeginCreateObjectFromByteStream para criar a fonte de mídia.

    Observação

    Nesse caso, você deve usar as versões assíncronas desses métodos, pois as versões síncronas não são remotas.

     

A ilustração a seguir mostra a fonte de mídia criada no processo pmp.

uma ilustração de uma fonte de mídia no processo pmp.

Como reproduzir arquivos de mídia protegidos

Sessão de Mídia

Caminho de mídia protegido