Condividi tramite


Modifiche al formato dinamico

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video 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 due filtri si connettono, accettano un tipo di supporto, che descrive il formato dei dati che verranno recapitati dal filtro upstream. Nella maggior parte dei casi, il tipo di supporto è fisso per la durata della connessione. Tuttavia, DirectShow offre un supporto limitato per i filtri per modificare il tipo di supporto. Quando un filtro cambia i tipi di supporti, viene chiamato modifica del formato dinamico. Se si scrive un filtro DirectShow, è necessario conoscere i meccanismi per le modifiche al formato dinamico. Anche se il filtro non supporta tali modifiche, deve rispondere correttamente se un altro filtro richiede un nuovo formato.

DirectShow definisce diversi meccanismi distinti per le modifiche al formato dinamico, a seconda dello stato del grafico del filtro e del tipo di modifica necessario.

  • Se il grafico viene arrestato, i pin possono riconnettersi e rinegoziare il tipo di supporto. Per altre informazioni, vedere Riconnessione dei pin.
  • Alcuni filtri possono riconnettere i pin anche mentre il grafico è attivo (in esecuzione o sospeso). Per altre informazioni su questo meccanismo, vedere riconnessione dinamica.

In caso contrario, se il grafico è attivo, ma i filtri in questione non supportano le riconnessioni dinamiche dei pin, esistono tre possibili meccanismi per modificare il formato:

  • QueryAccept (Downstream) quando un pin di output propone una modifica del formato al peer downstream, ma solo se il nuovo formato non richiede un buffer più grande.
  • QueryAccept (Upstream) quando un pin di input propone una modifica del formato al peer upstream. Il nuovo formato può essere la stessa dimensione o può essere maggiore.
  • ReceiveConnection viene usato quando un pin di output propone una modifica del formato al peer downstream e il nuovo formato richiede un buffer più grande.

gestione delle modifiche del formato dal renderer video