Condividi tramite


Vantaggi delle DMO

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Le DMO offrono i vantaggi seguenti:

  • Sono in genere più piccoli e semplici rispetto ai filtri DirectShow, perché supportano meno funzionalità.
  • Sono più flessibili dei filtri DirectShow perché non richiedono un grafico di filtro. È possibile usarli con DirectShow quando sono necessari i servizi forniti da DirectShow, ad esempio la sincronizzazione, la connessione intelligente, la gestione automatica del flusso di dati e la gestione dei thread. I client che non necessitano di questi servizi possono accedere direttamente alle DMO.
  • Le DMO eseguono sempre l'elaborazione sincrona dei dati, eliminando molti dei problemi di threading che è necessario considerare se si scrive un filtro.
  • A differenza dei codec ACM e VCM tradizionali, le DMO sono basate sul modello COM (Component Object Model), in modo che possano essere estese tramite QueryInterface.
  • Le DMO supportano un modello di streaming più generalizzato rispetto ai codec ACM o VCM. Come i filtri DirectShow, le DMO possono supportare più input e più output.

Per questi motivi, le DMO sono ora consigliate come soluzione per la scrittura di codificatori, decodificatori ed effetti audio. Molti altri scenari sono possibili anche, a seconda delle esigenze dell'applicazione.

Differenze tra dmo e filtri DirectShow

I filtri DirectShow non possono funzionare all'esterno di un grafico di filtro DirectShow. In DirectShow, Filter Graph Manager media tra l'applicazione e i filtri. I filtri DirectShow eseguono la maggior parte delle operazioni necessarie per trasmettere i dati, tra cui:

  • Allocazione di buffer.
  • Negoziazione di tipi di supporti e connessioni ad altri filtri.
  • Push dei dati tramite il grafico del filtro.
  • Invio di eventi a Filter Graph Manager.
  • Sincronizzazione di più thread.

Al contrario, un DMO non esegue nessuna di queste operazioni. Al contrario, questi tipi di attività sono responsabilità del client che usa DMO. Il client alloca i buffer, li riempie di dati e li recapita alla DMO. DMO elabora i dati e il client recupera i buffer di output risultanti.

Informazioni sulle DMO