Condividi tramite


Posizionare e spostare i rettangoli video nello spazio di composizione

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Quando vmR combina più flussi di input, posiziona ogni flusso all'interno di un rettangolo normalizzato, denominato "spazio di composizione". All'interno dello spazio di composizione, le coordinate (0,0, 0,0) su (1,0, 1,0) formano il rettangolo video visibile. Le coordinate che rientrano all'esterno di questo rettangolo vengono ritagliate.

Un'applicazione può eseguire effetti speciali con lo spostamento, l'estensione e la compattazione del video da un flusso di input, modificando il rettangolo di destinazione nello spazio di composizione per tale flusso. Se il rettangolo specificato è una dimensione diversa rispetto al rettangolo video nativo, il video nativo verrà ridotto o esteso per adattarsi. Il rettangolo di destinazione viene specificato chiamando il metodo IVMRMixerControl::SetOutputRect .

Si supponga, ad esempio, che il flusso 0 (corrispondente al pin 0) contenga il flusso video principale e il flusso 1 (che corrisponde al pin 1) contenga un video secondario. Stream 1 può essere posizionato completamente fuori schermo specificando un rettangolo normalizzato di { -1.0f, 0.0f, 0.0f, 1.0f }. Il flusso 1 può quindi essere spostato nell'area visibile modificando i lati sinistro e destro del rettangolo nelle chiamate successive a SetOutputRect:

Etichetta Valore
Ora Rettangolo
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 }

 

spostamento di un flusso video nello spazio di composizione

Al momento t+10, il video dal flusso 1 è completamente visibile. In questo esempio le dimensioni native del flusso 1 sono state mantenute durante lo spostamento. È anche possibile estendere o compattare il rettangolo per produrre effetti interessanti. È anche possibile capovolgere il video verticalmente, specificando un valore maggiore per la parte superiore rispetto alla parte inferiore o mirrorare il video orizzontalmente, specificando un valore maggiore per sinistra rispetto a destra.

Uso della modalità di combinazione di VMR