Modo de janela VMR (compatibilidade)
[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo 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 Captura de Áudio/Vídeo 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 é usada com um aplicativo existente, a VMR opera no modo em janelas 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 seu aplicativo usa o Intelligent Connect e requer apenas recursos básicos de renderização, você não precisa 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 janelas fornece melhor funcionalidade do que o modo em janelas, não há nenhuma vantagem específica em usar o VMR-9 no modo de compatibilidade/janela.
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 compatibilidade/janela. 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 compatibilidade/janela, 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 interfaces IVideoWindow e IBasicVideo . Seu aplicativo pode consultar o Gerenciador de Grafo 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.
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 compatibilidade/janela, a VMR não consome mais recursos do sistema do que o renderizador de vídeo antigo. 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étodo IVMRAspectRatioControl::SetAspectRatioMode com o sinalizador VMR_ARMODE_LETTER_BOX.
Observação
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á repinta corretamente.
Usando a VMR-7 no modo de janela/compatibilidade com vários fluxos
No modo de compatibilidade/janela, a VMR-7 cria um único pin de entrada por padrão e desabilita o modo de combinação. 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 combinação). 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 de janela
Como o VMR-9 não é o renderizador padrão, ele não tem um modo de compatibilidade como tal. Em vez disso, o VMR-9 usa como padrão o modo em 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 na VMR com Vários Fluxos (Modo de Combinação). Caso contrário, a VMR-9 no modo com janelas se comporta exatamente como a VMR-7 no modo de janela/compatibilidade.