Encodeur vidéo H. 265/HEVC
L’encodeur vidéo Media Foundation H. 265 est une transformation Media Foundation qui prend en charge l’encodage de contenu au format H. 265/HEVC. L’encodeur prend en charge les profils suivants :
- Profil Main
L’encodeur vidéo H. 265 expose les interfaces suivantes :
Types d’entrée
Le type de média d’entrée doit avoir l’un des sous-types suivants :
- MFVideoFormat _ IYUV
- MFVideoFormat _ NV12
- MFVideoFormat _ YUY2
- MFVideoFormat _ YV12
Pour plus d’informations sur ces sous-types, consultez GUID sous-type de vidéo.
Le type de sortie doit être défini avant le type d’entrée. Tant que le type de sortie n’est pas défini, la méthode IMFTransform :: SetInputType de l’encodeur retourne le type de _ transformation MF E _ _ _ non _ défini.
Types de sortie
L’encodeur prend en charge un seul sous-type de sortie :
- MFVideoFormat _ H265
Définissez les attributs suivants sur le type de média de sortie.
| Attribut | Description |
|---|---|
| MF_MT_MAJOR_TYPE | Type principal. Doit être MFMediaType_Video. |
| MF_MT_SUBTYPE | Sous-type de vidéo. Doit être MFVideoFormat_HEVC. |
| MF_MT_AVG_BITRATE | Vitesse moyenne des bits encodés, en bits par seconde. Doit être supérieur à zéro. |
| MF_MT_FRAME_RATE | Fréquence d’images. |
| MF_MT_FRAME_SIZE | Taille du frame. |
| MF_MT_INTERLACE_MODE | Mode entrelacé. |
| MF_MT_VIDEO_PROFILE | Profil d’encodage H. 265. Les valeurs prises en charge sont les suivantes :
|
| MF_MT_MPEG2_LEVEL | Spécifie le niveau de la vidéo codée. Pour plus d’informations sur les contraintes de profil et de niveau, reportez-vous à l’annexe A de l’ITU-T H. 265. |
| MF_MT_PIXEL_ASPECT_RATIO | facultatif. Spécifie les proportions en pixels. La valeur par défaut est 1:1. |
Une fois le type de sortie défini, l’encodeur vidéo met à jour le type en ajoutant l’attribut d' _ _ _ _ en-tête de séquence MPEG MF MT . Cet attribut contient l’en-tête de séquence.
Méthodes IMFTransform prises en charge
Les méthodes suivantes de l’interface IMFTransform sont prises en charge pour l’encodeur H. 265/HEVC :
- GetAttributes,
- GetInputAvailableType
- GetInputCurrentType
- GetInputStatus
- GetInputStreamInfo
- GetOutputAvailableType
- GetOutputCurrentType
- GetOutputStatus
- GetOutputStreamInfo
- GetStreamCount
- GetStreamLimits
- ProcessEvent
- ProcessMessage
- ProcessInput
- ProcessOutput
- SetInputType
- SetOutputType
- SetOutputBounds
Toutes les autres méthodes IMFTransform retournent l’erreur E _ NOTIMPL.
Méthodes ICodecAPI prises en charge
Les méthodes suivantes de l’interface ICodecAPI sont prises en charge pour l’encodeur H. 265/HEVC :
Toutes les autres méthodes ICodecAPI retournent l’erreur E _ NOTIMPL.
Propriétés du codec
L’encodeur H. 265 implémente l’interface ICodecAPI pour définir les paramètres d’encodage. Il prend en charge les propriétés suivantes.
Pour connaître la configuration requise du codec pour la certification de l’encodeur TPM, consultez la section ci-dessous.
| Propriété | Description |
|---|---|
| CODECAPI_AVEncCommonRateControlMode | Définit le mode de contrôle de la fréquence. Les modes pris en charge sont les suivants :
Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncCommonMeanBitRate | Définit la vitesse de transmission moyenne pour le flux binaire encodé, en bits par seconde. La plage valide est [1... 2 ³ ² – 1]. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncCommonBufferSize | Définit la taille de la mémoire tampon, en octets, pour l’encodage à débit binaire constant (CBR). La plage valide est [1... 2 ³ ² – 1]. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncCommonMaxBitRate | Définit le débit maximal pour les modes de contrôle de débit qui autorisent une vitesse de transmission maximale. La plage valide est [1... 2 ³ ² – 1]. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncMPVGOPSize | Définit le nombre d’images d’un en-tête GOP sur le suivant, y compris l’ancrage de début, mais pas le suivant. La plage valide est [0... 2 ³ ² – 1]. Si la valeur est zéro, l’encodeur sélectionne la taille de groupe d’images. La valeur par défaut est zéro. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVLowLatencyMode | Active ou désactive le mode faible latence. Il s’agit d’une valeur VT_BOOL. |
| CODECAPI_AVEncCommonQualityVsSpeed | Définit le compromis de qualité/vitesse. Cette valeur affecte la façon dont l’encodeur effectue différentes opérations d’encodage, telles que la compensation de mouvement. À des niveaux de complexité plus élevés, l’encodeur s’exécute plus lentement, mais produit une meilleure qualité à la même vitesse de transmission. La plage valide est comprise entre 0 et 100. En interne, cette valeur est mappée à un plus petit ensemble de niveaux de qualité/vitesse pris en charge par l’encodeur. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncVideoForceKeyFrame | Force l’encodeur à coder le frame suivant comme une image clé. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncVideoEncodeQP | Lorsque cette propriété est définie, l’encodeur utilise le QP spécifié pour encoder le frame suivant et tous les frames suivants jusqu’à ce qu’un nouveau QP soit spécifié. Plage valide : comprise entre 0 et 51 |
| CODECAPI_AVEncVideoMinQP | Cette propriété définit une limite au minimum de QP que l’encodeur peut utiliser pendant le RateControl CBR. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncVideoMaxQP | Cette propriété définit une limite au maximum de QP que l’encodeur peut utiliser pendant le RateControl CBR. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_VideoEncoderDisplayContentType | Définit si le contenu est une vidéo en plein écran, par opposition au contenu d’écran qui peut avoir une fenêtre de vidéo plus petite ou n’avoir aucune vidéo du tout. Il s’agit d’une valeur VT_UI4. |
| CODECAPI_AVEncNumWorkerThreads | Définit le nombre de threads utilisés pour effectuer l’opération de compression. L’encodeur divise le frame en mosaïques, de sorte que le nombre de threads est égal au nombre de vignettes.
|
Encodeur matériel certifié
Si un encodeur matériel certifié est présent, il est généralement utilisé à la place de l’encodeur système de la boîte de réception pour Media Foundation scénarios associés. Des encodeurs certifiés sont requis pour prendre en charge un certain ensemble de propriétés ICodecAPI et peuvent éventuellement prendre en charge un autre ensemble de propriétés. Le processus de certification doit garantir que les propriétés requises sont correctement prises en charge et, si une propriété facultative est prise en charge, qu’elle est également prise en charge correctement.
Voici l’ensemble des propriétés ICodecAPI obligatoires et facultatives pour que les encodeurs passent la certification de l’encodeur TPM.
- CODECAPI _ AVEncCommonRateControlMode
- CODECAPI _ AVEncCommonQuality
- CODECAPI _ AVEncCommonMeanBitRate
- CODECAPI _ AVEncCommonBufferSize
- CODECAPI _ AVEncMPVGOPSize
- CODECAPI _ AVEncVideoEncodeQP
- CODECAPI _ AVEncVideoForceKeyFrame
Spécifications
| Condition requise | Valeur |
|---|---|
| Client minimal pris en charge |
Windows 10 [ applications de bureau uniquement] |
| Serveur minimal pris en charge |
Aucun pris en charge |
| DLL |
|