Implémentation d’une table MFT de codec
Cette rubrique fournit des instructions pour l’implémentation d’un décodeur ou d’un encodeur en tant que transformation de Media Foundation (MFT).
Encodeurs
Négociation du format d’encodeur
La procédure suivante est utilisée pour initialiser un encodeur :
- Interrogez la MFT pour l’interface ICodecAPI .
- Appelez ICodecAPI :: SetValue pour définir les propriétés d’encodage.
- Appelez IMFTransform :: SetOutputType pour définir le format d’encodage.
- Appelez IMFTransform :: GetInputAvailableType pour obtenir la liste des types d’entrée compatibles. (Cette étape peut être ignorée.)
- Appelez IMFTransform :: SetInputType pour définir le format d’entrée non compressé.
Une fois que le type de sortie est défini à l’étape 3, la méthode GetInputAvailableType doit retourner une liste de types d’entrée compatibles avec le type de sortie actuel. En d’autres termes, tous les types retournés par GetInputAvailableType à ce stade doivent être valides pour SetInputType.
Pour les décodeurs, l’ordre dans lequel les types sont définis est inversé : le type d’entrée est défini en premier, suivi du type de sortie. Une fois le type d’entrée défini, la méthode IMFTransform :: GetOutputAvailableType doit retourner une liste de types qui peuvent être passés à la méthode IMFTransform :: SetOutputType .
Les encodeurs et les décodeurs doivent prendre en charge NV12 comme format non compressé courant. Cela permet de s’assurer que les composants de pipeline peuvent interagir avec des conversions colorspace minimales. Bien entendu, d’autres formats peuvent également être pris en charge.
Décodeurs
Décodeurs Transcode-Only
Certains décodeurs sont optimisés pour le transcodage (décodage et recodage d’un flux) et ne peuvent pas être utilisés pendant la lecture.
Si une table MFT du décodeur est destinée uniquement au transcodage, définissez l’indicateur de l' _ indicateur d’énumération MFT _ _ _ uniquement lorsque vous inscrivez la table MFT. (Voir MFTRegister.)
Par défaut, les décodeurs de transcodage ne sont pas retournés par la fonction MFTEnumEx . Pour énumérer les décodeurs de transcodage, appelez MFTEnumEx et définissez l’indicateur MFT _ enum enum _ _ _ only dans le paramètre Flags . Lorsqu’il est utilisé dans la fonction MFTEnumEx , cet indicateur énumère à la fois les décodeurs de transcodage et les autres décodeurs.
| Indicateur d' _ énumération MFT MFTRegister _ _ _ uniquement | Indicateur d' _ énumération MFT MFTEnumEx _ _ _ uniquement | La table MFT est-elle énumérée ? |
|---|---|---|
| 1 | 1 | Oui |
| 1 | 0 | Non |
| 0 | 1 | Oui |
| 0 | 0 | Oui |
Attributs Telecine
La source du média peut attacher les attributs de télécinéma suivants aux exemples de supports qu’elle remet.
| Attribut | Description |
|---|---|
| MFSampleExtension _ RepeatFirstField | Équivaut à l’indicateur « REPEAT First Field » (RFF). |
| MFSampleExtension _ BottomFieldFirst | Inverse de l’indicateur « Top Field First » (TFF). |
Ces indicateurs fournissent un indicateur au convertisseur vidéo amélioré (EVR) lorsqu’il effectue une désentrelacement. Un décodeur doit propager ces indicateurs en aval en les copiant dans les exemples de sortie, afin qu’ils atteignent le EVR.