Mapping dei formati di flusso alle configurazioni dell'altoparlante
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:
Rifiutare di riprodurre il flusso.
Riprodurre il flusso eseguendo un mapping uno-a-uno dei singoli canali agli altoparlanti. Se tutti i canali vengono lasciati dopo che un canale è stato mappato a ogni altoparlante, eliminare i canali di sinistra. Al contrario, se tutti gli altoparlanti sono rimasti dopo che tutti i canali sono stati assegnati agli altoparlanti, riprodurre il silenzio attraverso gli altoparlanti di sinistra.
Riprodurre il flusso combinando i canali nel flusso originale per generare esattamente il numero di canali necessari per la configurazione dell'altoparlante. Se nel flusso originale sono presenti più canali, questo approccio evita la perdita del contenuto che potrebbe comportare semplicemente l'eliminazione dei canali in eccesso. La conversione di mix e formato può essere eseguita nel software o nell'hardware.
Per quanto riguarda la terza opzione, il driver deve evitare di eseguire direttamente il mix software. Il fornitore dell'hardware deve invece installare un modulo software GFX (Global-Effects) per elaborare il flusso prima di raggiungere il dispositivo audio. In Windows Vista gli effetti globali vengono implementati come oggetti di elaborazione audio GFX (API). In Windows Server 2003 e Windows XP, gli effetti globali sono stati implementati come filtri GFX.
Riproduzione di un flusso di canale 5.1 in una configurazione altoparlante 7.1
La figura seguente mostra un flusso registrato per una configurazione di altoparlanti audio circondati da 5.1 (a sinistra), ma viene riprodotto tramite una configurazione di altoparlanti home theater 7.1 (a destra).
Nella figura precedente, il formato 5.1 registrato non contiene informazioni sul canale per le posizioni del parlante BL e BR nella configurazione dell'altoparlante 7.1. Pertanto, questi due altoparlanti sono silenziosi. Un'altra alternativa più difficile sarebbe per il dispositivo audio di sintetizzare due canali aggiuntivi per gli altoparlanti BL e BR combinando il contenuto dai sei canali originali nella registrazione.
In base alle definizioni per i bit della maschera di canale, la maschera del canale per registrare il flusso 5.1 mostrato sul lato sinistro della figura precedente deve essere 0x60F, che assegna i sei canali alle posizioni del relatore seguenti: FL, FR, FC, LFE, SL e SR. Questa è la configurazione 5.1 dell'altoparlante laterale illustrata in precedenza. In effetti, la maschera di canale per il flusso 5.1 è 0x3F anziché 0x60F per motivi menzionati in precedenza e ora verrà illustrata 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 di altoparlante seguenti: FL, FR, FC, LFE, BL e BR. Si tratta della configurazione del 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 significare la configurazione 5.1 dell'altoparlante laterale anziché la configurazione del altoparlante 5.1.
L'interpretazione della maschera di canale in questo modo elimina il requisito di introdurre un secondo descrittore di formato da 5.1 canali per distinguere la configurazione 5.1 dell'altoparlante laterale dalla configurazione back-speaker 5.1. Queste due configurazioni sono così simili a quelle che gli utenti tipici potrebbero avere difficoltà a distinguere tra di essi. Anche se solo un descrittore di formato da 5.1 canali singolo evita gli utenti confusi, richiede ai fornitori hardware di ricordare di interpretare la maschera di canale 0x3F per significare che i canali 5 e 6 vengono assegnati alle posizioni del relatore SL e SR anziché le 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 utenti possano voler distinguere tra la configurazione 5.1 dell'altoparlante laterale e la configurazione del back-speaker 5.1 hanno la possibilità di fornire un programma di interfaccia utente per questo scopo. Tramite l'interfaccia utente, gli utenti possono selezionare se i canali 4 e 5 in un flusso da 5.1 canali devono guidare gli altoparlanti indietro anziché gli altoparlanti laterali in una configurazione di altoparlanti home theater 7.1.
Riproduzione di un flusso di canale 7.1 in una configurazione altoparlante 5.1
La figura seguente mostra un flusso registrato per una configurazione degli altoparlanti home theater 7.1 (a sinistra) riprodotta tramite una configurazione di altoparlanti audio circondati da 5.1 (a destra). La maschera del canale per il flusso di canale 7.1 è 0x63F.
In questo esempio, canali 6 e 7, che contengono i dati per le posizioni dell'altoparlante laterale nella configurazione 7.1, riprodurre le posizioni dell'altoparlante laterale 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 esegue il flusso nella configurazione 5.1. Come accennato in precedenza, un'altra alternativa (non illustrata nella figura precedente) è per il dispositivo di tentare di mantenere il contenuto nei canali 4 e 5 combinandoli con canali 6 e 7 prima di riprodurre loro 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 a riprodurre, il driver audio e il mixer di sistema devono negoziare un formato di flusso che sia mixer che driver possono 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, questo significa che se il mixer di sistema ha un flusso di input in un formato da 5.1 o 7.1 canali, il driver 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 da 7.1 canali, il mixer di sistema continua la negoziazione offrendo di convertire il flusso di 7.1 canali in un flusso di 5.1 canali. 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 del driver deve decidere se gestire le 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 l'esecuzione della conversione in modo diverso dalla conversione eseguita dal mixer di sistema.
Se il driver deve riprodurre flussi che ignorano il mixer di sistema.
Nella seconda situazione, un flusso può ignorare il mixer di sistema se viene riprodotto da un buffer hardware accelerato di Microsoft DirectSound direttamente a un pin di mix hardware nel 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 il 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 di 5.1 canali, il mixer imposta sempre la maschera del canale 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 da 5.1 canali 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 4 e 5 nel flusso di output. Il mixer elimina i canali 4 e 5 (per i due altoparlanti indietro) dal flusso di input a 7.1 canali. Questo comportamento garantisce che i canali contenenti il contenuto per i due altoparlanti laterali nel flusso di 7.1 canali vengono riprodotti attraverso gli altoparlanti laterali nella configurazione dell'altoparlante 5.1.