Partager via


Notions de base de DMO (Microsoft Media Foundation)

Cette rubrique fournit une brève vue d’ensemble des DMV, car elles sont liées aux codecs Windows Media. Pour plus d’informations sur les objets de gestion de base de données, consultez DirectX Media Objects.

Un DMO est un objet COM qui transforme les données. Vous transmettez des données à celui-ci et retourne les données transformées. Dans le cas d’un DMO d’encodeur codec, vous entrez des données multimédias non compressées et le DMO fournit des données multimédias compressées. L’avantage principal de l’utilisation d’objets de gestion de base est qu’ils implémentent tous la même interface de base, IMediaObject, ce qui simplifie leur utilisation, car vous pouvez utiliser le même objet, quel que soit le type de transformation en cours d’exécution.

Étant donné qu’il existe des variables impliquées dans n’importe quelle transformation de données, la transformation audio et vidéo doit tenir compte de la large gamme de configurations multimédias possibles. Les codecs Audio et Vidéo Windows Media prennent également en charge un certain nombre de fonctionnalités spéciales que vous devez être en mesure de configurer à l’aide du DMO.

En général, les informations sur les variables requises par les DMV codec pour compresser et décompresser le média numérique sont transmises de l’une des trois manières suivantes :

  • Définissez le type d’entrée sur le DMO pour transmettre les caractéristiques du média non compressé que vous passez à un DMO d’encodeur et les caractéristiques du média compressé que vous passez à un DMO décodeur.
  • Définissez le type de sortie sur le DMO pour transmettre les caractéristiques du média compressé fourni par un DMO d’encodeur et les caractéristiques du média non compressé fourni par un DMO décodeur.
  • À l’aide des méthodes de l’interface IPropertyBag, configurez d’autres paramètres qui prennent en charge les différentes fonctionnalités des DMO codec en tant que propriétés. IPropertyBag est une interface COM standard prise en charge par tous les DMO codecs.

En outre, certaines fonctionnalités de codec sont gérées à l’aide d’autres interfaces spécifiques aux DMO codec. Ces interfaces sont répertoriées pour chaque codec de la section Les objets codec.

Les types d’entrée et de sortie sont spécifiques aux flux d’entrée et de sortie. Chaque flux représente une représentation discrète du contenu. Par exemple, le DMO de l’encodeur Vidéo Windows Media a un flux d’entrée unique et deux flux de sortie. Le flux d’entrée accepte des exemples vidéo non compressés. Le premier des deux flux de sortie fournit des exemples compressés ; l’autre fournit des exemples non compressés. Les échantillons individuels d’un flux de sortie représentent le même contenu que les exemples correspondants dans l’autre flux, mais chaque flux fournit ces exemples dans un format différent.

Chaque flux (entrée ou sortie) prend en charge un ou plusieurs types de supports. Un type de média ou un format est décrit par une structure DMO_MEDIA_TYPE. Vous pouvez interroger le DMO pour les types pris en charge par un flux de sortie en appelant IMediaObject ::GetOutputType. Cette méthode retourne un type de sortie valide (dans certains cas partiellement incomplet) pour ce flux. Vous pouvez énumérer les types de supports pris en charge pour un flux de sortie en effectuant des appels répétés à GetOutputType, en incrémentant le paramètre de type avec chaque appel. Lorsque l’index de type que vous passez est hors limites, la méthode retourne DMO_E_NO_MORE_ITEMS. Les formats d’entrée peuvent être énumérés de la même façon à l’aide de la méthode IMediaObject ::GetInputType.

Les types énumérés par le DMO sont uniquement les types « préférés », mais d’autres types peuvent être pris en charge. Vous pouvez valider un type de sortie en appelant IMediaObject ::SetOutputType. Utilisez IMediaObject ::SetInputType pour valider un type d’entrée. Les deux méthodes retournent DMO_E_TYPE_NOT_ACCEPTED si la structure DMO_MEDIA_TYPE que vous avez passée n’est pas valide. Certaines DMV nécessitent que vous définissiez un type de sortie avant d’énumérer les types d’entrée. Les DMO de codec Audio et Vidéo Windows Media ont tous des entrées et des sorties qui ont une validation interdépendante. Autrement dit, le type de sortie que vous définissez définit les critères de validation du type d’entrée. Il existe également certaines propriétés qui, lorsqu’elles sont définies, modifient les types d’entrée et de sortie valides. Pour cette raison, vous devez définir toutes les propriétés souhaitées sur le DMO avant d’énumérer les types.

Lorsque vous avez défini les types de sortie et d’entrée pour le DMO, vous pouvez commencer à traiter des exemples. Chaque exemple d’entrée est passé au codec à l’aide d’un appel à IMediaObject ::P rocessInput, et chaque exemple de sortie est remis par le codec lorsque vous effectuez un appel à IMediaObject ::P rocessOutput.

utiliser des DMO codecs