다음을 통해 공유


오디오 믹서 API 변환으로 커널 스트리밍 토폴로지

믹서 API는 오디오 믹서 디바이스에 대한 정보를 검색하는 데 사용되는 Windows 멀티미디어 함수 집합입니다. 믹서 API는 오디오 믹서 라인을 원본 및 대상 줄로 분류합니다. 소스 줄은 오디오 카드 입력(예: CD, 마이크, 라인인 및 웨이브)입니다. 대상 줄은 카드 출력입니다(예: 스피커, 헤드폰, 전화선 및 웨이브 인). 원본 줄이 유효하려면 원본에서 대상으로 가는 고유한 경로가 있어야 합니다. 단일 원본 줄은 둘 이상의 대상에 매핑될 수 있지만 단일 경로보다 더 이상 원본 줄을 대상 줄에 연결할 수 없습니다. 믹서 API에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

오디오 어댑터용 WDM 드라이버는 하드웨어를 통한 데이터 경로 및 해당 경로에서 사용할 수 있는 함수를 나타내는 KS 필터 토폴로지를 노출합니다. WDMAud 시스템 드라이버(Wdmaud.sys 및 Wdmaud.drv 파일)는 KS 필터 토폴로지를 해석하고 믹서 API를 통해 노출되는 해당 원본 및 대상 믹서 라인을 생성해야 합니다. 또한 WDMAud는 믹서 API 호출을 처리하고 어댑터 드라이버에서 관리하는 필터 핀 및 노드에서 해당하는 속성 호출로 변환합니다.

KMixer 시스템 드라이버(Kmixer.sys) 및 SWMidi 시스템 드라이버(Swmidi.sys)는 커널 오디오 스택의 필수 구성 요소입니다. KMixer는 PCM 오디오 스트림을 위한 시스템 전체 오디오 혼합, 비트 깊이 변환, 샘플 속도 변환 및 슈퍼믹스(채널-스피커 구성) 번역을 제공합니다. SWMidi는 MIDI 스트림의 고품질 소프트웨어 합성을 제공합니다. 시스템 오디오 드라이버인 SysAudio(Sysaudio.sys; SysAudio 시스템 드라이버 참조)는 KMixer 및 SWMidi의 기능을 설치된 오디오 어댑터 드라이버와 결합하여 기능적으로 향상된 가상 오디오 디바이스를 형성합니다.

WDMAud는 오디오 스택의 KS 부분과 레거시( WinMM 시스템 구성 요소 참조) 부분 간의 인터페이스를 관리합니다. WDMAud는 SysAudio 가상화된 필터의 핀을 SndVol32와 같은 애플리케이션에 표시되는 레거시 믹서 라인으로 변환합니다. KS 토폴로지에서 믹서 라인으로의 변환은 다음과 같이 수행됩니다.

  • KS 토폴로지의 원본 핀(KSPIN_DATAFLOW_OUT)은 대상 믹서 라인(MIXERLINE_COMPONENTTYPE_DST_XXX)으로 노출됩니다.

  • KS 토폴로지의 싱크 핀(KSPIN_DATAFLOW_IN)은 소스 믹서 라인(MIXERLINE_COMPONENTTYPE_SRC_XXX)으로 노출됩니다.

  • WDMAud는 필터 그래프의 엔드포인트에 있는 원본 핀에서 시작하여 KS 필터 그래프를 안내하고 싱크 핀에 도달할 때까지 데이터 흐름 반대 방향으로 그래프를 트래버스합니다.

  • 순회 중에 발생하는 각 KS 노드에서 지원되는 속성은 소스 믹서 라인의 컨트롤로 노출됩니다.

위의 처음 두 항목에서 KS 원본 및 싱크 핀을 대상 및 원본 믹서 라인에 매핑하는 것은 용어의 차이로 인해 잠재적으로 혼란스러울 수 있습니다. KS에서 디바이스는 싱크(입력) 핀과 원본(출력) 핀이 있는 필터로 래핑됩니다. "sink" 및 "source"라는 용어는 필터가 아니라 두 필터 간의 (일반적으로 버퍼링된) 연결을 나타냅니다.

  • 업스트림 필터의 원본 핀은 연결을 입력하는 데이터 스트림의 원본입니다.

  • 데이터 스트림은 다운스트림 필터의 싱크 핀을 통해 연결을 종료합니다.

반면 믹서 라인 용어는 디바이스 중심입니다.

  • 소스 믹서 선은 디바이스에 들어오는 스트림의 소스입니다.

  • 대상 믹서 라인은 디바이스를 종료하는 스트림의 대상입니다.

또한 KS 용어는 KS 필터의 핀에 할당하는 스트림 흐름 방향에서 다소 일관성이 없습니다. 핀 설명자는 KSPIN_DATAFLOW 열거형 값을 사용하여 방향을 지정합니다.

  • 싱크 핀을 통해 필터에 들어가는 스트림의 방향은 KSPIN_DATAFLOW_IN.

  • 원본 핀을 통해 필터를 종료하는 스트림의 방향은 KSPIN_DATAFLOW_OUT.

"in" 및 "out"의 방향은 분명히 필터 중심인 반면,"싱크"와 "원본"이라는 용어는 연결 중심입니다.

WDMAud에서 사용하는 토폴로지 구문 분석 알고리즘에 대한 자세한 내용은 WDMAud 토폴로지 구문 분석을 참조하세요.

이 섹션에는 다음도 포함됩니다.

토폴로지 핀

토폴로지 노드

SysTray 및 SndVol32

필터 토폴로지 노출