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.
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:
- A fonte de mídia deve implementar o IMFPMPClient interface.
- 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.
- 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.
Outra alternativa é criar a fonte de mídia dentro da sessão PMP.
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.
Chame MFGetService na sessão de mídia para obter um ponteiro para a interfaceIMFPMPHost. O identificador de serviço é MF_PMP_SERVICE.
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.
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.
Tópicos relacionados