토폴로지 핀
WDMAud 시스템 드라이버는 KS 필터의 토폴로지 핀을 믹서 API가 애플리케이션에 노출하는 원본 및 대상 믹서 라인으로 변환합니다. 입력(싱크) 핀은 소스 믹서 선이 되고 출력(원본) 핀은 대상 믹서 선이 됩니다.
핀 팩터리에 설명된 대로 미니포트 드라이버는 핀 설명자 배열을 제공하며, 각각은 필터에 속하는 핀 팩터리를 설명하는 PCPIN_DESCRIPTOR 형식의 구조입니다. 각 핀 설명자에는 다음 정보가 포함됩니다.
데이터 흐름 방향 지정자
데이터 스트림이 핀을 통해 필터를 입력(KSPIN_DATAFLOW_IN) 또는 종료(KSPIN_DATAFLOW_OUT)하는지 여부를 나타냅니다.
KS 핀 범주 GUID
핀이 속한 핀 범주를 나타냅니다. 예를 들어 오디오 재생 디바이스에서 한 핀은 웨이브 형식의 디지털 오디오 스트림을 수락할 수 있으며 다른 핀은 스피커를 구동하는 아날로그 오디오 신호를 생성할 수 있습니다. 미니포트 드라이버는 이러한 두 가지 유형의 핀을 고유한 핀 범주에 속하는 것으로 식별합니다.
통신 유형 지정자
핀이 지원하는 IRP 통신 유형을 나타냅니다. IRP 통신을 지원하는 핀은 IRP 싱크(KSPIN_COMMUNICATION_SINK), IRP 원본(KSPIN_COMMUNICATION_SOURCE) 또는 둘 다(KSPIN_COMMUNICATION_BOTH)일 수 있습니다. IRP 통신을 지원하지 않는 핀은 KS 필터 그래프(KSPIN_COMMUNICATION_NONE) 내에 있거나 그래프(KSPIN_COMMUNICATION_BRIDGE)의 엔드포인트에 있는 브리지 핀 일 수 있습니다.
브리지 핀에 대한 자세한 내용은 오디오 필터 그래프를 참조하세요.
WDMAud는 미니포트 드라이버의 핀 설명자에서 다음 정보를 포함하는 MIXERLINE 형식의 구조인 믹서 라인 설명자로 정보를 변환합니다.
믹서 라인 구성 요소 유형
믹서 선이 원본 또는 대상 선인지 여부를 나타내며 믹서 선의 일반 함수도 나타냅니다. 예를 들어 웨이브 출력(렌더링) 스트림에서 생성된 아날로그 신호를 전달하여 헤드폰 세트를 구동하는 믹서 라인의 구성 요소 유형은 MIXERLINE_COMPONENTTYPE_DST_HEADPHONES.
믹서 라인 대상 유형
믹서 라인이 전송하는 데이터 스트림의 형식을 나타냅니다. 예를 들어 웨이브 출력(렌더링) 스트림의 대상 형식은 MIXERLINE_TARGETTYPE_WAVEOUT 웨이브 입력(캡처) 스트림의 대상 형식은 MIXERLINE_TARGETTYPE_WAVEIN.
자세한 내용은 SDK 설명서의 MIXERLINE 구조를 참조하세요.
다음 두 표에서는 WDMAud가 입력(KSPIN_DATAFLOW_IN) 핀 소스 믹서 라인을 변환하는 방법을 보여 줍니다.
첫 번째 표에서는 입력 핀 KS 핀 범주 GUID(PCPIN_DESCRIPTOR 값)가 연결된 MIXERLINE 대상 형식에 매핑되는 방법을 보여 줍니다.
KS 핀 범주 GUID | 브리지 핀? | 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 | Yes | MIXERLINE_TARGETTYPE_WAVEIN |
KSNODETYPE_ANALOG_CONNECTOR | No | MIXERLINE_TARGETTYPE_WAVEOUT |
KSNODETYPE_SPDIF_INTERFACE | Yes | MIXERLINE_TARGETTYPE_WAVEIN |
KSNODETYPE_SPDIF_INTERFACE | No | MIXERLINE_TARGETTYPE_WAVEOUT |
다음 표에서는 입력 핀 KS 핀 범주 GUID가 연결된 MIXERLINE 구성 요소 형식에 매핑되는 방법을 보여 줍니다.
PCPIN_DESCRIPTOR 값 | MIXERLINE 값 |
---|---|
KS 핀 범주 GUID | 구성 요소 유형 |
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 |
앞의 표에서 왼쪽 열은 핀의 PCPIN_DESCRIPTOR 구조에서 핀 범주 GUID를 지정하고 오른쪽 열은 MIXERLINE 구조체에 해당하는 대상 형식 및 구성 요소 유형을 지정합니다.
"브리지 핀"이라는 레이블이 지정된 열의 항목은 핀이 브리지 핀인지 여부를 나타냅니다. "예"는 핀 통신 유형이 KSPIN_COMMUNICATION_BRIDGE 의미합니다. "아니요"는 핀 통신 유형이 KSPIN_COMMUNICATION_BRIDGE 이외의 KSPIN_COMMUNICATION_Xxx 값임을 의미합니다. 핀 매개 변수를 믹서 라인 매개 변수로 변환할 때 WDMAud가 핀 통신 유형을 무시하는 경우 "브리지 핀?" 항목은 대시(-)입니다.
앞의 표에 표시되지 않는 모든 핀 범주의 경우 WDMAud는 입력 핀을 대상 형식의 MIXERLINE_TARGETTYPE_UNDEFINED 및 구성 요소 유형의 MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED 있는 소스 믹서 선으로 변환합니다.
다음 표에서는 WDMAud가 출력(KSPIN_DATAFLOW_OUT) 핀을 대상 믹서 선으로 변환하는 방법을 보여 줍니다. 열 머리글은 이전 표와 동일한 의미를 갖습니다. 첫 번째 표에서는 출력 핀 KS 핀 범주 GUID가 연결된 MIXERLINE 대상 형식에 매핑되는 방법을 보여 줍니다.
KS 핀 범주 GUID | 브리지 핀? | 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 | Yes | MIXERLINE_TARGETTYPE_WAVEOUT |
KSNODETYPE_ANALOG_CONNECTOR | No | MIXERLINE_TARGETTYPE_WAVEIN |
KSNODETYPE_SPDIF_INTERFACE | Yes | MIXERLINE_TARGETTYPE_WAVEOUT |
KSNODETYPE_SPDIF_INTERFACE | No | MIXERLINE_TARGETTYPE_WAVEIN |
다음 표에서는 출력 핀 KS 핀 범주 GUID가 연결된 MIXERLINE 구성 요소 유형에 매핑되는 방법을 보여 줍니다.
PCPIN_DESCRIPTOR 값 | MIXERLINE 값 |
---|---|
KS 핀 범주 GUID | 구성 요소 유형 |
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 |
앞의 표에 표시되지 않는 모든 핀 범주의 경우 WDMAud는 출력 핀을 대상 유형의 MIXERLINE_TARGETTYPE_UNDEFINED 및 구성 요소 유형의 MIXERLINE_COMPONENTTYPE_DST_UNDEFINED 있는 대상 믹서 라인으로 변환합니다.
앞의 표에서 대부분의 KS 핀 범주 GUID에는 KSNODETYPE_Xxx 이름이 있습니다. 이러한 이름은 헤더 파일 Ksmedia.h 및 Dmusprop.h에 정의되어 있습니다. (이 명명 규칙에서 두 가지 출발은 GUID KSCATEGORY_AUDIO 및 PINNAME_CAPTURE Ksmedia.h에도 정의되어 있습니다.) 토폴로지 노드에 설명된 대로 KSNODETYPE_Xxx GUID를 사용하여 KS 노드 형식을 지정할 수도 있습니다. 대부분의 KSNODETYPE_Xxx GUID는 핀 범주 또는 노드 유형을 지정하지만 둘 다 지정하지는 않습니다. 사용되는 컨텍스트에 따라 핀 범주 또는 노드 유형을 지정할 수 있는 KSNODETYPE_SYNTHESIZER 예외입니다. 핀 범주를 나타내는 KSNODETYPE_Xxx GUID 목록은 범주 속성 고정을 참조하세요. 노드 유형을 나타내는 KSNODETYPE_Xxx GUID 목록은 오디오 토폴로지 노드를 참조하세요.
KSCATEGORY_AUDIO 또 다른 이중 사용 GUID입니다. 컨텍스트에 따라 KS 핀 범주 GUID 또는 KS 필터 범주 GUID로 사용할 수 있습니다. 디바이스를 설치하는 동안 오디오 드라이버는 필터 범주 KSCATEGORY_AUDIO 디바이스 인터페이스를 등록합니다. 자세한 내용은 오디오 어댑터용 디바이스 인터페이스 설치를 참조하세요.
KSNODETYPE_ANALOG_CONNECTOR 또는 KSNODETYPE_SPDIF_INTERFACE 핀 범주의 경우 WDMAud는 핀이 핀을 믹서 라인과 동등한 값으로 올바르게 변환하는 브리지 핀인지 여부를 알아야 합니다. 예를 들어 핀 범주가 KSNODETYPE_SPDIF_INTERFACE S/PDIF 핀은 다음 그림에 표시된 네 가지 믹서 라인 유형 중 하나로 변환됩니다. 변환은 핀의 데이터 방향(인 또는 아웃)과 브리지 핀(예 또는 아니요)에 따라 달라지며, 이는 가능한 4가지 유형의 믹서 선(in+yes, in+no, out+yes 및 out+no)을 함께 생성합니다. 그림에 표시된 4개의 믹서 라인 형식은 앞의 표에서 항목의 아래쪽 쌍을 나타냅니다.
그림의 오디오 장치 오른쪽에 있는 두 개의 스트림은 S/PDIF 형식이며 왼쪽의 두 스트림은 웨이브 형식입니다. 오디오 디바이스는 두 디지털 형식 간의 변환을 수행합니다.
SndVol32 애플리케이션은 믹서 API의 클라이언트입니다. 믹서 API는 토폴로지에 있는 각 핀을 원본 또는 대상 믹서 라인으로 변환하지만, 선은 SndVol32에 표시되지 않을 수 있습니다. 이 선은 Mmsystem.h가 믹서 API에 대해 정의하는 믹서 라인 구성 요소 형식의 하위 집합만 인식합니다. SndVol32에 대한 자세한 내용은 SysTray 및 SndVol32를 참조하세요.