Método IMFTransform::GetOutputAvailableType (mftransform.h)
Obtém um tipo de mídia disponível para um fluxo de saída nesta MFT (transformação do Media Foundation).
Sintaxe
HRESULT GetOutputAvailableType(
[in] DWORD dwOutputStreamID,
[in] DWORD dwTypeIndex,
[out] IMFMediaType **ppType
);
Parâmetros
[in] dwOutputStreamID
Identificador de fluxo de saída. 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 . O chamador deve liberar a interface.
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 |
---|---|
|
O método foi bem-sucedido. |
|
O MFT não tem uma lista de tipos de saída disponíveis. |
|
Identificador de fluxo inválido. |
|
O parâmetro dwTypeIndex está fora do intervalo. |
|
Você deve definir os tipos de entrada antes de definir os tipos de saída. |
Comentários
O MFT define uma lista de tipos de mídia disponíveis para cada fluxo de saída e os ordena por preferência. Esse método enumera os tipos de mídia disponíveis para um fluxo de saída. 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::SetOutputType.
Em alguns casos, um MFT não pode retornar uma lista de tipos de saída até que um ou mais tipos de entrada 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 .
Esse método pode retornar um tipo de mídia parcial . Um tipo de mídia parcial contém uma descrição incompleta de um formato e é usado para fornecer uma dica ao chamador. Por exemplo, um tipo parcial pode incluir apenas o tipo principal e os GUIDs de subtipo. No entanto, depois que o cliente define os tipos de entrada no MFT, o MFT geralmente deve retornar pelo menos um tipo de saída completo, que pode ser usado sem modificação adicional. Para obter mais informações, consulte Tipos de mídia completos e parciais.
Alguns MFTs não podem fornecer uma lista precisa de tipos de saída até que o MFT receba o primeiro exemplo de entrada. Por exemplo, o MFT pode precisar ler o primeiro cabeçalho de pacote para deduzir o formato. Um MFT deve lidar com essa situação da seguinte maneira:
- Antes que o MFT receba qualquer entrada, ele oferece uma lista de um ou mais tipos de saída que ele poderia produzir. Por exemplo, um decodificador MPEG-2 pode retornar um tipo de mídia que descreve o nível de perfil/main de main MPEG-2.
- O cliente seleciona um desses tipos (geralmente o primeiro) e o define no fluxo de saída.
- O cliente fornece o primeiro exemplo de entrada chamando IMFTransform::P rocessInput.
- Se o tipo de saída não estiver em conformidade com os dados de entrada, a transformação sinalizará uma alteração de formato no método ProcessOutput . Para obter mais informações sobre alterações de formato, consulte IMFTransform::P rocessOutput.
- As chamadas GetOutputAvailableType novamente. Neste ponto, o método deve retornar uma lista atualizada de tipos que refletem os dados de entrada.
- O cliente seleciona um novo tipo de saída nessa lista e chama SetOutputType.
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de