Partager via


Initialisation de l’objet ContentInfo d’un nouveau fichier ASF

Après avoir créé un objet ContentInfo vide en appelant la fonction MFCreateASFContentInfo , l’application doit appeler IMFASFContentInfo::SetProfile pour fournir le profil d’encodage. Pour plus d’informations sur la création d’un profil, consultez Création d’un profil ASF.

Avant que les informations puissent être lues à partir du profil, la méthode SetProfile doit valider l’objet de profil spécifié en vérifiant les identificateurs de flux ou les types multimédias. Si le profil passe la validation, différents objets d’en-tête sont générés, tels que l’objet Propriétés du fichier, l’objet Propriétés de débit de flux, l’objet Propriétés de flux et l’objet d’exclusion mutuelle.

SetProfile calcule et définit des valeurs recommandées pour certaines propriétés, telles que la valeur de préroll. Si ce n’est pas déjà défini, la valeur de préroll recommandée en millisecondes dépend de la fenêtre de mémoire tampon maximale du compartiment fuite spécifié pour les flux dans le profil. De même, les tailles minimales et maximales de paquets de données sont également définies. Les valeurs recommandées peuvent remplacer les tailles de paquets définies sur le profil par le biais d’attributs.

Étant donné que le fichier est en cours de création, le fichier est classé comme type de diffusion, qui est indiqué par le champ Indicateurs de l’objet Propriétés du fichier. Certaines valeurs inconnues telles que le nombre de paquets de données, la durée de lecture et la durée d’envoi sont définies sur zéro. Ces valeurs sont représentées par MF_PD_ASF_xxx attributs et doivent être mises à jour par l’application une fois la création de fichier terminée.

L’objet de profil spécifié remplace tout profil existant associé à l’objet ContentInfo, supprime les objets d’en-tête référencés et réinitialise les propriétés de fichier globales, telles que la prérolle et la taille des paquets de données.

La méthode SetProfile crée également l’objet de données qui représente l’objet de données ASF. Si vous réutilisez un objet ContentInfo qui inclut des informations sur les paquets de données, SetProfile échoue et retourne l’erreur MF_E_ALREADY_INITIALIZED indiquant qu’elle est déjà associée à un objet de données ASF existant. Par défaut, pour un nouvel objet ContentInfo, le nombre de paquets de données est défini sur zéro et la taille de l’objet de données est définie sur 50 octets. Si vous utilisez le multiplexeur pour générer des paquets de données, le multiplexeur met à jour l’objet ContentInfo pour refléter de nouvelles valeurs telles que le nombre de paquets de données. Pour plus d’informations sur la génération de paquets de données, consultez Génération de nouveaux paquets de données ASF.

Une fois tous les objets d’en-tête ajoutés à l’objet d’en-tête ASF final, la taille totale de l’en-tête peut être récupérée en appelant IMFASFContentInfo::GetHeaderSize. Cette taille inclut la taille initiale de l’objet de données.

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

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