Partager via


Utilisation des objets d’activation d’un encodeur

Pour convertir des fichiers multimédias au format ASF, vous pouvez utiliser des encodeurs Windows Media. Pour utiliser ces encodeurs, ils doivent être inscrits auprès du système.

Pour plus d’informations sur l’inscription d’encodeur, consultez Instanciation d’un encodeur MFT.

Utilisation des objets d’activation d’un encodeur

En guise d’alternative à l’utilisation de l’interface IMFTransform d’un encodeur (décrite dans Création d’un encodeur à l’aide de CoCreateInstance), vous pouvez créer une instance de l’objet d’activation pour l’encodeur. Les objets d’activation facilitent la création d’encodeurs et Media Foundation fournit les deux fonctions suivantes pour cette approche :

Ces deux fonctions nécessitent de créer le type de média cible et de définir les propriétés d’encodage avant d’appeler ces fonctions. Si votre application utilise des composants ASF de couche de pipeline pour encoder un fichier au format ASF et qu’elle a déjà créé et configuré les récepteurs multimédias ASF, vous pouvez obtenir cet ensemble d’informations à partir du récepteur multimédia ASF.

MFCreateWMAEncoderActivate et MFCreateWMVEncoderActivate définissent le type de sortie de l’encodeur sur le type de média spécifié par l’application.

Note Si vous utilisez MFCreateWMAEncoderActivate et MFCreateWMVEncoderActivate , vous pouvez activer l’encodeur en appelant IMFActivate::ActivateObject , mais vous ne pouvez pas modifier les types de média d’entrée et de sortie de l’encodeur et vous ne pouvez modifier aucune des propriétés d’encodage.

Pour plus d’informations sur la création d’objets Media Foundation à l’aide d’objets d’activation, consultez Objets d’activation.

Pour obtenir le type de média cible à partir du récepteur multimédia ASF

  1. Obtenez un pointeur vers le pointeur IMFASFContentInfo du récepteur multimédia ASF en appelant IMFMediaSink::QueryInterface sur le récepteur multimédia ASF et en passant IID_IMFASFContentInfo comme identificateur d’interface.
  2. Obtenez l’objet de profil ASF associé à l’objet ContentInfo.
  3. Énumérez les flux dans le profil pour obtenir le type de média du flux.

Pour obtenir les propriétés d’encodage à partir du récepteur multimédia ASF

  1. Si vous avez configuré les propriétés d’encodage dans le récepteur multimédia (décrit dans Définition des propriétés dans le récepteur de fichiers), vous pouvez faire référence au magasin de propriétés du récepteur en appelant IMFMediaSink::QueryInterface sur le récepteur multimédia ASF et en transmettant IID_IPropertyStore comme identificateur d’interface.

  2. Si vous avez un pointeur vers l’objet ContentInfo du récepteur, vous pouvez appeler IMFASFContentInfo::GetEncodingConfigurationPropertyStore pour obtenir une référence au magasin de propriétés du récepteur multimédia.

    Assurez-vous que toutes les propriétés d’encodage définies sur le récepteur multimédia ASF sont reflétées dans le magasin de propriétés transmis à MFCreateWMAEncoderActivate et MFCreateWMVEncoderActivate. L’encodeur est configuré automatiquement en fonction des paramètres spécifiés par l’application.

Lors de la création du nœud de transformation dans la topologie d’encodage, vous pouvez définir le type d’objet comme pointeur IMFActivate reçu dans ces deux appels. Lorsque la topologie est résolue, media session utilise l’objet d’activation pour créer un instance de l’encodeur MFT.

Énumération de l’encodeur dans Windows 7 et versions ultérieures

Pour les applications qui s’exécutent sur Windows 7, en plus de MFTEnum , vous pouvez énumérer les mfts d’encodeur en appelant MFTEnumEx. Cette fonction retourne un pointeur vers l’objet d’activation de l’encodeur MFT. La structure de la fonction est très similaire à MFTEnum décrite ci-dessus, sauf que MFTEnumExretourne un tableau de pointeurs IMFActivate pour les MFT d’encodeur qui correspondent aux critères de recherche.

Instanciation d’un encodeur MFT

Encodeurs Windows Media

Objets d’activation