Partager via


Exemples de types d’extension

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par le lecteur source et l’enregistreurrécepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Les exemples d’extensions, également appelées extensions d’unité de données (DUE) ou propriétés de mémoire tampon, sont des éléments de données qui sont attachés aux exemples de média dans la section données du fichier ASF. Plusieurs types d’exemples d’extensions sont définis dans le Kit de développement logiciel (SDK) au format Windows Media. Vous pouvez également créer vos propres types d’extension.

Pour utiliser des exemples d’extensions, vous devez identifier le type d’extension dans les données de configuration de flux du profil. Appelez la méthode IWMStreamConfig2::AddDataUnitExtension pour configurer un flux afin d’accepter des exemples avec des données étendues.

Des exemples d’extensions individuels doivent être ajoutés aux exemples d’entrée en appelant la méthode INSSBuffer3::SetProperty . Lors de la lecture d’exemples, vous pouvez appeler la méthode INSSBuffer3::GetProperty pour récupérer les données d’extension. Vous pouvez également utiliser les méthodes de l’interface INSSBuffer4 pour énumérer les extensions d’unités de données attachées à un exemple.

Le tableau suivant répertorie les identificateurs d’extension d’unité de données prédéfinis et décrit les données attachées à des exemples pour chacun d’eux.

Exemple de GUID d’extension Description
WM_SampleExtensionGUID_OutputCleanPoint Les données indiquent si l’exemple est un point de nettoyage. La valeur zéro indique que l’exemple n’est pas un point de nettoyage. Une valeur autre que zéro indique qu’il s’agit d’un point de nettoyage. Cet exemple de type d’extension d’unité de données (DUE) est utilisé pour effectuer le suivi des points propres lors de l’écriture de flux multimédias prédé compressés qui ont été encodés avec des codecs tiers.
WM_SampleExtensionGUID_Timecode Les données sont une structure de WMT_TIMECODE_EXTENSION_DATA contenant des données de code de temps SMPTE associées à l’exemple. La taille de ce DUE est toujours WM_SampleExtension_Timecode_Size, soit 14 octets.
WM_SampleExtensionGUID_FileName Ce type d’exemple d’extension est utilisé pour les flux de fichiers. Les données d’un exemple de flux de fichiers sont un élément d’un fichier de données. Les données de l’exemple d’extension spécifient le nom du fichier à partir duquel le contenu de l’exemple a été extrait. Le nom de fichier est une chaîne à caractères larges contenant le nom de fichier au format name.extension sans aucune information de chemin d’accès.
WM_SampleExtensionGUID_ContentType Les données identifient le type de contenu que l’exemple contient. Ce type d’exemple d’extension est utilisé avec des flux vidéo entrelacés. Tout le contenu entrelacé utilise l’indicateur WM_CT_INTERLACED combiné par un or au niveau du bit avec WM_CT_BOTTOM_FIELD_FIRST, WM_CT_TOP_FIELD_FIRST ou WM_CT_REPEAT_FIRST_FIELD.
L’ordre de champ n’est pas utilisé dans le processus d’encodage, mais est conservé avec les exemples compressés afin qu’il puisse être transmis au matériel de rendu. La lecture de contenu entrelacé avec un ordre de champ incorrect introduit des artefacts tels que la gigue de mouvement dans la vidéo.
La taille de ce DUE est toujours WM_SampleExtension_ContentType_Size.
WM_SampleExtensionGUID_PixelAspectRatio Les données indiquent les proportions en pixels du contenu de l’exemple. Cela s’applique uniquement à la vidéo. Ce type d’extension est utilisé pour identifier les proportions des pixels non carrés. Pour plus d’informations, consultez Pour lire et écrire des flux vidéo avec des pixels non carrés.
Les valeurs de proportion sont stockées sous la forme d’un mot dont l’octet faible est l’aspect X et dont l’octet élevé est l’aspect Y. Par exemple, 16:9 est stocké en tant que 0x0910.
La taille de ce DUE est toujours WM_SampleExtension_PixelAspectRatio_Size, soit 2 octets.
WM_SampleExtensionGUID_SampleDuration Les données indiquent la durée, en millisecondes, de l’exemple contenu dans l’objet de mémoire tampon. Lors de la lecture, si cette valeur DUE est définie, l’objet lecteur l’utilisera pour remplacer la valeur de durée de l’exemple existante. Cette DUE est automatiquement définie par les composants d’exécution du SDK sur les flux vidéo avec des débits binaires de 100 kbits/s ou plus, où la surcharge des informations DUE n’est pas significative. Il n’est pas défini pour les flux dont les débits binaires sont inférieurs à 100 Kbits/s. Les applications ne doivent pas définir cette DUE manuellement, car l’enregistreur (sur les flux à débit élevé) remplacera la valeur par ses propres données.
La taille de ce DUE est toujours WM_SampleExtension_SampleDuration_Size, soit 2 octets.
WM_SampleExtensionGUID_ChromaLocation Les données indiquent le type de sous-échantillonnage chromatique utilisé dans le format vidéo I420. La valeur de cette extension est définie sur l’une des valeurs suivantes :
  • WM_CL_INTERLACED420
  • WM_CL_PROGRESSIVE420
Cette extension d’unité de données n’est pas configurée dans le profil. Il est inclus dans la sortie des exemples du décodeur.
La taille de ce DUE est toujours WM_SampleExtension_ChromaLocation_Size, soit 1 octet.
WM_SampleExtensionGUID_ColorSpaceInfo Les données fournissent des informations sur l’espace de couleurs utilisé pour l’image vidéo actuelle. La valeur de cette extension est une structure WMT_COLORSPACEINFO_EXTENSION_DATA .
Cette extension d’unité de données n’est pas configurée dans le profil. Il est inclus dans la sortie des exemples du décodeur.
La taille de ce DUE est toujours WM_SampleExtension_ColorSpaceInfo_Size, soit 3 octets.
WM_SampleExtensionGUID_UserDataInfo Les données sont des données utilisateur personnalisées. Les quatre premiers octets des données contiennent la taille des données personnalisées.
L’octet suivant contient le type de données utilisateur fourni dans l’exemple d’extension. Les types suivants sont pris en charge :
  • 0x1F - Données utilisateur au niveau de la séquence
  • 0x1E - Données utilisateur au niveau du point d’entrée
  • 0x1D - Données utilisateur au niveau de l’image
  • 0x1C : données utilisateur au niveau du champ
  • 0x1B - Trancher les données utilisateur de niveau
Le sixième octet et les octets suivants contiennent les données utilisateur. Il y a autant d’octets de données utilisateur que spécifié par le nombre dans les quatre premiers octets.
Cette extension d’unité de données n’est pas configurée dans le profil. Il est inclus dans les exemples qui sont générés par le décodeur.
WM_SampleExtensionGUID_SampleProtectionSalt Les données sont chiffrées par exemple. Cet exemple de type d’extension est utilisé pour le contenu importé à partir d’un format de fichier non ASF et d’un schéma de protection des droits autre que la gestion des droits numériques windows Media. Lors de l’importation de contenu protégé, chaque échantillon doit inclure un sel unique. En règle générale, cette valeur est un compteur qui augmente de façon monotone.

Guide de référence de programmation