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

Obtient un type de média disponible pour un flux d’entrée sur cette transformation Media Foundation (MFT).

Syntaxe

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

Paramètres

[in] dwInputStreamID

Identificateur de flux d’entrée. Pour obtenir la liste des identificateurs de flux, appelez IMFTransform ::GetStreamIDs.

[in] dwTypeIndex

Index du type de média à récupérer. Les types de médias sont indexés à partir de zéro et retournés dans l’ordre de préférence approximatif.

[out] ppType

Reçoit un pointeur vers l’interface IMFMediaType .

Valeur retournée

Cette méthode retourne un code HRESULT. Les valeurs possibles sont notamment celles figurant dans le tableau suivant.

Code de retour Description
S_OK
S_OK
E_NOTIMPL
Le MFT n’a pas de liste de types d’entrée disponibles.
MF_E_INVALIDSTREAMNUMBER
Identificateur de flux non valide.
MF_E_NO_MORE_TYPES
Le paramètre dwTypeIndex est hors plage.
MF_E_TRANSFORM_TYPE_NOT_SET
Vous devez définir les types de sortie avant de définir les types d’entrée.

Remarques

Le MFT définit une liste des types de médias disponibles pour chaque flux d’entrée et les trie par préférence. Cette méthode énumère les types de médias disponibles pour un flux d’entrée. Pour énumérer les types disponibles, incrémentez dwTypeIndex jusqu’à ce que la méthode retourne MF_E_NO_MORE_TYPES.

La définition du type de média sur un flux peut modifier les types disponibles pour un autre flux ou modifier l’ordre de préférence. Toutefois, une MFT n’est pas nécessaire pour mettre à jour dynamiquement la liste des types disponibles. La seule façon garantie de tester si vous pouvez définir un type d’entrée particulier consiste à appeler IMFTransform ::SetInputType.

Dans certains cas, un MFT ne peut pas retourner une liste de types d’entrée tant qu’un ou plusieurs types de sortie n’ont pas été définis. Si c’est le cas, la méthode retourne MF_E_TRANSFORM_TYPE_NOT_SET.

Une MFT n’est pas nécessaire pour implémenter cette méthode. Toutefois, la plupart des MFT doivent implémenter cette méthode, sauf si les types pris en charge sont simples et peuvent être découverts via la fonction MFTGetInfo .

Si MFT_UNIQUE_METHOD_NAMES est défini avant d’inclure mftransform.h, cette méthode est renommée MFTGetInputAvailableType. Consultez Création d’objets DMO/MFT hybrides.

Pour les encodeurs, une fois le type de sortie défini, GetInputAvailableType doit retourner une liste de types d’entrée compatibles avec le type de sortie actuel. Cela signifie que tous les types retournés par GetInputAvailableType une fois que le type de sortie est défini doivent être des types valides pour SetInputType.

Les encodeurs doivent rejeter les types d’entrée si les attributs du type de média d’entrée et du type de média de sortie ne correspondent pas, tels que le paramètre de résolution avec MF_MT_FRAME_SIZE, le paramètre de plage nominale avec MF_MT_VIDEO_NOMINAL_RANGE ou le paramètre de fréquence d’images avec MF_MT_FRAME_SIZE

Notes d’implémentation

Si le MFT stocke un type de média en interne, le MFT doit retourner un clone du type de média, et non un pointeur vers le type d’origine. Sinon, l’appelant peut modifier le type et modifier l’état interne du MFT.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête mftransform.h
Bibliothèque Mfuuid.lib

Voir aussi

IMFTransform

Transformations de Media Foundation