Fournisseurs de métadonnées personnalisés pour les fichiers multimédias

Cette rubrique explique comment écrire un gestionnaire de propriétés de shell personnalisé pour une source de média Microsoft Media Foundation.

Notes

Pour obtenir des informations générales sur les fournisseurs de métadonnées dans Media Foundation, consultez Metadata Media. Cette rubrique décrit les gestionnaires de propriétés de Shell. elle ne décrit pas l’interface de métadonnées de la version 1, IMFMetadata.

Les métadonnées sont étroitement liées au format du fichier. Dans Media Foundation, les formats de fichier sont représentés par des sources multimédias. Si vous souhaitez prendre en charge les métadonnées pour un format qui n’est pas pris en charge en mode natif dans Media Foundation, vous devez implémenter une source de média personnalisée avec un gestionnaire de propriétés. Le gestionnaire de propriétés permet au système de propriétés de Shell de lire et d’écrire des métadonnées efficacement.

Un gestionnaire de propriétés est un objet COM qui implémente les interfaces suivantes :

Le cas échéant, elle peut également exposer l’interface suivante :

Si le système de propriétés de l’interpréteur de commandes doit obtenir les métadonnées d’un fichier, il appelle CoCreateInstance pour créer le gestionnaire de propriétés, puis appelle les méthodes de lecture et d’écriture appropriées sur l’interface IPropertyStore .

Le pipeline Media Foundation utilise un mécanisme légèrement différent, car le pipeline obtient le gestionnaire de propriétés directement à partir de la source du média. Au lieu d’appeler CoCreateInstance pour créer le gestionnaire de propriétés, le pipeline appelle IMFGetService :: GetService sur la source du média, comme décrit dans la rubrique fournisseurs de métadonnées de l’interpréteurde commandes.

Pour créer un gestionnaire de propriétés personnalisées, procédez comme suit :

Astuces d’implémentation

Pour obtenir la liste des clés de propriété de métadonnées, consultez Propriétés de métadonnées pour les fichiers multimédias.

Les gestionnaires de propriétés doivent être rapides ; ils doivent fournir un accès efficace en lecture et en écriture aux métadonnées. (Considérez que l’interpréteur de commandes peut récupérer des métadonnées de centaines de fichiers.) Par conséquent, n’appelez pas MFStartup à partir de votre gestionnaire de propriétés. La fonction MFStartup introduit la latence de démarrage, car elle crée plusieurs threads de file d’attente de travail et alloue de la mémoire globale.

Dans une implémentation classique, le gestionnaire de propriétés et la source du média partagent une partie du même code d’analyse. Toutefois, une source de média utilise des appels IMFByteStream asynchrones pour les e/s, tandis que le gestionnaire de propriétés utilise l’interface IStream . Media Foundation fournit un objet d’assistance qui encapsule un flux basé sur IStream et l’expose en tant que flux IMFByteStream . Pour créer le wrapper, appelez MFCreateMFByteStreamOnStream.

Lors de la mise à jour des métadonnées, il est recommandé d’écrire les données directement dans le flux d’origine. Cette recommandation diffère du comportement de copie sur écriture de la plupart des gestionnaires de propriétés, dans lesquels une copie des données est modifiée. Les fichiers multimédias peuvent être très volumineux. par conséquent, la copie sur écriture est généralement trop lente pour une implémentation efficace. Pour désactiver la copie en écriture, définissez le paramètre de Registre ManualSafeSave , comme décrit dans la rubrique inscription et distribution de gestionnaires de propriétés.

Métadonnées de média

Sources multimédias

Écriture d’une source de média personnalisée