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.
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:
- A fonte de mídia deve implementar a interface deIMFPMPClient.
- 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.
- 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.
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.
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.
Tópicos relacionados