Posicionar e mover retângulos de vídeo no espaço de composição

[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.]

Quando a VMR mistura vários fluxos de entrada, ela posiciona cada fluxo dentro de um retângulo normalizado, chamado "espaço de composição". No espaço de composição, as coordenadas (0.0, 0.0) a (1.0, 1.0) formam o retângulo de vídeo visível. Todas as coordenadas que ficam fora desse retângulo são recortadas.

Um aplicativo pode executar efeitos especiais com movimentação, alongamento e redução do vídeo de um fluxo de entrada, alterando o retângulo de destino no espaço de composição para esse fluxo. Se o retângulo especificado for um tamanho diferente do retângulo de vídeo nativo, o vídeo nativo será encolhido ou estendido para caber. O retângulo de destino é especificado chamando o método IVMRMixerControl::SetOutputRect .

Por exemplo, suponha que o fluxo 0 (que corresponde ao pino 0) contenha a main fluxo de vídeo e o fluxo 1 (que corresponde ao pino 1) contém um vídeo secundário. O Fluxo 1 pode ser posicionado completamente fora da tela especificando um retângulo normalizado de { -1.0f, 0.0f, 0.0f, 1.0f }. Em seguida, o Fluxo 1 pode ser movido para a área visível modificando os lados esquerdo e direito do retângulo em chamadas sucessivas para SetOutputRect:

Rótulo Valor
Hora Retângulo
t + 0 { -1.0f, 0.0f, 0.0f, 1.0f }
t + 1 { -0.9f, 0.0f, 0.1f, 1.0f }
t + 2 { -0.8f, 0.0f, 0.2f, 1.0f }
... ...
t + 10 { 0.0f, 0.0f, 1.0f, 1.0f }

 

mover um fluxo de vídeo no espaço de composição

No momento t+10, o vídeo do fluxo 1 está completamente visível. Neste exemplo, o tamanho nativo do fluxo 1 foi mantido durante a movimentação. Você também pode esticar ou reduzir o retângulo para produzir efeitos interessantes. Você também pode inverter o vídeo verticalmente, especificando um valor maior para a parte superior do que a parte inferior ou espelho o vídeo horizontalmente, especificando um valor maior para a esquerda do que para a direita.

Usando o modo de combinação VMR