Introduzione alle classi di base del filtro
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in 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.
Questo articolo descrive la libreria di classi di base Microsoft DirectShow. Questa libreria è destinata agli sviluppatori di filtri, ma gli autori di applicazioni potrebbero trovare alcune delle classi helper e le utilità di debug utili. La libreria di classi di base non è tuttavia necessaria per la programmazione DirectShow.
Le sezioni seguenti riepilogano le classi di base più importanti nella libreria.
classi di oggetti COM
Le classi seguenti supportano la creazione di oggetti COM:
Classe | Descrizione |
---|---|
CBaseObject | Classe oggetto di base. |
CUnknown | Implementa l'interfaccia IUnknown. |
La maggior parte delle classi DirectShow deriva da CBaseObject. Questa classe fornisce assistenza per il debug mantenendo un conteggio di tutti gli oggetti attivi nella DLL in fase di esecuzione. Nelle compilazioni di debug, la DLL asserisce se viene scaricata mentre il numero di oggetti è maggiore di zero. In questo modo è più semplice tenere traccia delle perdite causate da problemi di conteggio dei riferimenti.
Tutte le classi di base che supportano le interfacce COM derivano da CUnknown, che eredita CBaseObject. La classe CUnknown supporta il conteggio dei riferimenti, QueryInterfacee l'aggregazione. Per altre informazioni, vedere How to Implement IUnknown.
classi filtro e pin
Le classi seguenti supportano la creazione di oggetti di filtro e pin DirectShow:
Classe | Descrizione |
---|---|
CBaseFilter | Classe di base per i filtri. Implementa l'interfaccia IBaseFilter. |
CBasePin | Classe di base per i pin. Implementa le interfacce IPin e IQualityControl. |
CBaseInputPin | Classe di base per i pin di input che usano il trasporto di memoria locale. Implementa l'interfaccia IMemInputPin. Questa classe deriva da CBasePin. |
CBaseOutputPin | Classe di base per i pin di output che usano connessioni IMemInputPin. Questa classe deriva da CBasePin. |
Le classi seguenti sono utili per la creazione di tipi di filtri più specializzati:
Classe | Descrizione |
---|---|
CSource | Classe di base per i filtri di origine. Questa classe è progettata per la creazione di origini push. Non è adatto per i sistemi pull, ad esempio i lettori di file. Per creare pin di output per questa classe, usare la classeCSourceStream. |
CTransformFilter | Classe di base per i filtri di trasformazione. Questa classe copia i dati. I pin per questa classe sono CTransformInputPin e CTransformOutputPin. |
CTransInPlaceFilter | Classe di base per i filtri di trasformazione che non copiano i dati. Questa classe esegue l'elaborazione dei dati direttamente sui dati di input prima di passarla a valle. I pin per questa classe sono CTransInPlaceInputPin e CTransInPlaceOutputPin. |
CVideoTransformFilter | Classe di base per i filtri di trasformazione video. Questa classe deriva da CTransformFilter e aggiunge il supporto per il controllo qualità. |
CBaseRenderer | Classe di base per i filtri del renderer. Il pin di input per questa classe è CRendererInputPin. |
CBaseVideoRenderer | Classe di base per i renderer video. Questa classe deriva da CBaseRenderer. |
Per usare queste classi, è necessario derivare la propria classe e scrivere codice per supportare le funzionalità specifiche del filtro. Più specializzata è la classe di base, minore sarà il codice che sarà necessario scrivere nella classe derivata.
oggetti di supporto
Le classi seguenti implementano oggetti helper usati da filtri e pin. La maggior parte di queste classi può essere usata senza derivare nuove classi da esse:
Classe | Descrizione |
---|---|
CPullPin | Oggetto di supporto per i pin di input nei filtri del parser. Supporta connessioni IAsyncReader con origini pull . |
COutputQueue | Oggetto di supporto per i pin di output che accodano i campioni per il recapito in un thread di lavoro. |
CSourceSeeking | Oggetto Guida per l'implementazione della ricerca di un filtro sorgente con un solo pin di uscita. Questa classe non è progettata per i filtri con più pin, ad esempio parser. |
CEnumPins | Oggetto enumeratore per enumerare i pin in un filtro. Implementa l'interfaccia IEnumPins. |
CEnumMediaTypes | Oggetto enumeratore per l'enumerazione dei tipi di supporti preferiti su un pin. Implementa l'interfaccia IEnumMediaTypes. |
CMemAllocator | Oggetto allocatore di memoria. Implementa l'interfaccia IMemAllocator. |
CMediaSample | Oggetto di esempio multimediale. Implementa l'interfacciaIMediaSample2. |
CBaseReferenceClock | Classe di base per gli orologi di riferimento. Implementa l'interfaccia IReferenceClock. |
CMediaType | Oggetto di supporto per la manipolazione delle strutture AM_MEDIA_TYPE. |