Pin della topologia

Il driver di sistema WDMAud converte i pin di topologia nei filtri KS nelle linee mixer di origine e destinazione esposte dall'API mixer alle applicazioni. I pin di input (sink) diventano linee mixer di origine e i pin di output (origine) diventano linee mixer di destinazione.

Come descritto in Pin Factory, un driver miniport fornisce una matrice di descrittori di pin, ognuno dei quali è una struttura di tipo PCPIN_DESCRIPTOR che descrive una factory di pin appartenente a un filtro. Ogni descrittore di pin include le informazioni seguenti:

  • Identificatore di direzione del flusso di dati

    Indica se il flusso di dati entra (KSPIN_DATAFLOW_IN) o esce (KSPIN_DATAFLOW_OUT) dal filtro tramite il pin.

  • GUID della categoria pin KS

    Indica la categoria di puntina a cui appartiene il pin. Ad esempio, in un dispositivo di riproduzione audio, un pin potrebbe accettare un flusso audio digitale in formato onda e un altro pin potrebbe generare un segnale audio analogico per guidare un altoparlante. Il driver miniport identifica questi due tipi di pin come appartenenti a categorie di pin distinte.

  • Identificatore del tipo di comunicazione

    Indica il tipo di comunicazioni IRP supportate dal pin. Un pin che supporta le comunicazioni IRP può essere un sink IRP (KSPIN_COMMUNICATION_SINK), un'origine IRP (KSPIN_COMMUNICATION_SOURCE) o entrambe (KSPIN_COMMUNICATION_BOTH). Un pin che non supporta le comunicazioni IRP può trovarsi all'interno di un grafico di filtro KS (KSPIN_COMMUNICATION_NONE) o essere un pin di ponte all'endpoint di un grafico (KSPIN_COMMUNICATION_BRIDGE).

Per altre informazioni sui pin del bridge, vedere Grafici del filtro audio.

WDMAud converte le informazioni dal descrittore pin del driver miniport in un descrittore della linea mixer, ovvero una struttura di tipo MIXERLINE che include le informazioni seguenti:

  • Tipo di componente della linea mixer

    Indica se la linea del mixer è una linea di origine o di destinazione e indica anche la funzione generale della linea del mixer. Ad esempio, il tipo di componente per una linea mixer che trasporta un segnale analogico generato da un flusso di output delle onde (rendering) per guidare un set di cuffie è MIXERLINE_COMPONENTTYPE_DST_HEADPHONES.

  • Tipo di destinazione della linea mixer

    Indica il tipo di flusso di dati trasportato dalla linea del mixer. Ad esempio, il tipo di destinazione per un flusso di output di onda (rendering) è MIXERLINE_TARGETTYPE_WAVEOUT e il tipo di destinazione per un flusso di input di onda (acquisizione) è MIXERLINE_TARGETTYPE_WAVEIN.

Per altre informazioni, vedere la struttura MIXERLINE nella documentazione dell'SDK.

Le due tabelle seguenti illustrano come WDMAud converte le linee mixer di origine (KSPIN_DATAFLOW_IN).

La prima tabella mostra il mapping dei GUID della categoria pin KS di input (PCPIN_DESCRIPTOR valori) ai tipi di destinazione MIXERLINE associati.

GUID della categoria pin KS Pin ponte? Tipo di destinazione MIXERLINE
KSNODETYPE_MICROPHONE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_DESKTOP_MICROPHONE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_LEGACY_AUDIO_CONNECTOR - MIXERLINE_TARGETTYPE_WAVEOUT
KSCATEGORY_AUDIO - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_CD_PLAYER - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_SYNTHESIZER - MIXERLINE_TARGETTYPE_MIDIOUT
KSNODETYPE_LINE_CONNECTOR - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_TELEPHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_PHONE_LINE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_DOWN_LINE_PHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_ANALOG_CONNECTOR MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_ANALOG_CONNECTOR No MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE No MIXERLINE_TARGETTYPE_WAVEOUT

Nella tabella seguente viene illustrato il mapping dei GUID della categoria pin KS di input ai tipi di componente MIXERLINE associati.

valori PCPIN_DESCRIPTOR Valori MIXERLINE
GUID della categoria pin KS Tipo di componente

KSNODETYPE_MICROPHONE

KSNODETYPE_DESKTOP_MICROPHONE

MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE

KSNODETYPE_LEGACY_AUDIO_CONNECTOR

KSCATEGORY_AUDIO

KSNODETYPE_SPEAKER

MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT

KSNODETYPE_CD_PLAYER

MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC

KSNODETYPE_SYNTHESIZER

MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER

KSNODETYPE_LINE_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_LINE

KSNODETYPE_TELEPHONE

KSNODETYPE_PHONE_LINE

KSNODETYPE_DOWN_LINE_PHONE

MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_ANALOG

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_SRC_ANALOG

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_SRC_DIGITAL

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_SRC_DIGITAL

Nelle tabelle precedenti, la colonna sinistra specifica il GUID della categoria di pin dalla struttura PCPIN_DESCRIPTOR del pin e le colonne destro specificano il tipo di destinazione e il tipo di componente corrispondente per la struttura MIXERLINE.

Le voci nella colonna etichettate "Pin bridge?" indicano se il pin è un pin del ponte. Un valore "Sì" indica che il tipo di comunicazione pin è KSPIN_COMMUNICATION_BRIDGE. Un valore "No" indica che il tipo di comunicazione pin è un valore KSPIN_COMMUNICATION_Xxx diverso da KSPIN_COMMUNICATION_BRIDGE. Se WDMAud ignora il tipo di comunicazione pin durante la conversione dei parametri del pin ai parametri della riga di mixer, la voce "Pin bridge?" è un trattino (-).

Per tutte le categorie di pin che non vengono visualizzate nelle tabelle precedenti, WDMAud converte i pin di input in linee di mixer di origine con tipi di MIXERLINE_TARGETTYPE_UNDEFINED e componenti di MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED.

Nelle tabelle seguenti viene illustrato il modo in cui WDMAud converte i pin di output (KSPIN_DATAFLOW_OUT) alle linee del mixer di destinazione. Le intestazioni di colonna hanno lo stesso significato della tabella precedente. La prima tabella mostra come i GUID della categoria pin KS del pin di output vengono mappati ai tipi di destinazione MIXERLINE associati.

GUID categoria pin KS Pin bridge? Tipo di destinazione MIXERLINE
KSNODETYPE_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_DESKTOP_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ROOM_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_COMMUNICATION_SPEAKER - MIXERLINE_TARGETTYPE_WAVEOUT
KSCATEGORY_AUDIO - MIXERLINE_TARGETTYPE_WAVEIN
PINNAME_CAPTURE - MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_HEADPHONES - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO - MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_TELEPHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_PHONE_LINE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_DOWN_LINE_PHONE - MIXERLINE_TARGETTYPE_UNDEFINED
KSNODETYPE_ANALOG_CONNECTOR MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_ANALOG_CONNECTOR No MIXERLINE_TARGETTYPE_WAVEIN
KSNODETYPE_SPDIF_INTERFACE MIXERLINE_TARGETTYPE_WAVEOUT
KSNODETYPE_SPDIF_INTERFACE No MIXERLINE_TARGETTYPE_WAVEIN

Nella tabella seguente viene illustrato il mapping dei GUID della categoria pin KS di output ai tipi di componenti MIXERLINE associati.

PCPIN_DESCRIPTOR valori Valori MIXERLINE
GUID categoria pin KS Tipo di componente

KSNODETYPE_SPEAKER

KSNODETYPE_DESKTOP_SPEAKER

KSNODETYPE_ROOM_SPEAKER

KSNODETYPE_COMMUNICATION_SPEAKER

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSCATEGORY_AUDIO

PINNAME_CAPTURE

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

KSNODETYPE_HEADPHONES

KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO

MIXERLINE_COMPONENTTYPE_DST_HEADPHONES

KSNODETYPE_TELEPHONE

KSNODETYPE_PHONE_LINE

KSNODETYPE_DOWN_LINE_PHONE

MIXERLINE_COMPONENTTYPE_DST_TELEPHONE

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSNODETYPE_ANALOG_CONNECTOR

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_DST_SPEAKERS

KSNODETYPE_SPDIF_INTERFACE

MIXERLINE_COMPONENTTYPE_DST_WAVEIN

Per tutte le categorie di pin che non vengono visualizzate nelle tabelle precedenti, WDMAud converte i pin di output nelle linee del mixer di destinazione con tipi di MIXERLINE_TARGETTYPE_UNDEFINED e componenti di MIXERLINE_COMPONENTTYPE_DST_UNDEFINED.

Nelle tabelle precedenti la maggior parte dei GUID della categoria pin KS include nomi KSNODETYPE_Xxx . Questi nomi sono definiti nei file di intestazione Ksmedia.h e Dmusprop.h. (Due partenze da questa convenzione di denominazione sono GUID KSCATEGORY_AUDIO e PINNAME_CAPTURE, definite anche in Ksmedia.h.) Come descritto nei nodi della topologia, KSNODETYPE_Xxx GUID può essere usato anche per designare i tipi di nodo KS. La maggior parte dei GUID KSNODETYPE_Xxx specifica le categorie di pin o i tipi di nodo, ma non entrambi. L'eccezione è KSNODETYPE_SYNTHESIZER, che può specificare una categoria di pin o un tipo di nodo, a seconda del contesto in cui viene usato. Per un elenco di GUID KSNODETYPE_Xxx che rappresentano le categorie di pin, vedere Pin Category Property. Per un elenco di GUID KSNODETYPE_Xxx che rappresentano i tipi di nodo, vedere Nodi topologia audio.

KSCATEGORY_AUDIO è un altro GUID a doppio utilizzo. Può essere usato come GUID della categoria di pin KS o un GUID della categoria di filtro KS, a seconda del contesto. Durante l'installazione del dispositivo, un driver audio registra l'interfaccia del dispositivo nella categoria di filtro KSCATEGORY_AUDIO. Per altre informazioni, vedere Installazione di interfacce dispositivo per un adattatore audio.

Per una categoria di pin di KSNODETYPE_ANALOG_CONNECTOR o KSNODETYPE_SPDIF_INTERFACE, WDMAud deve sapere se il pin è un pin del ponte per tradurre correttamente il pin nell'equivalente della linea di mixer. Ad esempio, un pin S/PDIF (con la categoria pin KSNODETYPE_SPDIF_INTERFACE) viene convertito in uno dei quattro tipi di linee di mixer illustrati nella figura seguente. La traduzione dipende dalla direzione dei dati del pin (in o out) e dal fatto che sia un pin bridge (sì o no), che insieme restituisce quattro tipi possibili di linea di mixer (in+sì, in+no, out+sì e out+no). I quattro tipi di linea di mixer mostrati nella figura rappresentano le coppie inferiori di voci delle tabelle precedenti.

Diagramma che illustra la traduzione dei pin S/PDIF in linee di mixer.

Si noti che due flussi sul lato destro del dispositivo audio nella figura sono in formato S/PDIF e i due flussi a sinistra sono in formato wave. Il dispositivo audio esegue la conversione tra i due formati digitali.

L'applicazione SndVol32 è un client dell'API mixer. L'API mixer converte ogni pin presente nella topologia in una linea mixer di origine o di destinazione, ma la linea potrebbe non essere visualizzata in SndVol32, che riconosce solo un subset dei tipi di componente della linea mixer che il file di intestazione Mmsystem.h definisce per l'API mixer. Per altre informazioni su SndVol32, vedere SysTray e SndVol32.