다음을 통해 공유


WDMAud 토폴로지 구문 분석

WDMAud 시스템 드라이버는 원본 믹서 라인을 구문 분석하기 전에 먼저 대상 믹서 선을 구문 분석합니다. WDMAud가 대상 줄을 구문 분석하는 순서는 SysAudio가 선을 검색하는 순서와 반대입니다. 예를 들어 번호가 매겨진 핀이 먼저 구문 분석됩니다. 구문 분석은 핀의 바로 부모에서 시작하여 업스트림 방향으로 이동합니다. 각 노드는 파서가 다음 종료 조건 중 하나를 검색할 때까지 이러한 규칙에 따라 변환됩니다.

  • 구문 분석 중인 현재 노드는 SUM 노드입니다.

  • 현재 노드는 MUX 노드입니다.

  • 현재 노드에는 여러 부모가 있습니다.

SUM 및 MUX 노드는 대상 줄의 클래식 종결자 입니다. SUM 노드는 컨트롤을 생성하지 않습니다. MUX 노드는 대상 줄에 MUX로 제어되는 각 소스 줄에 대한 참조를 포함하는 MUX 컨트롤을 생성합니다.

여러 부모가 검색되면 구문 분석이 즉시 종료됩니다. 믹서 라인 드라이버는 이 조건을 여러 입력을 함께 연결하여 형성된 "가상 합계"로 해석합니다.

대상 줄의 이름은 해당 핀의 KSPROPERTY_PIN_NAME 속성에서 반환된 이름에서 가져옵니다.

모든 대상 줄 컨트롤이 번역된 후 WDMAud는 원본 줄 번역을 시작합니다. 다시 말하지만, WDMAud가 이러한 줄을 구문 분석하는 순서는 SysAudio에서 쿼리하는 순서의 반대입니다. 또한 원본 줄을 구문 분석하는 방향은 대상 줄을 구문 분석하는 방향과 반대입니다. WDMAud는 핀에서 시작하여 다음 종료 조건 중 하나를 감지할 때까지 다운스트림 방향으로 진행하는 각 줄을 구문 분석합니다.

  • 파서는 대상 줄을 찾습니다.

  • 번역되는 현재 노드는 대상 줄에 속합니다.

  • 현재 노드는 SUM 노드입니다.

  • 현재 노드는 MUX 노드입니다.

대상 줄에 속하는 원본 줄을 구문 분석하는 동안 MUX가 발견되면 컨트롤로 변환됩니다. 그러나 나중에 대상 줄에 저장된 MUX의 줄 번호를 업데이트하는 자리 표시자로만 사용됩니다. 현재 최종 줄 번호를 사용할 수 없으므로 자리 표시자가 필요합니다.

MUX와 SUM 노드는 모두 원본 줄을 종료합니다. 따라서 SUM 또는 MUX와 다른 SUM 또는 MUX 간의 노드는 변환되지 않습니다.

노트

  1. MUX에 공급되는 줄이 SUM 또는 MUX 노드에서 온 경우를 제외하고 MUX의 줄 이름은 줄의 핀 이름에서 파생됩니다. 이 경우 줄의 이름은 MUX 또는 SUM 노드의 이름입니다. 믹서 드라이버가 이를 검색하면 SUM 또는 MUX 노드의 이름으로 가상 믹서 라인을 빌드한 다음 SUM 또는 MUX와 MUX 간의 모든 컨트롤을 변환합니다.

  2. 토폴로지의 분할 은 노드에 하나 이상의 자식이 있는 경우입니다. 이는 단일 핀이 두 개의 개별 대상으로 라우팅되지만 볼륨 또는 음소거와 같은 몇 가지 일반적인 컨트롤을 공유하는 경우에 유용합니다. 분할이 발생할 때마다 WDMAud 드라이버는 새 줄을 만들고 분할까지 구문 분석된 모든 컨트롤을 복제합니다. 소스 줄을 종료하는 SUM 노드가 발생한 후에도 분할이 발생할 때마다 무조건적으로 발생합니다.