Obtention d’informations à partir d’objets d’en-tête ASF

Les informations d’en-tête ASF sont stockées dans les objets d’en-tête ASF d’un fichier multimédia. Media Foundation fournit l’objet ContentInfo ASF pour fonctionner avec l’objet Header. Un objet ContentInfo rempli est requis pour permettre à l’application de lire les informations d’en-tête d’un fichier existant. Pour ce faire, appelez IMFASFContentInfo::P arseHeader. Si l’analyse se termine correctement, la bibliothèque ASF du fichier, qui est gérée en interne par Media Foundation, est remplie avec des informations d’en-tête provenant de différents objets d’en-tête. Certaines de ces propriétés sont exposées à l’application, qu’elle peut récupérer via des attributs sur le descripteur de présentation, le descripteur de flux, le profil et les propriétés de métadonnées.

Pour obtenir la liste complète des attributs, consultez Attributs Media Foundation pour les objets d’en-tête ASF.

Récupération d’informations d’en-tête à partir d’un descripteur de présentation

Un objet de descripteur de présentation contient la description d’une source multimédia particulière, dans ce cas la source de média ASF. Si l’appel ParseHeader se termine correctement, les informations au niveau du fichier de l’objet Header sont stockées en tant qu’attributs sur le descripteur de présentation. Pour créer le descripteur de présentation, appelez IMFASFContentInfo::GeneratePresentationDescriptor. Cette méthode retourne un pointeur vers un objet de descripteur de présentation rempli qui contient ces attributs pour le fichier ASF associé à l’objet ContentInfo. Pour obtenir des valeurs pour des attributs spécifiques, appelez les méthodes IMFAttributes::Getxxx sur le descripteur de présentation et spécifiez l’attribut MF_PD_ASF_xxx .

L’exemple de code suivant récupère la durée de lecture d’un fichier ASF, spécifié par un objet ContentInfo.

HRESULT GetPlayDuration(
    IMFASFContentInfo *pContentInfo,  // An initialized ContentInfo object. 
    UINT64 *pcbPlayDuration           // Receives the play duration.
    )
{
    IMFPresentationDescriptor* pPD = NULL;

    HRESULT hr = pContentInfo->GeneratePresentationDescriptor(&pPD);
    if (SUCCEEDED(hr))
    {
        hr = pPD->GetUINT64(MF_PD_ASF_FILEPROPERTIES_PLAY_DURATION, pcbPlayDuration);
        pPD->Release();
    }
    return hr;
}

Pour plus d’informations sur les descripteurs de présentation en général, consultez Les descripteurs de présentation.

Pour obtenir l’ensemble complet des attributs de descripteur de présentation, consultez Attributs du descripteur de présentation.

Récupération d’informations d’en-tête à partir d’un descripteur de flux

Un objet de descripteur de flux expose l’interface IMFStreamDescriptor et décrit les caractéristiques des flux dans le fichier. Le descripteur de présentation pour le contenu ASF contient un ou plusieurs descripteurs de flux qui représentent les flux répertoriés dans l’objet Header. Une fois l’appel à IMFASFContentInfo::GeneratePresentationDescriptor terminé, les descripteurs de flux sous-jacents sont remplis avec des informations au niveau du flux provenant des différents objets d’en-tête. Pour obtenir un descripteur de flux pour un flux ASF, appelez IMFPresentationDescriptor::GetStreamDescriptorByIndex sur le descripteur de présentation généré à partir de l’objet ContentInfo.

Certaines des propriétés de flux sont définies en tant qu’attributs sur les descripteurs de flux. Appelez les méthodes IMFAttributes::Getxxx sur un descripteur de flux et spécifiez l’attribut MF_SD_ASF_xxx .

Pour obtenir l’ensemble complet d’attributs de descripteur de flux, consultez les attributs « Descripteur de flux spécifique à ASF » répertoriés dans Les attributs de descripteur de flux.

Récupération des informations d’en-tête à partir de l’objet Profile

En plus des descripteurs de flux, l’objet de profil ASF décrit également les propriétés du flux. Pour obtenir le profil d’un fichier ASF existant, appelez IMFASFContentInfo::GetProfile. L’objet de profil ASF retourné par cette méthode n’inclut aucun attribut MF_PD_ASF_xxx . Ces attributs sont disponibles pour l’application uniquement après avoir appelé MFCreateASFProfileFromPresentationDescriptor pour générer l’objet de profil à partir d’un descripteur de présentation. Vous pouvez utiliser le profil pour obtenir des pointeurs vers les objets d’exclusion mutuelle et de hiérarchisation de flux.

Pour plus d’informations sur l’objet de profil, consultez Le profil ASF .

Récupération de métadonnées à partir d’objets d’en-tête

Un fichier ASF peut contenir plusieurs propriétés de métadonnées définies pendant l’encodage de fichier. Une application peut énumérer ces propriétés avec l’objet ContentInfo. Certaines de ces propriétés, telles que les informations de vitesse de transmission variable (VBR), sont disponibles pour l’application via des attributs sur le descripteur de présentation, les descripteurs de flux et les types de média pour le fichier multimédia. Ces attributs sont définis sur l’objet ContentInfo pendant l’initialisation via l’appel ParseHeader .

Objet ContentInfo ASF