Condividi tramite


Creazione di oggetti sequenza temporale

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine 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, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di 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 potrebbe essere modificata o non disponibile in futuro.]

Il codice di esempio presentato in questo articolo inizia con una sequenza temporale vuota, ma gli stessi passaggi si applicano se si carica un progetto esistente e si vogliono aggiungervi oggetti.

Per creare qualsiasi tipo di oggetto nella sequenza temporale, chiamare il metodo IAMTimeline::CreateEmptyNode . Ad esempio, il codice seguente crea un nuovo gruppo:

IAMTimelineObj *pGroupObj = NULL;
pTL->CreateEmptyNode(&pGroupObj, TIMELINE_MAJOR_TYPE_GROUP);

Il secondo parametro è un membro dell'enumerazione TIMELINE_MAJOR_TYPE . Specifica il tipo di oggetto sequenza temporale da creare, ad esempio un gruppo o una traccia.

Il metodo CreateEmptyNode crea l'oggetto e restituisce un puntatore all'interfaccia IAMTimelineObj dell'oggetto. Incrementa anche il conteggio dei riferimenti sull'interfaccia IAMTimelineObj , quindi è necessario rilasciare l'interfaccia al termine dell'uso. Non chiamare la funzione CoCreateInstance . Usare invece sempre CreateEmptyNode per creare un oggetto sequenza temporale, perché inizializza il nuovo oggetto da usare in una sequenza temporale.

L'interfaccia IAMTimelineObj è un'interfaccia generica. Fornisce metodi comuni a tutti i tipi di oggetto sequenza temporale. Ogni tipo di oggetto espone anche altre interfacce. Ad esempio, i gruppi espongono l'interfaccia IAMTimelineGroup , tra le altre. È possibile ottenere puntatori alle altre interfacce chiamando QueryInterface.

Dopo aver creato un oggetto, non fa ancora parte della sequenza temporale. Il metodo per aggiungere un oggetto alla sequenza temporale dipende dal tipo di oggetto. La sezione seguente descrive come aggiungere gruppi, composizioni e tracce alla sequenza temporale.

Costruzione di una sequenza temporale