Partilhar via


Sessão de Imprensa PMP

Um aplicativo pode criar o Media Session em um processo separado chamado processo Protected Media Path (PMP). O principal objetivo do processo PMP é permitir a reprodução de conteúdo protegido usando o gerenciamento de direitos digitais (DRM). Por padrão, o processo PMP é criado dentro de um Ambiente Protegido (PE). 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 aplicação do pipeline de mídia. Para obter mais informações sobre o processo PMP, consulte Protected Media Path.

Para criar a Sessão de Mídia dentro do processo PMP, chame a função deMFCreatePMPMediaSession. Opcionalmente, você pode passar na bandeira MFPMPSESSION_UNPROTECTED_PROCESS. Se esse sinalizador for definido, o processo PMP será criado dentro de um processo desprotegido, e não um processo de 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 através 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 interfaceIMFPMPHost. Por exemplo, para dar suporte ao DRM, uma fonte de mídia cria um objeto chamado de autoridade de confiança de entrada (ITA). O ITA deve ser criado dentro do processo PMP. (Para obter mais informações sobre ITAs, consulte Protected Media Path.) Para usar a interface IMFPMPHost, faça o seguinte:

  1. A fonte de mídia deve implementar o IMFPMPClient interface.
  2. Durante a resolução da topologia, o proxy da Sessão de Mídia chama o IMFPMPClient::SetPMPHost método 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 protegidos de assinatura de código, consulte o white paper Assinatura de código para componentes de mídia protegidos no Windows Vista

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

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

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çãoMFCreatePMPMediaSession.

  2. Chame MFGetService na sessão de mídia para obter um ponteiro para a interfaceIMFPMPHost. 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, porque 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 Imprensa

caminho de mídia protegido