Crear composiciones y pistas de grupos
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
[Esta API no se admite y puede modificarse o no estar disponible en el futuro].
Los grupos, las composiciones y las pistas son las capas intermedias entre la escala de tiempo y los clips de origen. Se distinguen por el tipo de objeto que pueden contener.
- Las pistas contienen objetos de origen.
- Las composiciones contienen pistas y otras composiciones, pero no objetos de origen.
- Los grupos son composiciones de nivel superior. Los grupos contienen composiciones y pistas, pero las composiciones no pueden contener grupos.
- Una pista virtual es cualquier objeto que pueda residir dentro de una composición o un grupo. Esto incluye pistas y composiciones.
Estos objetos exponen las siguientes interfaces:
Interfaz | Expuesto por |
---|---|
IAMTimelineTrack | Pistas |
IAMTimelineVirtualTrack | Pistas, Composiciones |
IAMTimelineComp | Composiciones, grupos |
IAMTimelineGroup | Grupos |
Estas interfaces contienen los métodos para agregar objetos a la escala de tiempo.
- IAMTimeline::AddGroup: inserta un grupo en la escala de tiempo.
- IAMTimelineComp::VTrackInsBefore: inserta una pista virtual en una composición o grupo.
- IAMTimelineTrack::SrcAdd: inserta un origen en una pista.
Por ejemplo, el código siguiente inserta una nueva pista en un grupo. Como se muestra en la tabla anterior, un grupo se considera un tipo de composición y una pista es un tipo de pista virtual. Por lo tanto, para insertar la pista en el grupo, debe consultar el grupo para su interfaz IAMTimelineComp y llamar al método 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);
El segundo parámetro de VTrackInsBefore especifica la prioridad de la pista virtual. Los niveles de prioridad comienzan en cero. Si especifica el valor –1, la pista virtual se inserta al final de la lista de prioridades. Si especifica un valor en el que ya hay una pista virtual, todo desde ese punto se desplaza hacia abajo en la lista por un nivel de prioridad. No inserte una pista virtual con una prioridad mayor que el número de pistas virtuales, ya que provocará un comportamiento indefinido.
Para eliminar un objeto permanentemente de la escala de tiempo, llame a IAMTimelineObj::RemoveAll en el objeto . Este método quita el objeto y todos sus elementos secundarios. Para quitar un objeto con el fin de reinsertarlo en otra parte de la escala de tiempo, llame a IAMTimelineObj::Remove en su lugar. A diferencia de RemoveAll, este método no elimina los elementos secundarios del objeto. Para quitar todo de la escala de tiempo, llame a IAMTimeline::ClearAllGroups.
Temas relacionados