Définition des propriétés dans l’objet ContentInfo

Lors de la création d’un fichier ASF, l’objet ContentInfo doit connaître les caractéristiques du contenu multimédia afin que les différents objets d’en-tête soient remplis avec les valeurs correctes.

Les paramètres de configuration de contenu sont des paramètres de flux, qui sont contenus dans le profil et spécifient l’identificateur de flux, le type de média et les paramètres de compartiment qui fuient pour le récepteur multimédia. Une fois le profil défini sur l’objet ContentInfo en appelant IMFASFContentInfo::SetProfile, ces valeurs sont répercutées dans l’objet d’en-tête ASF qui a été généré. Pour plus d’informations sur ces paramètres, consultez Création et configuration de flux ASF.

Configuration de l’objet ContentInfo avec les paramètres de l’encodeur

Les données audio ou vidéo multimédias numériques sont complexes et occupent de grandes quantités de mémoire. Dans la plupart des cas, l’audio et la vidéo sont compressés à l’aide d’encodeurs avant d’être ajoutés à un fichier ASF. Dans Media Foundation, les encodeurs sont implémentés en tant que transformations Media Foundation (MFT) avec une entrée et une sortie. Vous devez sélectionner le type de média de sortie en fonction du type de média du flux d’entrée et du type d’encodage que vous choisissez pour compresser le flux.

Avant la session d’encodage, l’encodeur doit être configuré en définissant les propriétés appropriées en fonction du type d’encodage.

Après avoir configuré l’encodeur, vous devez configurer l’objet ContentInfo avec les valeurs d’encodeur, car le multiplexeur ASF et le récepteur multimédia ASF, qui sont initialisés avec l’objet ContentInfo rempli, utilisent des paramètres tels que les valeurs de compartiment qui fuient, pour générer des paquets de données ASF. Les valeurs ne sont pas enregistrées dans l’objet d’en-tête ASF final. Les paramètres d’encodage sont exposés en tant que propriétés. Pour configurer l’objet ContentInfo avec les propriétés de l’encodeur, procédez comme suit :

  1. Obtenez un pointeur vers le magasin de propriétés de l’encodeur en interrogeant l’encodeur (interface IMFTransform ) directement pour l’interface IPropertyStore .
  2. Appelez IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Pour définir des propriétés spécifiques au flux, spécifiez l’identificateur de flux dans le paramètre wStreamNumber ; pour les propriétés au niveau du fichier, passez 0. Le paramètre ppIStore reçoit un pointeur vers l’interface IPropertyStore . Le magasin de propriétés reçues est vide.
  3. Appelez IPropertyStore::GetValue sur l’encodeur et obtenez la valeur de propriété en spécifiant les constantes de clé de propriété. Pour obtenir la liste complète des propriétés d’encodage, consultez la référence de programmation des codecs.
  4. Appelez IPropertyStore::SetValue sur l’objet ContentInfo pour définir la propriété requise dans le magasin de propriétés.
  5. Répétez les étapes 3 et 4 pour chaque propriété que vous souhaitez définir.

Le récepteur multimédia ASF peut être créé à l’aide d’un objet d’activation en appelant MFCreateASFMediaSinkActivate. Le nouvel objet récepteur multimédia est configuré en fonction des paramètres spécifiques au récepteur de média qui peuvent être définis dans le magasin de propriétés de l’objet ContentInfo. Le tableau suivant présente les constantes de propriété du récepteur de média ASF.

Propriété Description
MFPKEY_ASFMEDIASINK_BASE_SENDTIME L’heure d’envoi indique quand la charge utile à l’intérieur du compartiment qui fuit sera libérée. Cette valeur de propriété indique l’heure du premier envoi. Le multiplexeur utilise cette valeur pour calculer les temps d’envoi suivants pour les paquets générés et garantit que les données circulent régulièrement dans le compartiment qui fuit.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE Cette valeur BOOL indique si le multiplexeur doit ajuster automatiquement la vitesse de transmission pour s’assurer que les données ne débordent pas du compartiment qui fuit.
MFPKEY_ASFMEDIASINK_DRMACTION Cela indique l’action DRM du récepteur de média ASF pour la génération de fichiers. Dans cette version, seul le transcode DRM est pris en charge.
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET Cette propriété doit être définie lorsque l’encodeur décide de la fenêtre de mémoire tampon et du débit binaire à utiliser. Pour définir ces valeurs, utilisez l’interface IWMCodecLeakyBucket . Ce paramètre doit être défini pour chaque flux dans le fichier ASF.

 

Écriture d’un objet d’en-tête ASF pour un nouveau fichier