Método IMFTransform::GetOutputAvailableType (mftransform.h)
Obtiene un tipo de medio disponible para un flujo de salida en esta transformación de Media Foundation (MFT).
Sintaxis
HRESULT GetOutputAvailableType(
[in] DWORD dwOutputStreamID,
[in] DWORD dwTypeIndex,
[out] IMFMediaType **ppType
);
Parámetros
[in] dwOutputStreamID
Identificador de flujo de salida. 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 . El autor de la llamada debe liberar la interfaz .
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 |
---|---|
|
El método se ha llevado a cabo de forma correcta. |
|
MFT no tiene una lista de tipos de salida disponibles. |
|
Identificador de flujo no válido. |
|
El parámetro dwTypeIndex está fuera del intervalo. |
|
Debe establecer los tipos de entrada antes de establecer los tipos de salida. |
Comentarios
MFT define una lista de tipos de medios disponibles para cada flujo de salida y los ordena por preferencia. Este método enumera los tipos de medios disponibles para un flujo de salida. 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 puede 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::SetOutputType.
En algunos casos, un MFT no puede devolver una lista de tipos de salida hasta que se establezcan uno o varios tipos de entrada. 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 .
Este método puede devolver un tipo de medio parcial . Un tipo de medio parcial contiene una descripción incompleta de un formato y se usa para proporcionar una sugerencia al autor de la llamada. Por ejemplo, un tipo parcial podría incluir solo los GUID de tipo principal y subtipo. Sin embargo, después de que el cliente establezca los tipos de entrada en MFT, el MFT generalmente debe devolver al menos un tipo de salida completo, que se puede usar sin realizar ninguna modificación adicional. Para obtener más información, vea Tipos de medios completos y parciales.
Algunas MFP no pueden proporcionar una lista precisa de los tipos de salida hasta que MFT reciba la primera muestra de entrada. Por ejemplo, el MFT podría necesitar leer el primer encabezado de paquete para deducir el formato. Un MFT debe controlar esta situación de la siguiente manera:
- Antes de que MFT reciba cualquier entrada, ofrece una lista de uno o varios tipos de salida que podría producir. Por ejemplo, un descodificador MPEG-2 podría devolver un tipo multimedia que describa el nivel de perfil principal/principal MPEG-2.
- El cliente selecciona uno de estos tipos (generalmente el primero) y lo establece en el flujo de salida.
- El cliente entrega la primera muestra de entrada llamando a IMFTransform::P rocessInput.
- Si el tipo de salida no se ajusta a los datos de entrada, la transformación indica un cambio de formato en el método ProcessOutput . Para obtener más información sobre los cambios de formato, vea IMFTransform::P rocessOutput.
- Llama a GetOutputAvailableType de nuevo. En este punto, el método debe devolver una lista actualizada de tipos que refleje los datos de entrada.
- El cliente selecciona un nuevo tipo de salida de esta lista y llama a SetOutputType.
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de