Método IMFTransform::GetInputAvailableType (mftransform.h)

Obtém um tipo de mídia disponível para um fluxo de entrada nesta transformação do Media Foundation (MFT).

Sintaxe

HRESULT GetInputAvailableType(
  [in]  DWORD        dwInputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

Parâmetros

[in] dwInputStreamID

Identificador de fluxo de entrada. Para obter a lista de identificadores de fluxo, chame IMFTransform::GetStreamIDs.

[in] dwTypeIndex

Índice do tipo de mídia a ser recuperado. Os tipos de mídia são indexados de zero e retornados em ordem aproximada de preferência.

[out] ppType

Recebe um ponteiro para a interface IMFMediaType .

Retornar valor

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
E_NOTIMPL
O MFT não tem uma lista de tipos de entrada disponíveis.
MF_E_INVALIDSTREAMNUMBER
Identificador de fluxo inválido.
MF_E_NO_MORE_TYPES
O parâmetro dwTypeIndex está fora do intervalo.
MF_E_TRANSFORM_TYPE_NOT_SET
Você deve definir os tipos de saída antes de definir os tipos de entrada.

Comentários

O MFT define uma lista de tipos de mídia disponíveis para cada fluxo de entrada e os ordena por preferência. Esse método enumera os tipos de mídia disponíveis para um fluxo de entrada. Para enumerar os tipos disponíveis, incremente dwTypeIndex até que o método retorne MF_E_NO_MORE_TYPES.

Definir o tipo de mídia em um fluxo pode alterar os tipos disponíveis para outro fluxo ou alterar a ordem de preferência. No entanto, um MFT não é necessário para atualizar a lista de tipos disponíveis dinamicamente. A única maneira garantida de testar se você pode definir um tipo de entrada específico é chamar IMFTransform::SetInputType.

Em alguns casos, um MFT não pode retornar uma lista de tipos de entrada até que um ou mais tipos de saída sejam definidos. Nesse caso, o método retorna MF_E_TRANSFORM_TYPE_NOT_SET.

Um MFT não é necessário para implementar esse método. No entanto, a maioria dos MFTs deve implementar esse método, a menos que os tipos com suporte sejam simples e possam ser descobertos por meio da função MFTGetInfo .

Se MFT_UNIQUE_METHOD_NAMES for definido antes de incluir mftransform.h, esse método será renomeado MFTGetInputAvailableType. Consulte Criando objetos DMO/MFT híbridos.

Para codificadores, depois que o tipo de saída é definido, GetInputAvailableType deve retornar uma lista de tipos de entrada compatíveis com o tipo de saída atual. Isso significa que todos os tipos retornados por GetInputAvailableType após o tipo de saída ser definido devem ser tipos válidos para SetInputType.

Os codificadores devem rejeitar tipos de entrada se os atributos do tipo de mídia de entrada e do tipo de mídia de saída não corresponderem, como configuração de resolução com MF_MT_FRAME_SIZE, configuração de intervalo nominal com MF_MT_VIDEO_NOMINAL_RANGE ou configuração de taxa de quadros com MF_MT_FRAME_SIZE

Notas de implementação

Se o MFT armazenar um tipo de mídia internamente, o MFT deverá retornar um clone do tipo de mídia, não um ponteiro para o tipo original. Caso contrário, o chamador poderá modificar o tipo e alterar o estado interno do MFT.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho mftransform.h
Biblioteca Mfuuid.lib

Confira também

IMFTransform

Transformações do Media Foundation