Specifica della topologia
Dopo che un fornitore di hardware decide quali driver miniport scrivere per i dispositivi wave e MIDI, il passaggio successivo consiste nel rappresentare la topologia di streaming del kernel (KS) di questi dispositivi. La topologia KS è costituita da un set di strutture di dati che descrivono i percorsi di dati che i flussi audio o MIDI seguono durante il flusso attraverso ogni dispositivo. Tramite questa topologia, il driver espone i nodi di controllo (ad esempio, il controllo del volume) che si trovano lungo ogni percorso. In genere, un'applicazione usale funzioni xxx del mixer multimediale Windows per esplorare la topologia enumerando la sequenza di nodi lungo ogni percorso. Ad esempio, dopo aver individuato un nodo di controllo a livello di volume, un'applicazione può impostare il livello di volume su tale nodo. Per altre informazioni sui contenuti multimediali di Windows, vedere la documentazione di Microsoft Windows SDK. Per altre informazioni sulla rappresentazione delle topologie KS dalle funzionixxx del mixer, vedere Topologia di streaming del kernel alla traduzione API Audio Mixer.
PortCls offre sei driver di porta: WavePci, WaveCyclic, WaveRT, MIDI, DMus e Topologia. (WaveRT è disponibile da Windows Vista ed è l'approccio consigliato). Il driver della porta topologia controlla la parte del circuito dell'adattatore audio che combina i flussi di rendering dai dispositivi wave e MIDI. Controlla anche la selezione dei flussi di acquisizione dai jack di input. Nonostante il suo nome leggermente fuorviante, il driver della porta topologia non incorpora tutte le topologie di un adattatore audio, anche se in genere contiene una parte grande di esso. Gli altri driver di porta contribuiscono alle parti rimanenti della topologia dell'adattatore.
Ogni driver di porta è associato a un driver miniport corrispondente per formare un filtro KS che rappresenta un particolare dispositivo (wave, MIDI o mixer) sulla scheda audio, come illustrato nella tabella seguente.
Tipo filtro | Descrizione |
---|---|
Filtro WaveXxx |
Rappresenta un dispositivo wave che converte un flusso di output dell'onda in un segnale audio analogico o che converte un segnale audio analogico in un flusso di input dell'onda. |
Filtro MIDI o DMus |
Rappresenta un dispositivo MIDI che riproduce o acquisisce un flusso MIDI. |
Filtro topologia |
Rappresenta il circuito mixer dell'adattatore. |
Il driver miniport implementa le funzioni specifiche del dispositivo del filtro, inclusa la definizione della parte della topologia dell'adattatore che il dispositivo include. Il driver della porta si occupa delle operazioni di filtro generiche, inclusa la comunicazione con il sistema operativo, per ogni tipo di filtro.
Ogni filtro ha uno o più pin KS che fungono da percorsi per i flussi di dati audio da immettere e lasciare il filtro. In genere, i pin del filtro topologia sono associati ai pin sull'onda, midi e DMus filtrano tramite connessioni hardwired nel circuito dell'adattatore. Questi filtri e le relative interconnessioni formano un grafico di filtro KS che incorpora la topologia dell'adattatore.
Nella figura seguente viene illustrata la topologia di un adattatore audio di esempio.
Nella figura precedente la topologia a livello superiore è costituita dalle connessioni tra i filtri MIDI, WaveXxx e topologia. Inoltre, ogni filtro ha una propria topologia interna, costituita dai percorsi dati tramite il filtro e i nodi di controllo che si trovano lungo ogni percorso. I nodi vengono etichettati come illustrato nella tabella seguente.
Etichetta | Descrizione | KS Node-Type GUID |
---|---|---|
Synth |
Nodo del sintetizzatore |
KSNODETYPE_SYNTHESIZER |
DAC |
Nodo del convertitore digitale da audio |
KSNODETYPE_DAC |
ADC |
Nodo convertitore analogico-digitale |
KSNODETYPE_ADC |
Volume |
Nodo di controllo a livello di volume |
KSNODETYPE_VOLUME |
Disattiva audio |
Nodo di controllo mute |
KSNODETYPE_MUTE |
Sum |
Nodo di sommazione |
KSNODETYPE_SUM |
MUX |
Nodo Multiplexer |
KSNODETYPE_MUX |
Nella figura precedente, i pin sul lato sinistro della scheda audio rappresentano le connessioni logiche (non connessioni fisiche) tramite cui i flussi di dati entrano nell'adattatore dal bus di sistema o immettono il bus di sistema dalla scheda. Questi pin sono connessi logicamente al pin di origine e sink su altri filtri (non visualizzati) esterni all'adattatore. In genere, questi filtri sono moduli software che, insieme alla topologia dell'adattatore, formano un grafico di filtro più grande la cui topologia può essere esaminata dalle applicazioni usando le funzionimixer Xxx . Ad esempio, il pin etichettato "PCM Wave Out" nella figura precedente è logicamente connesso al motore audio in modalità utente in Windows. Queste connessioni logiche vengono mantenute dai trasferimenti DMA sul bus di sistema.
Al contrario, i pin sul bordo sinistro del filtro della topologia sono connessi fisicamente ai pin sui filtri MIDI e WaveXxx . Queste connessioni sono hardwired e non possono essere modificate dal software.
I pin del ponte sul lato destro della scheda audio rappresentano jack audio sullo chassis del sistema. Questi pin vengono definiti pin bridge perché consentono di collegare il limite tra il grafico del filtro KS e il mondo esterno.
I filtri, i pin e i nodi in genere hanno proprietà accessibili ai client (componenti in modalità kernel o applicazioni in modalità utente) del driver audio. Un client può inviare una richiesta di proprietà KS a un filtro, un pin o un nodo per eseguire una query per il valore corrente di una proprietà o per modificare il valore della proprietà. Ad esempio, un nodo di controllo a livello di volume ha una proprietà KSPROPERTY_AUDIO_VOLUMELEVEL , che un client può modificare tramite una richiesta di proprietà KS. Un nodo di somma è un esempio di un tipo di nodo che in genere non ha proprietà.
Per semplicità, il filtro WaveXxx nella figura precedente fornisce solo un singolo pin per accettare un flusso di output dell'onda PCM dal bus di sistema. Al contrario, alcuni dispositivi wave forniscono più pin per l'output dell'onda PCM e contengono hardware per combinare internamente i flussi che immettono i pin. Questi dispositivi forniscono accelerazione hardware per le applicazioni che usano DirectSound accettando flussi PCM che vengono riprodotti dai buffer audio delle applicazioni. Per DirectSound per usare questi pin, devono fornire nodi aggiuntivi per l'elaborazione 2D (2D) e tridimensionale (3D), come descritto in Accelerazione hardware DirectSound in WDM Audio.
Questo tipo di accelerazione hardware è supportato in Windows Server 2003, Windows XP, Windows 2000 e Windows Me/98, ma non è supportato in Windows Vista. Windows Vista non usa i pin di accelerazione hardware nei dispositivi a onda meno recenti.
Nella figura precedente le connessioni fisiche tra MIDI, WaveXxx e topologia filtrano tutti i segnali audio analogici di trasporto. Tuttavia, un dispositivo di topologia diverso potrebbe ottenere un effetto simile accettando flussi di output digitali dai dispositivi MIDI e wave, mescolandoli digitalmente e convertendo la combinazione digitale in un segnale di output analogico.
Il pin "Non PCM Wave Out" nell'angolo inferiore sinistro della figura precedente accetta un flusso di output non PCM in un formato pass-through S/PDIF, ad esempio AC-3-over-S/PDIF o WMA Pro-over-S/PDIF. Usando uno di questi formati, il dispositivo trasmette semplicemente i dati compressi sul collegamento S/PDIF senza decodificare i dati. Per questo motivo, il percorso dei dati del pin "S/PDIF Out" nell'angolo inferiore destro della figura precedente non contiene nodi volume o disattivabili. Per altre informazioni sui formati audio non PCM e sulla trasmissione pass-through S/PDIF, vedere Supporto di formati di onda non PCM e S /PDIF Pass-Through trasmissione di flussi non PCM.
Il driver miniport presenta la topologia al driver di porta sotto forma di una struttura PCFILTER_DESCRIPTOR . Questa struttura descrive tutti i pin e i nodi del filtro e specifica il modo in cui i pin e i nodi si connettono tra loro.
Anziché progettare un filtro di topologia monolitica, come illustrato nella figura precedente, il circuito mixer nella scheda audio può essere partizionato in diversi filtri di topologia. Nella figura precedente, ad esempio, i percorsi dati che guidano gli altoparlanti possono essere implementati come un filtro di topologia e i percorsi dati che acquisisce i dati audio dai dispositivi di input possono essere implementati come filtro topologia separato. Quando i percorsi dati in un determinato filtro della topologia non sono in uso, tale parte della scheda può essere disattivata senza disabilitare l'intera scheda. Per altre informazioni, vedere Sottodispositivi audio dinamici.