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

Obtiene un tipo de medio disponible para un flujo de entrada en esta transformación de Media Foundation (MFT).

Sintaxis

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

Parámetros

[in] dwInputStreamID

Identificador de flujo de entrada. Para obtener la lista de identificadores de flujo, llame a IMFTransform::GetStreamIDs.

[in] dwTypeIndex

Índice del tipo de medio que se va a recuperar. Los tipos de medios se indexan desde cero y se devuelven en orden aproximado de preferencia.

[out] ppType

Recibe un puntero a la interfaz IMFMediaType .

Valor devuelto

El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.

Código devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
E_NOTIMPL
MFT no tiene una lista de tipos de entrada disponibles.
MF_E_INVALIDSTREAMNUMBER
Identificador de flujo no válido.
MF_E_NO_MORE_TYPES
El parámetro dwTypeIndex está fuera del intervalo.
MF_E_TRANSFORM_TYPE_NOT_SET
Debe establecer los tipos de salida antes de establecer los tipos de entrada.

Comentarios

El MFT define una lista de tipos de medios disponibles para cada flujo de entrada y los ordena por preferencia. Este método enumera los tipos de medios disponibles para un flujo de entrada. Para enumerar los tipos disponibles, incremente dwTypeIndex hasta que el método devuelva MF_E_NO_MORE_TYPES.

Establecer el tipo de medio en una secuencia podría cambiar los tipos disponibles para otra secuencia o cambiar el orden de preferencia. Sin embargo, no es necesario un MFT para actualizar la lista de tipos disponibles dinámicamente. La única manera garantizada de probar si puede establecer un tipo de entrada determinado es llamar a IMFTransform::SetInputType.

En algunos casos, un MFT no puede devolver una lista de tipos de entrada hasta que se establezcan uno o varios tipos de salida. Si es así, el método devuelve MF_E_TRANSFORM_TYPE_NOT_SET.

No se requiere MFT para implementar este método. Sin embargo, la mayoría de las MFP deben implementar este método, a menos que los tipos admitidos sean simples y se puedan detectar a través de la función MFTGetInfo .

Si MFT_UNIQUE_METHOD_NAMES se define antes de incluir mftransform.h, se cambia el nombre de este método a MFTGetInputAvailableType. Consulte Creación de objetos DMO/MFT híbridos.

En el caso de los codificadores, una vez establecido el tipo de salida, GetInputAvailableType debe devolver una lista de tipos de entrada compatibles con el tipo de salida actual. Esto significa que todos los tipos devueltos por GetInputAvailableType después de establecer el tipo de salida deben ser tipos válidos para SetInputType.

Los codificadores deben rechazar los tipos de entrada si los atributos del tipo de medio de entrada y el tipo de medio de salida no coinciden, como la configuración de resolución con MF_MT_FRAME_SIZE, la configuración de intervalo nominal con MF_MT_VIDEO_NOMINAL_RANGE o la configuración de velocidad de fotogramas con MF_MT_FRAME_SIZE

Notas de implementación

Si el MFT almacena un tipo de medio internamente, MFT debe devolver un clon del tipo de medio, no un puntero al tipo original. De lo contrario, el autor de la llamada podría modificar el tipo y modificar el estado interno del MFT.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado mftransform.h
Library Mfuuid.lib

Consulte también

IMFTransform

Transformaciones de Media Foundation