Compartilhar via


Modo de janela VMR (compatibilidade)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

A VMR foi projetada para ser compatível com todos os aplicativos DirectShow existentes. Quando ele é usado com um aplicativo existente, a VMR opera no modo de janela com um único fluxo de vídeo, também chamado de modo de compatibilidade. Esse modo é fornecido porque o VMR-7 é o renderizador padrão no Windows XP e, portanto, é usado automaticamente em chamadas para métodos do Intelligent Connect, como IGraphBuilder::RenderFile. Se o aplicativo usar o Intelligent Connect e exigir apenas recursos básicos de renderização, você não precisará de nenhum código especial para renderizar corretamente com a VMR-7 no Windows XP.

A VMR-9 também é executada no modo de janela/compatibilidade por padrão. No entanto, a VMR-9 nunca é o renderizador de vídeo padrão. Para usar a VMR-9 em um aplicativo, você deve adicioná-la explicitamente ao grafo de filtro. Por esse motivo, e como o modo sem janela fornece melhor funcionalidade do que o modo com janelas, não há nenhuma vantagem específica em usar a VMR-9 no modo de janela/compatibilidade.

usando a VMR-7 no modo de janela/compatibilidade

Nenhuma programação especial é necessária para configurar ou controlar a VMR-7 no modo de janela/compatibilidade. Basta criar o grafo de filtro usando as chamadas de criação de grafo padrão e a VMR-7 usará esse modo como padrão.

No modo de janela/compatibilidade, a VMR-7 cria sua própria janela para exibir o vídeo. Para fazer isso, ele carrega o componente Gerenciador de Janelas, que expõe as interfacesIVideoWindowe IBasicVideo. Seu aplicativo pode consultar o Gerenciador de Grafos de Filtro para essas interfaces, exatamente como você faria com o filtro antigo do Renderizador de Vídeo. Para obter mais informações, consulte Usando o modo de janela.

A ilustração a seguir mostra a VMR-7 no modo de janela/compatibilidade.

vmr no modo de compatibilidade

Para garantir o nível máximo de compatibilidade, a janela de vídeo tem o mesmo nome de classe que o criado pelo filtro antigo do Renderizador de Vídeo e a maior parte do código do Gerenciador de Janelas do renderizador de vídeo antigo ainda é usada pela VMR. No modo de janela/compatibilidade, a VMR não consome mais recursos do sistema do que o antigo Renderizador de Vídeo. Como a VMR-7 tem apenas um fluxo de entrada no modo de janela/compatibilidade, ela não carrega seus componentes de mixer ou compositor.

Por padrão, a VMR estende a imagem para preencher a janela de vídeo. Para preservar a taxa de proporção da origem, chame o métodoIVMRAspectRatioControl::SetAspectRatioMode com o sinalizador VMR_ARMODE_LETTER_BOX.

Nota

Os aplicativos MFC que colocam a janela de vídeo em uma janela filho devem definir um manipulador de mensagens WM_ERASEBKGND vazio ou a área de exibição de vídeo não será reintetizar corretamente.

 

usando a VMR-7 no modo de janela/compatibilidade com vários fluxos

No modo de janela/compatibilidade, a VMR-7 cria um único pin de entrada por padrão e desabilita o modo de mistura. Para habilitar o modo de combinação, você deve configurar a VMR antes de conectá-la. Para obter mais informações, consulte VMR com vários fluxos (modo de mistura). No modo de combinação, a VMR carrega os componentes de combinação e compositor, que exigem mais recursos do sistema.

usando a VMR-9 no modo com janelas

Como a VMR-9 não é o renderizador padrão, ela não tem um modo de compatibilidade como tal. Em vez disso, a VMR-9 usa como padrão o modo de janela com quatro pinos de entrada. Você pode usar esse modo para misturar até quatro fluxos de vídeo. Se você precisar misturar um número maior de fluxos, deverá configurá-lo conforme descrito em VMR com vários fluxos (modo de mistura). Caso contrário, a VMR-9 no modo com janelas se comporta exatamente como a VMR-7 no modo de compatibilidade/janela.