Metodo CDynamicOutputPin.ChangeMediaType

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

Il ChangeMediaType metodo modifica dinamicamente il tipo di supporto per la connessione. La modifica può verificarsi durante l'esecuzione del grafico del filtro. Una volta chiamato questo metodo, non è possibile recapitare esempi con il tipo di supporto precedente. Il chiamante deve assicurarsi che nessun campione precedente sia in sospeso.

Sintassi

HRESULT ChangeMediaType(
   const CMediaType *pmt
);

Parametri

Pmt

Puntatore a una struttura AM_MEDIA_TYPE che specifica il tipo di supporto.

Valore restituito

Restituisce un valore HRESULT . I valori possibili includono quelli visualizzati nella tabella seguente.

Codice restituito Descrizione
S_OK
Operazione completata.
E_FAIL
Esito negativo. Probabilmente il filtro proprietario non ha chiamato CDynamicOutputPin::SetConfigInfo.
VFW_E_NOT_CONNECTED
Il pin non è connesso.

Commenti

Chiamare il metodo CDynamicOutputPin::StartUsingOutputPin prima di chiamare questo metodo.

Questo metodo controlla innanzitutto se il pin di input downstream può accettare il nuovo formato senza riconnettersi. Esegue una query sul pin di input per l'interfaccia IPinConnection . Se il pin di input supporta IPinConnection, il metodo chiama il metodo IPinConnection::D ynamicQueryAccept con il tipo di supporto proposto. Se il pin di input accetta il nuovo tipo di supporto, il metodo chiama il metodo IPin::ReceiveConnection e rinegozia i requisiti dell'allocatore.

Se il pin downstream non supporta IPinConnection o se rifiuta il nuovo tipo di supporto, il metodo chiama il metodo CDynamicOutputPin::D ynamicReconnect per eseguire una riconnessione dinamica.

Requisiti

Requisito Valore
Intestazione
Amfilter.h (include Streams.h)
Libreria
Strmbase.lib (build al dettaglio);
Strmbasd.lib (build di debug)

Vedi anche

Classe CDynamicOutputPin