Compartilhar via


Método CDynamicOutputPin.ChangeMediaType

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O ChangeMediaType método altera dinamicamente o tipo de mídia para a conexão. A alteração pode ocorrer enquanto o grafo de filtro está em execução. Depois que esse método é chamado, exemplos com o tipo de mídia antigo não podem ser entregues. O chamador deve garantir que nenhuma amostra antiga esteja pendente.

Sintaxe

HRESULT ChangeMediaType(
   const CMediaType *pmt
);

Parâmetros

Pgto

Ponteiro para uma estrutura AM_MEDIA_TYPE que especifica o tipo de mídia.

Retornar valor

Retorna um valor HRESULT . Os valores possíveis incluem aqueles mostrados na tabela a seguir.

Código de retorno Descrição
S_OK
Êxito.
E_FAIL
Falha. Possivelmente, o filtro proprietário não chamou CDynamicOutputPin::SetConfigInfo.
VFW_E_NOT_CONNECTED
O pino não está conectado.

Comentários

Chame o método CDynamicOutputPin::StartUsingOutputPin antes de chamar esse método.

Esse método primeiro verifica se o pino de entrada downstream pode aceitar o novo formato sem reconectar. Ele consulta o pino de entrada para a interface IPinConnection . Se o pin de entrada der suporte a IPinConnection, o método chamará o método IPinConnection::D ynamicQueryAccept com o tipo de mídia proposto. Se o pin de entrada aceitar o novo tipo de mídia, o método chamará o método IPin::ReceiveConnection e renegociará os requisitos do alocador.

Por outro lado, se o pino downstream não der suporte a IPinConnection ou se ele rejeitar o novo tipo de mídia, o método chamará o método CDynamicOutputPin::D ynamicReconnect para executar uma reconexão dinâmica.

Requisitos

Requisito Valor
parâmetro
Amfilter.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Classe CDynamicOutputPin