Condividi tramite


VMR con più flussi (modalità di combinazione)

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

VmR può eseguire il rendering di più flussi di input. In questa configurazione, denominata modalità di combinazione, vmR carica il suo mixer e il compositore per eseguire la combinazione e la fusione prima del rendering. La modalità di combinazione può essere usata mentre vmR è in modalità finestra o in modalità senza finestra.

La modalità di combinazione richiede che il driver grafico supporti rispettivamente i flag di funzionalità DDCAPS_BLTFOURCC e DDCAPS_BLTSTRETCH (conversione dello spazio dei colori e estensione blitting). Quasi tutti i nuovi driver grafici hanno queste funzionalità. Inoltre, il driver deve supportare la creazione di destinazioni di rendering Direct3D per la profondità del pixel di visualizzazione corrente. Alcuni dispositivi non supportano operazioni Direct3D quando la visualizzazione è impostata su 24 bit per pixel. Per altre informazioni, vedere la documentazione di DirectX Graphics SDK.

Nota

Quando vmR combina più flussi video, il grafico del filtro non cerca correttamente. Se è necessario cercare più flussi video, è necessario creare grafici di filtro separati che condividono lo stesso oggetto allocatore-relatore personalizzato.

 

Configurazione di VMR-7 per più flussi

Per eseguire il rendering di più flussi di input con VMR-7, eseguire le operazioni seguenti:

  1. Prima di connettere uno dei pin di input di VMR, chiamare il metodo IVMRFilterConfig::SetNumberOfStreams con il numero di flussi. In questo modo, vmR carica il mixer e il compositore e crea il numero specificato di pin di input.
  2. Chiamare IVMRFilterConfig::SetRenderingPrefs per specificare varie preferenze di rendering.
  3. Connettere i pin ai filtri upstream. Il modo più semplice per eseguire questa operazione consiste nel chiamare IGraphBuilder::RenderFile per ogni flusso di input. Se il pin di output sul filtro upstream (in genere un decodificatore) e il pin di input nella macchina virtuale non può accettare una connessione, verrà creata una nuova istanza di VMR con impostazioni predefinite. Verrà visualizzata una nuova finestra con "ActiveMovie" nella barra del titolo. Per impedire l'esecuzione di questa operazione, l'applicazione deve sempre verificare che l'istanza corretta di VMR venga usata chiamando un metodo come IPin::ConnectedTo. Un'altra opzione consiste nell'aggiungere il filtro di origine e quindi connettere i pin usando IGraphBuilder::Connect.
  4. Usare l'interfaccia IVMRMixerControl nella vmR per controllare i parametri per ogni flusso, ad esempio il valore alfa, l'ordinamento Z e il rettangolo di output.
  5. Eseguire il grafico del filtro.

Configurazione di VMR-9 per più flussi

Per impostazione predefinita, vmR-9 crea quattro pin di input. Se si desidera combinare più di quattro flussi video, chiamare IVMRFilterConfig9::SetNumberOfStreams prima di connettere tutti i pin di input. Usare l'interfaccia IVMRMixerControl9 per impostare i parametri di flusso, ad esempio alfa, Z-order e posizione.

Uso della modalità di combinazione di VMR