Champ de restrictions d’utilisation

Notes

Cette rubrique s’applique à Windows 7 ou version ultérieure.

 

Une restriction de champ d’utilisation est une disposition qui limite l’utilisation d’une licence pour une technologie particulière.

Media Foundation fournit un mécanisme permettant d’appliquer des restrictions de champ d’utilisation sur les transformations Media Foundation (MFT), en particulier les codecs. Ce mécanisme nécessite que le MFT bloque son propre utilisation par les applications jusqu’à ce que l’application ait effectué une négociation avec le MFT. Media Foundation ne définit pas l’établissement d’une négociation. En règle générale, il s’agit d’une sorte d’échange de chiffrement.

Inscription et énumération

Si un MFT a des restrictions de champ d’utilisation, définissez l’indicateur MFT_ENUM_FLAG_FIELDOFUSE lorsque vous inscrivez le MFT. Cet indicateur s’applique aux API d’inscription MFT suivantes :

Par défaut, les MFT inscrits avec cet indicateur sont exclus des résultats d’énumération. Pour énumérer les MFT avec des restrictions de champ d’utilisation, appelez MFTEnumEx et spécifiez l’indicateur MFT_ENUM_FLAG_FIELDOFUSE dans le paramètre Flags . Le diagramme suivant illustre ce processus.

diagramme montrant mft et une application qui envoie des données au Registre

La fonction MFTEnum exclut toujours tous les MFT qui ont des restrictions de champ d’utilisation.

Déverrouillage du MFT

Pour utiliser un MFT avec des restrictions de champ d’utilisation, procédez comme suit :

  1. L’application implémente l’interface IMFFieldOfUseMFTUnlock .
  2. La méthode IMFFieldOfUseMFTUnlock::Unlock prend un pointeur vers l’interface IUnknown du MFT.
  3. Dans la méthode Unlock , l’application effectue la négociation requise, à l’aide du mécanisme défini par le MFT. Cette étape n’est pas définie par l’API Media Foundation.
  4. Si la méthode Unlock réussit, le MFT se déverrouille lui-même.

L’application spécifie le pointeur IMFFieldOfUseMFTUnlock en définissant l’attribut MFT_FIELDOFUSE_UNLOCK_Attribute . Il existe plusieurs façons de définir cet attribut, selon la façon dont votre application crée le décodeur ou le pipeline d’encodage :

API Comment déverrouiller un champ d’utilisation
Lecteur source Si votre application utilise le lecteur source pour décoder un fichier multimédia, définissez l’attribut MFT_FIELDOFUSE_UNLOCK_Attribute dans les paramètres de configuration. Consultez Attributs du lecteur source.
Enregistreur récepteur Si votre application utilise l’enregistreur récepteur pour encoder un fichier multimédia, définissez l’attribut MFT_FIELDOFUSE_UNLOCK_Attribute dans les paramètres de configuration. Consultez Attributs de l’enregistreur récepteur.
Transcode rapide Si votre application utilise la fonctionnalité Fast Transcode pour créer une topologie d’encodage, définissez la MFT_FIELDOFUSE_UNLOCK_Attribute lorsque vous appelez IMFTranscodeProfile::SetContainerAttributes. Pour plus d’informations sur la fonctionnalité De transcode rapide, consultez API Transcode.
Topologie Si vous créez une topologie directement, définissez le MFT_FIELDOFUSE_UNLOCK_Attribute en tant qu’attribut sur la topologie. Consultez Attributs de topologie.
Objet d’activation MFT Si votre application énumère directement les décodeurs ou encodeurs qu’elle utilisera, définissez les MFT_FIELDOFUSE_UNLOCK_Attribute sur les pointeurs IMFActivate retournés par la fonction MFTEnumEx .
Définissez l’attribut avant d’appeler IMFActivate::ActivateObject pour créer le MFT. L’objet d’activation appelle IMFFieldOfUseMFTUnlock::Unlock lorsqu’il crée le MFT.

 

Le diagramme suivant montre la relation entre les objets d’activation MFT et l’interface IMFFieldOfUseMFTUnlock .

diagramme montrant une application, un objet d’activation et mft avec des flèches vers un objet fou, qui a une flèche retour à mft

Transformations de Media Foundation