elaborazione In-Place
[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.
Alcune trasformazioni di dati possono essere eseguite modificando direttamente i dati. Questa operazione viene chiamata elaborazione sul posto . Molti effetti audio e video possono essere eseguiti in questo modo. Se un DMO supporta l'elaborazione sul posto, espone l'interfaccia IMediaObjectInPlace . L'elaborazione sul posto è in genere più efficiente rispetto all'uso di buffer separati per l'output. Un'eccezione principale è quando il buffer risiede nella memoria video. In tale situazione, le operazioni di lettura sono molto più lente rispetto alle operazioni di scrittura, quindi l'elaborazione sul posto non è consigliata.
Per elaborare i dati sul posto, il client effettua una singola chiamata al metodo IMediaObjectInPlace::P rocess anziché le chiamate separate a ProcessInput e ProcessOutput. Il metodo Process è sincrono; tutte le elaborazioni si verificano all'interno della chiamata. Inoltre, l'elaborazione sul posto non usa oggetti IMediaBuffer . Il metodo Process accetta un puntatore direttamente al buffer di memoria.
Un DMO che supporta l'elaborazione sul posto deve comunque implementare l'interfaccia IMediaObject , inclusi i metodi ProcessInput e ProcessOutput . Il client può scegliere se usare l'elaborazione sul posto o usare buffer separati. Tuttavia, non combinare i due tipi di elaborazione. Se si chiama Processo, non chiamare ProcessInput o ProcessOutput e viceversa.
Effetti Tails
Un DMO sul posto potrebbe creare un output aggiuntivo dopo l'arresto dell'input. Questo è chiamato una coda di effetto. Ad esempio, un effetto riverbero continua dopo che l'input raggiunge il silenzio. Se è presente una coda di effetto, il metodo Process restituisce S_FALSE. Dopo aver elaborato tutti i dati dell'applicazione, può generare la coda dell'effetto inviando buffer vuoti al metodo Process .
Argomenti correlati