다음을 통해 공유


토폴로지 핀

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 핀을 믹서 선으로 변환하는 방법을 보여 주는 다이어그램

그림의 오디오 장치 오른쪽에 있는 두 개의 스트림은 S/PDIF 형식이며 왼쪽의 두 스트림은 웨이브 형식입니다. 오디오 디바이스는 두 디지털 형식 간의 변환을 수행합니다.

SndVol32 애플리케이션은 믹서 API의 클라이언트입니다. 믹서 API는 토폴로지에 있는 각 핀을 원본 또는 대상 믹서 라인으로 변환하지만, 선은 SndVol32에 표시되지 않을 수 있습니다. 이 선은 Mmsystem.h가 믹서 API에 대해 정의하는 믹서 라인 구성 요소 형식의 하위 집합만 인식합니다. SndVol32에 대한 자세한 내용은 SysTray 및 SndVol32를 참조하세요.