Informazioni sulle topologie

Una topologia è un oggetto che rappresenta il modo in cui i flussi di dati nella pipeline. Un'applicazione crea una topologia per descrivere il percorso che ogni flusso accetta dall'origine multimediale a un sink multimediale. L'applicazione passa la topologia alla sessione multimediale e la sessione multimediale usa la topologia per controllare il flusso di dati.

I componenti di elaborazione dei dati nella pipeline (origini multimediali, trasformazioni e sink multimediali) sono rappresentati nella topologia come nodi. Il flusso di dati da un componente a un altro è rappresentato da una connessione tra i nodi. I tipi di nodo seguenti sono definiti:

  • Nodo di origine: rappresenta un flusso multimediale in un'origine multimediale.
  • Nodo trasformazione: rappresenta una trasformazione Media Foundation (MFT).
  • Nodo di output: rappresenta un sink di flusso in un sink multimediale.
  • Nodo Tee: rappresenta un fork nel flusso. I nodi di tee sono un'eccezione alla regola che un nodo rappresenta un oggetto pipeline. A differenza di altri tipi di nodo, il nodo di tee indirizza semplicemente il flusso di dati.

Una topologia funzionante deve contenere almeno un nodo di origine connesso a un nodo di output, possibilmente tramite uno o più nodi di trasformazione. Ad esempio, il diagramma seguente mostra una topologia semplice con un flusso.

diagramma che mostra una topologia con un flusso.

Per la riproduzione dei file, il nodo di trasformazione potrebbe rappresentare un decodificatore e il nodo di output rappresenta il renderer audio o video. Per la codifica dei file, il nodo di trasformazione rappresenta un codificatore e il nodo di output rappresenta un sink di archiviazione, ad esempio il sink di file ASF.

Se due nodi sono connessi, il nodo che produce dati viene chiamato nodo upstream e il nodo che riceve i dati viene chiamato nodo downstream . Nel diagramma precedente, ad esempio, il nodo di origine è upstream dal nodo di trasformazione.

In una coppia di nodi connessi, il punto di connessione nel nodo upstream viene chiamato output. Il punto di connessione nel nodo downstream viene chiamato input. Il diagramma seguente mostra una coppia di nodi con i punti di connessione e il flusso di dati tra di essi. I punti di connessione non vengono rappresentati come oggetti separati nella topologia. Vengono specificati dal valore di indice nell'oggetto node.

diagramma che mostra due nodi connessi.

Un nodo di origine non può avere input. Pertanto, non è possibile che non siano presenti nodi upstream da un nodo di origine. Analogamente, un nodo di output non può avere output e non può essere presente alcun nodo downstream da un nodo di output. Una catena di nodi da un nodo di origine a un nodo di output viene chiamata ramo della topologia. Il primo diagramma in questo argomento mostra una topologia con un singolo ramo. In genere esiste un ramo per flusso. Per riprodurre un file con un flusso audio e un flusso video, ad esempio, richiede una topologia con due rami.

Topologie parziali

Una topologia completa o completa contiene un nodo per ogni oggetto pipeline necessario. Tuttavia, l'applicazione non deve sempre creare una topologia completa. Crea invece una topologia parziale che omette uno o più nodi di trasformazione.

La sessione multimediale completa la topologia usando un oggetto denominato caricatore della topologia. Il caricatore della topologia converte le topologie parziali in topologie complete inserendo le trasformazioni necessarie. Il processo di conversione viene chiamato risoluzione della topologia.

Ad esempio, per riprodurre un flusso audio codificato, la topologia deve avere un decodificatore tra i nodi di origine e di output. L'applicazione crea una topologia parziale che connette il nodo di origine direttamente al nodo di output, senza il decodificatore. Il caricatore della topologia esamina i formati di flusso, trova il decodificatore corretto e inserisce un nodo di trasformazione nella topologia.

Il diagramma seguente mostra la topologia parziale creata dall'applicazione.

diagramma che mostra un elemento parziale con un nodo di origine e un nodo di output.

Il diagramma successivo mostra la topologia completa dopo che il caricatore della topologia lo risolve. In questo esempio, il caricatore della topologia ha inserito un nodo di trasformazione per il decodificatore.

diagramma che mostra una topologia completa.

Nella versione corrente di Media Foundation il caricatore della topologia supporta topologie per la riproduzione. Per la codifica dei file e altri scenari, l'applicazione deve costruire una topologia completa.

Le applicazioni possono anche creare il caricatore della topologia e usarlo direttamente. Ad esempio, è possibile usare il caricatore della topologia per risolvere una topologia parziale e quindi modificare la topologia completa prima di assegnarla alla sessione multimediale. Per creare il caricatore della topologia, chiamare MFCreateTopoLoader.

Topologie