Condividi tramite


Mapping dei formati di flusso alle configurazioni degli altoparlanti

Quando viene chiesto di riprodurre un formato di flusso che non corrisponde alla configurazione dell'altoparlante del dispositivo audio, il driver audio ha diverse opzioni:

  • Rifiuta di riprodurre lo streaming.

  • Riprodurre il flusso eseguendo un mapping uno-a-uno dei singoli canali agli altoparlanti. Se uno dei canali viene lasciato dopo che un canale è stato mappato a ogni altoparlante, eliminare i canali rimanenti. Viceversa, se rimangono altoparlanti inutilizzati dopo che tutti i canali sono stati assegnati agli altoparlanti, riprodurre il silenzio attraverso gli altoparlanti rimasti.

  • Riprodurre il flusso mescolando i canali del flusso originale per generare esattamente il numero di canali necessari per la configurazione dell'altoparlante. Se nel flusso originale sono presenti più canali rispetto a quelli presenti, questo approccio evita la perdita del contenuto che potrebbe comportare la semplice eliminazione dei canali in eccesso. La conversione di combinazione e formato può essere eseguita in software o hardware.

Per quanto riguarda la terza opzione, il driver dovrebbe evitare di eseguire direttamente la combinazione di software. Al contrario, il fornitore dell'hardware deve installare un modulo software GFX (Global-Effects) per elaborare il flusso prima che raggiunga il dispositivo audio. In Windows Vista gli effetti globali vengono implementati come oggetti di elaborazione audio GFX (APO). In Windows Server 2003 e Windows XP gli effetti globali sono stati implementati come filtri GFX.

Riproduzione di un flusso di canali 5.1 su una configurazione altoparlanti 7.1

La figura seguente mostra una sequenza registrata per una configurazione di altoparlanti suono surround 5.1 (a sinistra), ma viene riprodotta tramite una configurazione di altoparlanti home theater 7.1 (a destra).

Diagramma che mostra un flusso 5.1 riprodotto su una configurazione altoparlante 7.1 con due altoparlanti silenziosi.

Nella figura precedente, il formato 5.1 registrato non contiene informazioni sui canali per le posizioni degli altoparlanti BL e BR nella configurazione degli altoparlanti 7.1. Così, questi due altoparlanti sono silenziosi. Un'altra alternativa più difficile sarebbe quella per il dispositivo audio di sintetizzare due canali aggiuntivi per gli altoparlanti BL e BR mescolando il contenuto dei sei canali originali nella registrazione.

Secondo le definizioni relative ai bit della maschera canale, la maschera di canale per la registrazione del flusso 5.1 mostrato sul lato sinistro della figura precedente dovrebbe essere 0x60F, che assegna i sei canali alle seguenti posizioni degli altoparlanti: FL, FR, FC, LFE, SL e SR. Si tratta della configurazione side-speaker 5.1 illustrata in precedenza. In effetti, la maschera di canale per il flusso 5.1 è 0x3F anziché 0x60F per motivi menzionati in precedenza e ora verranno illustrati in dettaglio.

Nelle versioni precedenti di Windows (Windows Server 2003, Windows XP con SP1, Windows 2000 e Windows Me/98), l'interpretazione della maschera di canale 0x3F è che assegna i sei canali nel formato 5.1 alle posizioni altoparlanti seguenti: FL, FR, FC, LFE, BL e BR. Si tratta della configurazione back-speaker 5.1. Tuttavia, l'interpretazione in Windows Vista, Windows Server 2003 con SP1 e Windows XP con SP2 è diversa: per convenzione, il formato 5.1 con la maschera di canale 0x3F viene interpretato per indicare la configurazione altoparlante laterale 5.1 invece della configurazione back-speaker 5.1.

L'interpretazione della maschera di canale in questo modo elimina il requisito di introdurre un secondo descrittore di formato canale 5.1 per distinguere la configurazione 5.1 dell'altoparlante laterale dalla configurazione back-speaker 5.1. Queste due configurazioni sono così simili che gli utenti tipici potrebbero avere difficoltà a distinguere tra di essi. Anche se la presenza di un solo descrittore di formato di canale 5.1 evita confusione agli utenti, richiede ai fornitori di hardware di ricordare di interpretare la maschera di canale 0x3F per indicare che i canali 5 e 6 vengono assegnati alle posizioni degli altoparlanti SL e SR invece delle posizioni BL e BR. In cambio della necessità di ricordare questa interpretazione speciale della maschera di canale per un flusso 5.1, i fornitori possono risparmiare agli utenti la difficoltà di distinguere tra due descrittori di formato 5.1 canale molto simili.

I fornitori che credono che almeno alcuni dei loro utenti potrebbero voler distinguere tra la configurazione 5.1 del parlante laterale e la configurazione back-speaker 5.1 hanno la possibilità di fornire un programma dell'interfaccia utente per questo scopo. Tramite l'interfaccia utente, gli utenti possono selezionare se i canali 4 e 5 di un flusso audio a 5.1 canali debbano guidare gli altoparlanti posteriori anziché gli altoparlanti laterali in una configurazione del sistema home theater 7.1.

Riproduzione di un flusso audio a 7.1 canali in una configurazione di altoparlanti 5.1

La figura seguente mostra un flusso registrato per una configurazione di altoparlanti home theater 7.1 (a sinistra) riprodotti tramite una configurazione di altoparlanti audio surround 5.1 (a destra). La maschera di canale per il flusso di canale 7.1 è 0x63F.

Diagramma che illustra un flusso 7.1 riprodotto su una configurazione altoparlante 5.1 con due canali scartati.

In questo esempio, i canali 6 e 7, che contengono i dati per le posizioni degli altoparlanti laterali nella configurazione 7.1, riproducono attraverso le posizioni degli altoparlanti laterali nella configurazione 5.1. Il dispositivo audio rimuove semplicemente i canali 4 e 5, che contengono i dati per le posizioni dell'altoparlante posteriore nella configurazione 7.1, quando riproduce il flusso nella configurazione 5.1. Come accennato in precedenza, un'altra alternativa (non illustrata nella figura precedente) consiste nel tentativo del dispositivo di mantenere il contenuto nei canali 4 e 5 combinandoli con i canali 6 e 7 prima di riprodurre i contenuti attraverso gli altoparlanti laterali nella configurazione 5.1.

Comportamento del mixer di sistema

In Windows Server 2003, Windows XP, Windows 2000 e Windows Me/98, i flussi audio multicanale riprodotti dal dispositivo audio vengono in genere generati dal mixer del sistema software, Kmixer.sys. Prima che il flusso possa iniziare la riproduzione, sia il mixer di sistema che il driver audio devono negoziare un formato di flusso che entrambi possano gestire.

Quando viene chiesto di riprodurre un flusso multicanale con un formato che non corrisponde alla configurazione dell'altoparlante del dispositivo audio, il driver audio può rifiutare la richiesta, nel qual caso la negoziazione continua.

Il mixer di sistema può convertire il contenuto da un flusso di input da 5.1 canali in un flusso di output da 7.1 canali (nel dispositivo audio) e viceversa, anche se preferisce evitare tali conversioni per mantenere la qualità del flusso di input. Pertanto, il mixer di sistema inizia la negoziazione chiedendo al driver di accettare un flusso con lo stesso formato del flusso di input di alta qualità al mixer di sistema. In genere, ciò significa che se il mixer di sistema ha un flusso di input in un formato di canale 5.1 o 7.1, chiederà al driver di accettare un flusso nello stesso formato. Se il driver rifiuta questo formato, il mixer di sistema continua a negoziare chiedendo al driver se può gestire altri formati di flusso.

Ad esempio, se il driver per un dispositivo audio con una configurazione altoparlante 5.1 rifiuta una richiesta dal mixer di sistema per riprodurre un flusso di canale 7.1, il mixer di sistema continua la negoziazione offrendo di convertire il flusso di canale 7.1 in un flusso di canale 5.1. Se il driver accetta questo formato, il mixer di sistema esegue la conversione del flusso per il driver.

Quando si progetta un driver audio, il writer di driver deve decidere se gestire le proprie conversioni di formato o affidarsi al mixer di sistema per eseguire le conversioni. Il driver potrebbe dover gestire le conversioni in una delle situazioni seguenti:

  • Se il driver richiede che la conversione venga eseguita in modo diverso dalla conversione eseguita dal mixer di sistema.

  • Se il driver deve riprodurre stream che ignorano il mixer di sistema.

Nella seconda situazione, un flusso può ignorare il mixer di sistema se viene riprodotto da un buffer Microsoft DirectSound con accelerazione hardware direttamente a un pin di miscelazione hardware sul dispositivo audio. Inoltre, alcune applicazioni "pro audio" inviano i propri flussi direttamente al dispositivo audio per evitare la latenza del mixer di sistema o per impedire al processo di combinazione di modificare i valori di esempio digitali nel flusso audio originale.

In Windows Server 2003 con SP1 e Windows XP con SP2, se il mixer di sistema produce un flusso di output da 5.1 canali, il mixer imposta sempre la maschera di canale del flusso su 0x3F. Il mixer di sistema si comporta in questo modo anche se riceve un flusso di input da 5,1 canali con una maschera di canale di 0x60F. Con questo comportamento, un driver audio non riceve mai un flusso di canale 5.1 con una maschera di canale di 0x60F dal mixer.

Se il mixer di sistema riceve un flusso di input da 7,1 canali con una maschera di canale di 0x63F e produce un flusso di output da 5,1 canali (con una maschera di canale di 0x3F), il mixer copia i canali 6 e 7 nel flusso di input ai canali 4 e 5 nel flusso di output. Il mixer scarta i canali 4 e 5 (per i due altoparlanti posteriore) dal flusso di input del canale 7.1. Questo comportamento garantisce che i canali contenenti il contenuto per i due altoparlanti laterali nel flusso a 7.1 canali vengano riprodotti attraverso gli altoparlanti laterali nella configurazione a 5.1 canali.