Condividi tramite


Input, flussi e output

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita da lettore di origine e writer sink. lettore di origine e sink writer sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi lettore di origine e writer sink invece di Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Un "input" in questa documentazione è qualsiasi flusso di dati multimediali digitali (ad esempio audio o video) che l'applicazione distribuisce all'oggetto writer da un'origine usando le API appropriate. Gli input devono essere recapitati in un formato supportato. Diversi formati RGB e YUV standard sono supportati come input e i codec audio supportano PCM. Se un formato di input specificato non è supportato in modo nativo dal codec, l'oggetto writer creerà un'istanza di un oggetto helper audio o video in grado di convertire un'ampia gamma di formati in formati che il codec può accettare. Per gli input audio, l'oggetto helper regola la profondità del bit, la frequenza di campionamento e il numero di canali in base alle esigenze. Per gli input video, l'oggetto helper video eseguirà conversioni dello spazio dei colori e regolazioni delle dimensioni del rettangolo. In alcuni casi, i dati audio e video compressi possono essere passati in un flusso di input. Un input può essere di un altro tipo di supporto oltre a audio e video, ad esempio testo, comandi di script, immagini ancora o dati di file arbitrari.

Un "output" in questa documentazione fa riferimento ai dati passati dall'oggetto lettore a un'applicazione per il rendering. Un output equivale a un singolo flusso al momento della riproduzione. Se si usa l'esclusione reciproca, tutti i flussi che si escludono a vicenda condividono un singolo output. In genere, i dati di output sono sotto forma di dati audio o video non compressi, anche se possono contenere qualsiasi tipo di dati. I formati di output video supportati sono elencati altrove in questa documentazione.

Il termine "flusso" in questa documentazione fa riferimento ai dati in un file ASF, anziché (1) i dati dell'origine di input prima che vengano elaborati dall'oggetto writer e (2) i dati di output dopo essere stati decompressi dall'oggetto lettore. Un flusso ASF contiene dati provenienti da un singolo input sull'oggetto writer, anche se è possibile creare più di un flusso dallo stesso input. Un flusso ha le stesse impostazioni di formato e compressione dall'inizio alla fine. Un semplice file ASF ha due flussi, uno per l'audio e uno per il video. Un file più complesso potrebbe avere due flussi audio e diversi flussi video. I flussi audio possono avere le stesse impostazioni di compressione, ma contengono contenuti diversi, ad esempio una narrazione in lingue diverse. I flussi video possono contenere lo stesso contenuto, ma hanno impostazioni di compressione diverse. Le impostazioni relative al formato multimediale e alla compressione che verranno applicate all'oggetto writer per ogni flusso vengono specificate nel profilo.

La relazione tra input, flussi e output può essere di tre tipi di base. I tre diagrammi seguenti illustrano le relazioni.

Nella relazione più semplice, ovvero un profilo senza esclusione reciproca, ogni input viene elaborato dal writer e inserito nel file ASF come singolo flusso. Durante la riproduzione, il lettore legge il flusso e distribuisce campioni non compressi come singolo output, come illustrato nel diagramma seguente.

diagramma che mostra la normale relazione tra input, flussi e output.

Una relazione più complessa si verifica quando viene usata l'esclusione reciproca a velocità in bit multipla. In questo caso, un singolo input viene elaborato dal writer e codificato a diverse velocità di bit. Ogni codifica dei dati viene inserita nel file ASF come flusso separato. Durante la riproduzione, il lettore determina il flusso da decomprimere in base alla larghezza di banda disponibile. Il lettore legge quindi il flusso selezionato e fornisce campioni non compressi come singolo output, come illustrato nel diagramma seguente.

diagramma che mostra le relazioni tra input, flussi e output quando si usa l'esclusione reciproca a velocità in bit multipla.

Il terzo tipo di relazione può verificarsi quando viene usata un'esclusione reciproca personalizzata o basata sulla lingua. In questa relazione, più input vengono elaborati dal lettore e ognuno viene inserito nel file ASF come singolo flusso. Durante la riproduzione, l'applicazione seleziona manualmente il flusso da decomprimere in base alla logica disponibile. Il lettore legge quindi il flusso selezionato e fornisce campioni non compressi come singolo output. Questo processo può essere usato per includere colonne sonore in più lingue. Il diagramma seguente illustra questo processo.

diagramma che mostra le relazioni tra input, flussi e output quando si usa l'esclusione reciproca personalizzata.

Esistono alcune variazioni nelle relazioni descritte in precedenza. Ad esempio, un file può contenere tutte e tre le relazioni o una o due di esse. È anche possibile comprimere alcuni input, nel qual caso il writer non esegue alcuna compressione aggiuntiva. Il lettore, inoltre, può recapitare campioni compressi. Tuttavia, quando lo fa, è necessario accedervi in base al numero di flusso, non in base al numero di output.

Nota

Gli input, i vapore e gli output sono tutti numeri assegnati dagli oggetti di Windows Media Format SDK. I flussi hanno un numero di flusso, che è basato su 1, definito nel profilo. A ogni flusso viene assegnato anche un indice di flusso da usare nell'enumerazione dei flussi in un profilo. Nessuno di questi numeri è garantito essere coerente tra loro. Ovvero, il numero di input 1 potrebbe non corrispondere al numero di flusso 1, il numero di flusso 1 potrebbe non corrispondere all'indice di flusso 1 e così via.

 

concetti

di esclusione reciproca