Condividi tramite


Informazioni sui filtri DirectShow

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione Audio/Video nella Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice utilizzi 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.

DirectShow usa un'architettura modulare, in cui ogni fase di elaborazione viene eseguita da un oggetto COM denominato filtro. DirectShow offre un set di filtri standard per le applicazioni da usare e gli sviluppatori possono scrivere filtri personalizzati che estendono la funzionalità di DirectShow. Per illustrare, ecco i passaggi necessari per riprodurre un file video AVI, insieme ai filtri che eseguono ogni passaggio:

  • Leggere i dati grezzi dal file come flusso di byte (filtro sorgente file).
  • Esaminare le intestazioni AVI e suddividere il flusso di byte in fotogrammi video e tracce audio separati (filtro splitter AVI).
  • Decodificare i fotogrammi video (vari filtri decodificatori, a seconda del formato di compressione).
  • Disegna i fotogrammi video (renderizzatore video).
  • Inviare gli esempi audio alla scheda audio (filtro dispositivo DirectSound predefinito).

Questi filtri sono illustrati nel diagramma seguente.

grafico di filtri per riprodurre un file avi con video compresso

Come illustrato nel diagramma, ogni filtro è connesso a uno o più filtri. I punti di connessione sono anche oggetti COM, denominati pin . I filtri usano i pin per spostare i dati da un filtro al successivo. Le frecce nel diagramma mostrano la direzione in cui viaggiano i dati. In DirectShow un set di filtri viene chiamato grafico del filtro .

I filtri hanno tre possibili stati: in esecuzione, arresto e sospensione. Quando un filtro è in esecuzione, elabora i dati multimediali. Quando è arrestata, interrompe l'elaborazione dei dati. Lo stato sospeso viene usato per indicare i dati prima dell'esecuzione; la sezione Flusso di dati nella Filter Graph descrive questo concetto in modo più dettagliato. Con eccezioni molto rare, le modifiche di stato vengono coordinate in tutto l'intero grafo di filtro; tutti i filtri nel grafo cambiano stato all'unisono. Di conseguenza, l'intero grafo del filtro può essere detto in esecuzione, arrestato o sospeso.

I filtri possono essere raggruppati in diverse categorie generali:

  • Un filtro origine introduce i dati nel grafico. I dati possono provenire da un file, da una rete, da una fotocamera o da qualsiasi altra posizione. Ogni filtro di origine gestisce un tipo diverso di origine dati.
  • Una trasformazione filtro accetta un flusso di input, elabora i dati e crea un flusso di output. Codificatori e decodificatori sono esempi di filtri di trasformazione.
  • Renderer filtri si trovano alla fine della catena. Ricevono i dati e li presentano all'utente. Ad esempio, un renderer video disegna fotogrammi video sullo schermo; un renderer audio invia dati audio alla scheda audio; e un filtro del writer di file scrive i dati in un file.
  • Un filtro splitter suddivide un flusso di input in due o più output, in genere analizzando il flusso di input durante il processo. Ad esempio, AVI Splitter analizza un flusso di byte in flussi video e audio separati.
  • Un filtro mux accetta più input e li combina in un singolo flusso. Ad esempio, il Mux AVI esegue l'operazione inversa del splitter AVI. Accetta flussi audio e video e produce un flusso di byte in formato AVI.

Le distinzioni tra queste categorie non sono assolute. Ad esempio, il filtro lettore ASF funge sia da filtro di origine che da filtro di divisione.

Tutti i filtri DirectShow espongono l'interfacciaIBaseFiltere tutti i pin espongono l'interfacciaIPin. DirectShow definisce anche molte altre interfacce che supportano funzionalità più specifiche.

Informazioni sull' di Filter Graph Manager

Flusso di Dati nel Filter Graph

Filtri DirectShow