Partager via


Configuration d’extensions d’unité de données

Les exemples écrits dans des fichiers ASF peuvent contenir des informations supplémentaires en dehors des exemples multimédias eux-mêmes. Ces informations sont incluses à l’aide d’extensions d’unité de données. Pour plus d’informations sur les extensions d’unités de données, consultez Extensions d’unité de données.

Pour utiliser des extensions d’unité de données, vous devez configurer le flux dans le profil pour les accepter. Pour configurer une extension d’unité de données pour un flux, effectuez les étapes suivantes.

  1. Obtenez un pointeur vers l’interface IWMStreamConfig2 en appelant la méthode QueryInterface de IWMStreamConfig.
  2. Appelez IWMStreamConfig2::AddDataUnitExtension pour inscrire un type d’extension d’unité de données pour le flux.

Vous pouvez examiner tous les types d’extension d’unité de données actuellement inscrits pour un flux en appelant IWMStreamConfig2::GetDataUnitExtensionCount pour récupérer le nombre de types d’extensions d’unités de données inscrits. Ensuite, vous pouvez parcourir tous les types à l’aide d’appels à IWMStreamConfig2::GetDataUnitExtension pour chacun d’eux .

Une taille est attribuée aux extensions d’unité de données lorsqu’elles sont configurées pour un flux. De nombreux systèmes d’extension d’unités de données utilisent des données de taille constante (généralement une structure). Toutefois, vous pouvez également configurer vos extensions d’unité de données pour qu’elles soient de taille variable en définissant la taille sur 0xFFFF. Chaque extension d’unité de données affectée au moment de l’encodage peut alors être de n’importe quelle taille comprise entre 1 octet et 65534 octets. Les extensions d’unité de données de taille variable sont également appelées extensions d’unités de données dynamiques.

L’avantage de l’utilisation d’extensions d’unité de données dynamiques est que vous pouvez attacher des données d’extension en fonction des besoins. Si vous définissez une extension d’unité de données avec une taille définie, chaque exemple du flux doit contenir des données d’extension de cette taille, même si vous n’avez aucune donnée pour certains exemples. Avec les extensions d’unités de données dynamiques, vous pouvez omettre les extensions d’unités de données de certains exemples, ce qui permet d’économiser de l’espace et de réduire les besoins en bande passante. Toutefois, si les extensions d’unité de données sont de taille variable, l’objet de lecture ne peut pas vérifier les données d’extension reçues par rapport à une taille statique. Vous devez vérifier que les données d’extension que vous recevez sont valides et non malveillantes du flux de bits.

Les extensions d’unité de données individuelles doivent être définies sur des exemples à l’aide de la méthode INSSBuffer3::SetProperty . Pour plus d’informations, consultez Définition d’extensions d’unité de données.

Configuration de flux