Compartilhar via


Sessão de Mídia pmp

Um aplicativo pode criar a sessão de mídia em um processo separado chamado processo de PMP ( de Caminho de Mídia Protegido). A principal finalidade 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 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çãoMFCreatePMPMediaSession. 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 interfaceIMFPMPHost. 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 interfaceIMFPMPHost, faça o seguinte:

  1. A fonte de mídia deve implementar a interface deIMFPMPClient.
  2. Durante a resolução de 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 protegidos de assinatura de código, consulte o white paper Code Signing for Protected Media Components in 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çã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.

    Nota

    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

de Sessão de Mídia do

caminho de mídia protegido