Freigeben über


WDMAud-Topologieanalyse

Der WDMAud-Systemtreiber analysiert zuerst Zielmixerlinien, bevor die Quellmixerlinien analysiert werden. Die Reihenfolge, in der WDMAud die Zielzeilen analysiert, entspricht der umgekehrten Reihenfolge, in der SysAudio die Zeilen ermittelt. Beispielsweise werden zuerst die höher nummerierten Pins analysiert. Die Analyse beginnt am unmittelbaren übergeordneten Element des Pins und bewegt sich in die Upstream Richtung. Jeder Knoten wird gemäß diesen Regeln übersetzt, bis der Parser eine der folgenden Beendigungsbedingungen erkennt:

  • Der aktuelle Knoten, der analysiert wird, ist ein SUM-Knoten.

  • Der aktuelle Knoten ist ein MUX-Knoten.

  • Der aktuelle Knoten verfügt über mehrere übergeordnete Elemente.

SUM- und MUX-Knoten sind die klassischen Abschlusszeichen der Zielzeile. Ein SUM-Knoten generiert keine Steuerelemente. Ein MUX-Knoten generiert ein MUX-Steuerelement in der Zielzeile, das Verweise auf jede der vom MUX gesteuerten Quellzeilen enthält.

Wenn mehrere übergeordnete Elemente ermittelt werden, wird die Analyse sofort beendet. Der Mixer-Linientreiber interpretiert diese Bedingung als eine "virtuelle Summe", die durch das Binden mehrerer Eingaben gebildet wird.

Der Name der Zielzeile stammt aus dem Namen, der von der KSPROPERTY_PIN_NAME-Eigenschaft für diese Pin zurückgegeben wird.

Nachdem alle Zielzeilensteuerelemente übersetzt wurden, beginnt WDMAud mit der Übersetzung der Quellzeilen. Auch hier ist die Reihenfolge, in der WDMAud diese Zeilen analysiert, die umgekehrte Reihenfolge der Reihenfolge, in der SysAudio sie abfragt. Außerdem ist die Richtung, in der Quellzeilen analysiert werden, im Gegensatz zu der Richtung, in der Zielzeilen analysiert werden. WDMAud analysiert jede Zeile beginnend mit dem Pin und weiter in der downstream-Richtung, bis eine der folgenden Beendigungsbedingungen erkannt wird:

  • Der Parser findet eine Zielzeile.

  • Der aktuelle Knoten, der übersetzt wird, gehört zu einer Zielzeile.

  • Der aktuelle Knoten ist ein SUM-Knoten.

  • Der aktuelle Knoten ist ein MUX-Knoten.

Wenn beim Analysieren einer Quellzeile, die zu einer Zielzeile gehört, eine MUX gefunden wird, wird sie in ein Steuerelement übersetzt. Es wird jedoch nur als Platzhalter verwendet, um die Zeilennummern in der später in der Zielzeile gespeicherten MUX zu aktualisieren. Die endgültigen Zeilennummern sind zu diesem Zeitpunkt noch nicht verfügbar, sodass ein Platzhalter erforderlich ist.

Sowohl ein MUX- als auch ein SUM-Knoten beenden eine Quellzeile; Daher werden alle Knoten zwischen einer SUMME oder MUX und einer anderen SUMME oder MUX nicht übersetzt.

Notizen

  1. Die Zeilennamen in der MUX werden vom Pinnamen für die Zeile abgeleitet, es sei denn, die Zeile, die in eine MUX einspeist, stammt von einem SUM- oder MUX-Knoten. In diesem Fall ist der Name der Zeile der Name des MUX- oder SUM-Knotens. Wenn der Mixertreiber dies erkennt, erstellt er eine virtuelle Mischerlinie mit dem Namen des SUM- oder MUX-Knotens und übersetzt dann alle Steuerelemente zwischen SUM oder MUX und MUX.

  2. Eine Aufteilung in der Topologie ist ein Fall, in dem ein Knoten mehr als ein einzelnes untergeordnetes Element aufweist. Dies ist nützlich, wenn eine einzelne Pin an zwei separate Ziele weitergeleitet wird, aber einige gemeinsame Steuerelemente wie Volume oder Stummschaltung gemeinsam verwendet. Jedes Mal, wenn eine Aufteilung auftritt, erstellt der WDMAud-Treiber eine neue Zeile und dupliziert alle Steuerelemente, die bis zur Aufteilung analysiert wurden. Dies geschieht bedingungslos, wenn eine Aufteilung auftritt, auch nach einem SUM-Knoten, der eine Quellzeile beendet.