Création de compositions et de pistes de groupes

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

[Cette API n’est pas prise en charge et peut être modifiée ou indisponible à l’avenir.]

Les groupes, les compositions et les pistes sont les couches intermédiaires entre le chronologie et les clips sources. Ils se distinguent par le type d’objet qu’ils peuvent contenir.

  • Les pistes contiennent des objets sources.
  • Les compositions contiennent des pistes et d’autres compositions, mais pas des objets sources.
  • Les groupes sont des compositions de niveau supérieur. Les groupes contiennent des compositions et des pistes, mais les compositions ne peuvent pas contenir de groupes.
  • Une piste virtuelle est un objet qui peut résider à l’intérieur d’une composition ou d’un groupe. Cela inclut les pistes et les compositions.

Ces objets exposent les interfaces suivantes :

Interface Exposé par
IAMTimelineTrack Pistes
IAMTimelineVirtualTrack Pistes, compositions
IAMTimelineComp Compositions, groupes
IAMTimelineGroup Groupes

 

Ces interfaces contiennent les méthodes permettant d’ajouter des objets au chronologie.

Par exemple, le code suivant insère une nouvelle piste dans un groupe. Comme indiqué dans le tableau précédent, un groupe est considéré comme une sorte de composition et une piste est une sorte de piste virtuelle. Par conséquent, pour insérer la piste dans le groupe, vous devez interroger le groupe pour son interface IAMTimelineComp et appeler la méthode IAMTimelineComp::VTrackInsBefore .

IAMTimelineGroup    *pGroup;
// Create a new group (not shown). 

IAMTimelineComp     *pComp = NULL;
IAMTimelineObj      *pTrackObj = NULL;

pTL->CreateEmptyNode(&pTrackObj, TIMELINE_MAJOR_TYPE_TRACK);
pGroup->QueryInterface(IID_IAMTimelineComp, (void **)&pComp);
pComp->VTrackInsBefore(pTrackObj, 0);

Le deuxième paramètre de VTrackInsBefore spécifie la priorité de la piste virtuelle. Les niveaux de priorité commencent à zéro. Si vous spécifiez la valeur –1, la piste virtuelle est insérée à la fin de la liste des priorités. Si vous spécifiez une valeur dans laquelle il existe déjà une piste virtuelle, tous les éléments à partir de ce point sont déplacés vers le bas de la liste d’un niveau de priorité. N’insérez pas de piste virtuelle à une priorité supérieure au nombre de pistes virtuelles, car cela provoquera un comportement non défini.

Pour supprimer définitivement un objet du chronologie, appelez IAMTimelineObj::RemoveAll sur l’objet. Cette méthode supprime l’objet et tous ses enfants. Pour supprimer un objet dans le but de le réinsérer ailleurs dans le chronologie, appelez IAMTimelineObj::Remove à la place. Contrairement à RemoveAll, cette méthode ne supprime pas les enfants de l’objet. Pour supprimer tout du chronologie, appelez IAMTimeline::ClearAllGroups.

Construction d’une chronologie