Architettura 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.
Questa sezione descrive l'architettura complessiva di un oggetto DMO.
Flussi
Un DMO è un oggetto che accetta gli input m e produce n output. Gli input e gli output sono denominati flussi. Ogni DMO ha almeno un flusso. I flussi non sono oggetti; si fa semplicemente riferimento all'oggetto DMO in base al numero di indice. Il numero di flussi è fisso in fase di progettazione.
Tipi di supporti
Tutti i dati vengono digitati usando un tipo di supporto, che definisce come interpretare il contenuto dei dati. Ad esempio, video RGB a 320 x 240 a 24 bit è un tipo; L'audio PCM stereo a 44,1 kilohertz (kHz) a 16 bit è un altro tipo. I tipi di supporti vengono descritti usando la struttura DMO_MEDIA_TYPE . Prima che il client possa elaborare qualsiasi dato, deve impostare il tipo di supporto per ogni flusso nell'oggetto DMO.
In genere, un flusso può accettare un intervallo di tipi di supporti. Alcune DMO supportano una gamma più ampia di tipi rispetto ad altri. Le interfacce DMO definiscono i metodi per il client per individuare i tipi supportati. Ad esempio, un DMO potrebbe supportare video RGB a qualsiasi profondità di bit, mentre un altro potrebbe supportare solo RGB a 24 bit. Inoltre, un DMO potrebbe essere limitato a determinate combinazioni di input e output. Ad esempio, se il tipo di input è video a 16 bit, il flusso di output potrebbe richiedere la stessa profondità di bit. Il client può enumerare i tipi preferiti di ogni flusso e quindi testare combinazioni specifiche.
Buffer
Nel modello DMO predefinito il client alloca buffer di input e buffer di output separati. Riempie i buffer di input con i dati e li recapita all'istanza DMO e DMO scrive nuovi dati nei buffer di output.
Facoltativamente, un DMO può supportare l'elaborazione sul posto. Con l'elaborazione sul posto, DMO scrive l'output direttamente nel buffer di input, sui dati originali. L'elaborazione sul posto elimina la necessità di buffer separati. D'altra parte, modifica i dati originali, che potrebbero non essere accettabili per alcune applicazioni.
Il modello di buffering predefinito (non sul posto) è supportato tramite l'interfaccia IMediaObject . Tutte le DMO devono implementare questa interfaccia. Se un DMO supporta l'elaborazione sul posto, espone anche l'interfaccia IMediaObjectInPlace . Il client è responsabile dell'allocazione di tutti i buffer, sia di input che di output.
Argomenti correlati