Share via


Trasporti

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

Per spostare i dati multimediali tramite il grafico del filtro, un filtro DirectShow deve supportare uno dei diversi protocolli possibili. Questi protocolli sono denominati trasporti. Quando due filtri si connettono, devono supportare lo stesso trasporto; altrimenti non possono scambiare dati multimediali. In genere, un trasporto richiede che uno dei pin supporti un'interfaccia specifica. Quando i filtri si connettono, un pin esegue una query sull'altra per l'interfaccia.

La maggior parte dei filtri DirectShow contiene dati multimediali nella memoria principale e la consegna ad altri filtri tra connessioni pin. Questo tipo di trasporto è denominato trasporto di memoria locale. Anche se il trasporto di memoria locale è il trasporto più comune in DirectShow, non tutti i filtri lo usano. Ad esempio, alcuni filtri inviano dati multimediali lungo un percorso hardware e usano i pin solo per fornire informazioni di controllo. Ad esempio, vedere l'interfaccia IOverlay .

DirectShow definisce due meccanismi per il trasporto di memoria locale, il modello push e il modello pull. Nel modello push un filtro di origine genera dati e lo distribuisce al filtro downstream successivo. Tale filtro riceve passivamente i dati, li elabora e lo invia ulteriormente a valle. Nel modello pull il filtro di origine è connesso a un filtro parser. Il filtro del parser richiede i dati dal filtro di origine. Il filtro di origine risponde alle richieste recapitando i dati. Il modello push usa l'interfaccia IMemInputPin e il modello pull usa l'interfaccia IAsyncReader .

Il modello push è più comune del modello pull. Pertanto, gli articoli che seguono presuppongono un modello push. L'ultimo articolo di questa sezione, Pull Model, descrive come l'interfaccia IAsyncReader differisce da IMemInputPin.

Flusso di dati nel grafico di filtro