Classe CTransformFilter
[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.
La CTransformFilter
classe è una classe base per l'implementazione dei filtri di trasformazione. Questa classe è progettata per implementare un filtro di trasformazione con un pin di input e un pin di output. Usa allocatori separati per il pin di input e il pin di output. Per creare un filtro che elabora i dati sul posto, usare la classe CTransInPlaceFilter .
Questo filtro usa la classe CTransformInputPin per il pin di input e la classe CTransformOutputPin per il pin di output. In genere, non è necessario eseguire l'override di queste classi di pin. La maggior parte dei metodi pin chiama i metodi corrispondenti nella CTransformFilter
classe , quindi è possibile eseguire l'override dei metodi di filtro, se necessario. Il filtro crea entrambi i pin nel metodo CTransformFilter::GetPin . Se si esegue l'override delle classi pin, è necessario eseguire l'override di GetPin per creare i pin personalizzati.
Per usare questa classe, derivare una nuova classe da CTransformFilter
e implementare i metodi seguenti:
- CTransformFilter::CheckInputType
- CTransformFilter::CheckTransform
- CTransformFilter::D ecideBufferSize
- CTransformFilter::GetMediaType
- CTransformFilter::Transform
Potrebbe essere necessario eseguire l'override anche di altri metodi, a seconda dei requisiti del filtro.
Tipi di supporti
Il pin di input di questo filtro non propone alcun tipo di supporto; si basa sul filtro upstream per proporre i tipi di supporti per la connessione. Il motivo di questa progettazione è che nella maggior parte dei casi, il filtro upstream può fornire altre informazioni sul formato. Ad esempio, con i formati video, il filtro upstream conosce le dimensioni del video e la frequenza dei fotogrammi, mentre il filtro di trasformazione non è in grado di determinare queste informazioni. Per modificare questo comportamento, eseguire l'override del metodo GetMediaType del pin di input. Quando il filtro upstream propone un tipo di supporto, il pin di input chiama il metodo CheckInputType del filtro (virtuale puro).
Finché il pin di input non è connesso, il pin di output rifiuta tutte le connessioni e non restituisce alcun tipo di supporto preferito. Dopo la connessione del pin di input, il pin di output restituisce un elenco di tipi preferiti chiamando il metodo GetMediaType del filtro. Controlla i tipi di output per la connessione tramite il metodo CheckTransform del filtro. Entrambi i metodi sono puramente virtuali. In genere, il tipo di input determinerà in parte i tipi di output accettabili.
A seconda del filtro, è possibile registrare alcuni tipi di supporti supportati del filtro, in modo che l'oggetto Filter Mapper possa individuare il filtro. Per altre informazioni, vedere Come registrare i filtri DirectShow.
Streaming
Questa classe non accoda i dati di output. Ogni esempio di output viene recapitato all'interno del metodo IMemInputPin::Receive . Il metodo Receive chiama il metodo Transform del filtro (anche virtuale puro) per elaborare i dati.
Per altre informazioni sull'uso di questa classe, vedere Scrittura di filtri di trasformazione.
Variabili membro protette | Descrizione |
---|---|
m_bEOSDelivered | Flag che indica se il filtro ha inviato una notifica end-of-stream. |
m_bSampleSkipped | Flag che indica se l'esempio più recente è stato eliminato. |
m_bQualityChanged | Flag che indica se la qualità è cambiata. |
m_csFilter | Sezione critica che protegge lo stato del filtro. |
m_csReceive | Sezione critica che protegge lo stato di streaming. |
m_pInput | Puntatore al pin di input. |
m_pOutput | Puntatore al pin di output. |
Metodi pubblici | Descrizione |
CTransformFilter | Metodo del costruttore. |
~ CTransformFilter | Metodo distruttore. |
GetPinCount | Recupera il numero di pin nel filtro. Virtuale. |
GetPin | Recupera un pin. Virtuale. |
Transform | Trasforma un esempio di input per produrre un esempio di output. Virtuale. |
StartStreaming | Chiamato quando il filtro passa allo stato sospeso. Virtuale. |
StopStreaming | Chiamato quando il filtro passa allo stato arrestato. Virtuale. |
AlterQuality | Notifica al filtro che viene richiesta una modifica della qualità. Virtuale. |
SetMediaType | Chiamato quando il tipo di supporto è impostato su uno dei pin del filtro. Virtuale. |
CheckConnect | Determina se una connessione pin è adatta. Virtuale. |
BreakConnect | Rilascia un pin da una connessione. Virtuale. |
CompleteConnect | Completa una connessione pin. Virtuale. |
Ricevere | Riceve un esempio di supporto, lo elabora e distribuisce un esempio di output al filtro downstream. Virtuale. |
InitializeOutputSample | Recupera un nuovo esempio di output e lo inizializza. |
EndOfStream | Notifica al filtro che non sono previsti dati aggiuntivi dal pin di input. Virtuale. |
BeginFlush | Avvia un'operazione di scaricamento. Virtuale. |
EndFlush | Termina un'operazione di scaricamento. Virtuale. |
NewSegment | Notifica al filtro ricevuto esempi multimediali dopo che questa chiamata viene raggruppata come segmento. Virtuale. |
Metodi virtuali pure | Descrizione |
CheckInputType | Verifica se un tipo di supporto specificato è accettabile per l'input. |
CheckTransform | Verifica se un tipo di supporto di input è compatibile con un tipo di supporto di output. |
DecideBufferSize | Imposta i requisiti del buffer del pin di output. |
GetMediaType | Recupera un tipo di supporto preferito per il pin di output. |
Metodi IMediaFilter | Descrizione |
Stop | Arresta il filtro. |
Sospendi | Sospende il filtro. |
Metodi IBaseFilter | Descrizione |
FindPin | Recupera il pin con l'identificatore specificato. |
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|