Creazione di composizioni e tracce di gruppi
[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
[Questa API non è supportata e può essere modificata o non disponibile in futuro.]
I gruppi, le composizioni e le tracce sono i livelli intermedi tra la sequenza temporale e le clip di origine. Sono distinti per il tipo di oggetto che possono contenere.
- Le tracce contengono oggetti di origine.
- Le composizioni contengono tracce e altre composizioni, ma non oggetti di origine.
- I gruppi sono composizioni di primo livello. I gruppi contengono composizioni e tracce, ma le composizioni non possono contenere gruppi.
- Una traccia virtuale è qualsiasi oggetto che può risiedere all'interno di una composizione o di un gruppo. Sono incluse tracce e composizioni.
Questi oggetti espongono le interfacce seguenti:
Interfaccia | Esposto da |
---|---|
IAMTimelineTrack | Brani |
IAMTimelineVirtualTrack | Tracce, Composizioni |
IAMTimelineComp | Composizioni, gruppi |
IAMTimelineGroup | Gruppi |
Queste interfacce contengono i metodi per l'aggiunta di oggetti alla sequenza temporale.
- IAMTimeline::AddGroup: inserisce un gruppo nella sequenza temporale.
- IAMTimelineComp::VTrackInsBefore: inserisce una traccia virtuale in una composizione o in un gruppo.
- IAMTimelineTrack::SrcAdd: inserisce un'origine in una traccia.
Ad esempio, il codice seguente inserisce una nuova traccia in un gruppo. Come illustrato nella tabella precedente, un gruppo viene considerato un tipo di composizione e una traccia è un tipo di traccia virtuale. Pertanto, per inserire la traccia nel gruppo, è necessario eseguire query sul gruppo per l'interfaccia IAMTimelineComp e chiamare il metodo 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);
Il secondo parametro in VTrackInsBefore specifica la priorità della traccia virtuale. I livelli di priorità iniziano a zero. Se si specifica il valore -1, la traccia virtuale viene inserita alla fine dell'elenco di priorità. Se si specifica un valore in cui è già presente una traccia virtuale, tutto da quel punto in cui viene spostato l'elenco in base a un livello di priorità. Non inserire una traccia virtuale con priorità maggiore del numero di tracce virtuali, perché causerà un comportamento non definito.
Per eliminare definitivamente un oggetto dalla sequenza temporale, chiamare IAMTimelineObj::RemoveAll nell'oggetto. Questo metodo rimuove l'oggetto e tutti i relativi elementi figlio. Per rimuovere un oggetto allo scopo di reinserirlo altrove nella sequenza temporale, chiamare invece IAMTimelineObj::Remove . A differenza di RemoveAll, questo metodo non elimina gli elementi figlio dell'oggetto. Per rimuovere tutto dalla sequenza temporale, chiamare IAMTimeline::ClearAllGroups.
Argomenti correlati