Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Windows 10 enthält die Möglichkeit, Parallelitätseinschränkungen mithilfe einer XML-Datei auszudrücken. Auf ressourceneinschränkten Geräten kann die Möglichkeit zum Angeben der Priorität für bestimmte Audiodatenströme die Kundenerfahrung verbessern.
Eine Herausforderung beim Erstellen einer guten Audioerfahrung auf einem kostengünstigen Laptop- oder Tabletgerät besteht darin, dass einige Geräte verschiedene Parallelitätseinschränkungen aufweisen. Beispielsweise ist es möglich, dass das Gerät nur bis zu 6 Audiodatenströme gleichzeitig wiedergeben kann und nur 2 Auslagerungsstreams unterstützt. Wenn es einen aktiven Videoanruf mit Echtzeitaudio gibt, ist es möglich, dass das Gerät nur 2 Audiodatenströme unterstützt. Wenn das Gerät Audio erfasst, kann das Gerät nur bis zu 4 Audiodatenströme wiedergeben.
Windows 10 enthält einen Mechanismus zum Ausdrücken von Parallelitätseinschränkungen, um zu versichern, dass Audiodatenströme mit hoher Priorität wiedergegeben werden können. Wenn das System nicht über genügend Ressourcen verfügt, werden Datenströme mit niedriger Priorität beendet.
Windows 11 bietet zusätzliche Funktionen mit der Verwendung von Ressourcengruppen und wird weiter unten in diesem Thema in Ressourcengruppen behandelt – erweiterte Audioressourcenverwaltung.
Führen Sie diese beiden Schritte aus, um Einschränkungen anzugeben.
- Erstellen Sie eine XML-Datei mit Parallelitätseinschränkungen, wie in "Parallelitätseinschränkungen angeben" beschrieben.
- Konfigurieren Sie einen Registrierungseintrag, um die XML-Datei für benutzerdefinierte Parallelitätseinschränkungen zu verwenden, wie in der Registrierungsschlüsselkonfiguration beschrieben.
Festlegen von Einschränkungen für Gleichzeitigkeitressourcen
Die XML-Einschränkungsdatei besteht aus drei Abschnitten. Der erste erforderliche Abschnitt wird durch <Limits></Limits> definiert. Dieser Abschnitt kann verwendet werden, um bis zu fünfzehn Ressourcenbeschränkungen zu definieren. Sie können z. B. Einschränkungen für die maximale Anzahl von Renderingdatenstrom und die maximale Anzahl von Datenströmen definieren, die ausgeladen werden können.
<?xml version="1.0" encoding="utf-8"?>
<ConstraintModel>
<Limits>
<Resource>
<ID>MaxRender</ID>
<Consumption>6</Consumption>
</Resource>
<Resource>
<ID>MaxOffLoad</ID>
<Consumption>2</Consumption>
</Resource>
...
</Limits>
Im nächsten Abschnitt der XML-Datei wird eine oder mehrere Listen exklusiver Endpunkte definiert, wobei jede Liste zwei oder mehr Endpunkte enthält. Dies sind Endpunkte, die nicht gleichzeitig aktiv sein können. Dieser Abschnitt ist optional.
Wenn die Audiohardware z. B. sowohl HandsetSpeaker als auch WiredHeadsetSpeaker mit demselben DAC verkabelt hat, der nicht gleichzeitig aktiv sein kann, sollte dies in derselben ExclusiveEndpoints-Liste enthalten sein.
In diesem Abschnitt können mehrere <ExclusiveEndpoints-Knoten> vorhanden sein. Jeder ExclusiveEndpoints-Knoten enthält zwei oder mehr Endpunktknoten. Jeder Endpunktknoten enthält HWID, TopologyName und PinId.
<ExclusiveEndpoints>
<Endpoint>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
</Endpoint>
<Endpoint>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetSpeaker</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
</Endpoint>
</ExclusiveEndpoints>
Im nächsten Abschnitt der XML-Datei werden verschiedene Ressourcenverbraucher definiert. Dieser Abschnitt der Datei enthält mehrere <ResourceConsumer-Einträge> . Jeder Eintrag identifiziert Informationen zu einem Ressourcenverbraucher und der zugehörigen Ressourcenverwendung. Jede ressource, die verwendet wird, muss zuvor im <Abschnitt "Limits"> definiert werden.
<ResourceConsumer>
<!-- Active Phone call -->
<ConsumerInfo>
<PhoneCall>
<CallState>Active</CallState>
</PhoneCall>
</ConsumerInfo>
<Resource>
<ID>MaxRender</ID>
<Consumption>2</Consumption>
</Resource>
<Resource>
<ID>MaxOffLoad</ID>
<Consumption>2</Consumption>
</Resource>
...
</ResourceConsumer>
Wenn Audioressourcen verwendet werden, verfolgt der Audiodienst die Ressourcen. Wenn nicht genügend Ressourcen verfügbar sind, werden datenströme mit niedrigerer Priorität beendet, oder die aktuelle Ressourcenanforderung schlägt fehl, wenn vorhandene Ressourcenverbraucher höhere Priorität haben.
Dies sind die gültigen <ConsumerInfo-Einträge> .
<PhoneCall – Der <PhoneCall-Knoten>> enthält einen untergeordneten CallState-Knoten, der "Aktiv" oder "Hold" sein kann.
<Stream> – Audiodatenströme. Der <Stream-Knoten> enthält die folgenden untergeordneten Knoten.
<HWID: Die Hardware-ID (hw-id) des Ressourcenanwenders, wie in der INF-Datei des Treibers angegeben.
<TopologyName> - Die Topologiefilter-Referenzzeichenfolge des Ressourcenverbrauchers.
<PinId> – Die Pin-ID des Ressourcenanwenders.
<Modus> - Die GUID des zugeordneten Modus. Weitere Informationen finden Sie unter Audiosignalverarbeitungsmodi.
<ConnectorType> – Der Connectortyp des Ressourcenverbrauchers. Gültige Werte sind: Host, Loopback oder Offload.
<KeywordDetector> – Schlüsselwortdetektor, der zur Unterstützung von Sprachinteraktionen mit Schlüsselworttriggern verwendet wird.
In der folgenden Tabelle werden die Prioritäten des Renderaudiodatenstroms zusammengefasst, die von der höchsten bis zur niedrigsten Priorität aufgeführt sind.
| Rendern eines Audiodatenstroms | Priorität |
|---|---|
| Kommunikationen | 1 |
| Spielechat | 2 |
| Bildschirmausleser | 3 |
| Kameraverschluss | 4 |
| Drücken um zu Sprechen | 5 |
| Anrufbenachrichtigung im Gespräch | 6 |
| Persönlicher Assistent | 6 |
| Rede | 7 |
| Klingelton | 8 |
| Alarm | 9 |
| Film | 10 |
| Nur Vordergrundmedien | 10 |
| Hintergrundfähige Medien | 11 |
| Medien | 11 |
| Soundeffekte | 12 |
| MFV | 12 |
| Spielemedien | 12 |
| System | 12 |
| Spieleffekte | 12 |
| Andere | 13 |
| Alarmsignale | 14 |
In der folgenden Tabelle sind die Prioritäten für den Aufnahmedatenstrom zusammengefasst, die von der höchsten bis zur niedrigsten Priorität aufgelistet sind.
| Audiodatenstrom aufnehmen | Priorität |
|---|---|
| Kommunikationen | 1 |
| Spielechat | 2 |
| Drücken um zu Sprechen | 4 |
| Persönlicher Assistent | 6 |
| Rede | 7 |
| Hintergrundfähige Medien | 8 |
| Medien | 8 |
| Andere | 13 |
| Spielemedien | 15 |
| Bildschirmausleser | 15 |
| Alarmsignale | 15 |
| Nur Vordergrundmedien | 15 |
| Spieleffekte | 15 |
| Soundeffekte | 15 |
| MFV | 15 |
| Anrufbenachrichtigung im Gespräch | 15 |
| Alarm | 15 |
| Kameraverschluss | 15 |
| Film | 15 |
| Klingelton | 15 |
| System | 15 |
Beispiele
Beispiel 1: Der Benutzer spricht über Skype, wobei Kommunikationsrender- und Aufnahmedatenströme verwendet werden. Sie starten ein Spiel, das versucht, einen Game Effects-Stream zu erstellen. Wenn nicht genügend Ressourcen verfügbar sind, schlägt die Erstellung des Spieleffektestreams fehl.
Beispiel 2: Der Benutzer spielt Musik ab. Sie starten eine Anwendung, die einen Sprachdatenstrom erstellt. Wenn nicht genügend Ressourcen verfügbar sind, wird der Musikstream beendet, und der Sprachstream wird erfolgreich erstellt.
Option "Wildcard" für "TopologyName"
Eine Wildcardoption ist für die Verwendung mit dem TopologyName-Tag verfügbar. Dieses Feature kann verwendet werden, um das dynamische Verhalten zu unterstützen, das mit Sideband Bluetooth verknüpft ist. Mit dieser Option kann der Audiotreiber einen neuen Satz von Schnittstellen für jedes gekoppelte Bluetooth-Peripheriegerät erstellen, das einem bestimmten Muster entspricht. Dadurch werden die Benutzereinstellungen für unterschiedliche Audioperipheriegeräte nicht miteinander gemischt.
Dazu empfiehlt es sich, die Hardware-ID der Peripheriegeräte zur Referenzzeichenfolge der Audioschnittstelle hinzuzufügen. Dies kann mithilfe eines Hashs der symbolischen Verbindung für das Peripheriegerät erreicht werden. Der Sysvad-Beispielcode des Audiotreibers enthält Beispielimplementierungen für HFP-Sideband, A2DP-Sideband und USB-Sideband. Die Beispielfunktionen heißen "CreateFilterNames". Diese Funktion hasht die symbolische Verknüpfung und kombiniert diese mit den Filternamen, um die eindeutigen Filternamen für jedes Peripheriegerät zu generieren.
Die RESSOURCEN-XML-Definitionen sind Teil des Treiberpakets, und die Hardware-IDs sind zum Zeitpunkt der Erstellung unbekannt.
Zur Unterstützung dieses dynamischen Abgleichs wird ein Sternchen "*" als Platzhalter für das letzte Zeichen in der Ressourcen-XML-Deklaration des Topologienamens bereitgestellt.
Beispiel für Wildcard-Topologiename
Die tatsächliche Schnittstellenreferenzzeichenfolge könnte beispielsweise "BTHFPCapture-00AABBCCDD" sein, und der entsprechende Eintrag in der Ressourcen-XML wäre <TopologyName>BTHFPCapture-*</TopologyName>.
Alle vom Treiber nach dem Muster "BTHFPCapture-*" erstellten Endpunkte würden dieselbe Ressourcendefinition verwenden.
Ressourcengruppen – Erweiterte Audioressourcenverwaltung
Ressourcengruppen sind ab Windows 11 verfügbar. Ressourcengruppen ermöglichen das Zuweisen von Endpunkten zu verschiedenen in XML vordefinierten Ressourcengruppen. Ressourcengruppen ermöglichen es Audioressourcen, z. B. Datenströme, gemäß definierten Grenzwerten zuzuordnen.
Bevor Datenströme erstellt werden, bestimmt der Ressourcen-Manager der Audiohardware, welche Ressourcengruppe verwendet werden soll, und benachrichtigt den Treiber der zugewiesenen Gruppe. Wenn der Ressourcen-Manager für Audiohardware einen Konflikt erkennt, wird das Rendern des Datenstroms mit der höchsten Priorität auf den Endpunkt mit der höchsten Priorität (der aktuelle Standard) der bevorzugten Ressourcengruppe zugewiesen, und Datenströme mit niedrigerer Priorität erhalten die nächste verfügbare Ressourcengruppe. Dieser Vorgang wird wiederholt, bis keine weiteren Datenströme oder keine weiteren Ressourcen vorhanden sind. Wenn Ressourcen erschöpft sind, gibt die Erstellung des/der Datenströme mit der niedrigsten Priorität einen Fehler zurück, der angibt, dass nicht genügend Ressourcen vorhanden sind.
Wenn die Ressourcengruppe zugewiesen ist, wird der Audioendpunkt über die zugeordnete Ressourcengruppe benachrichtigt. Die Ressourcen-XML deklariert, welche Ressourcengruppen auf den Endpunkt anwendbar sind, in Reihenfolge der Priorität/Einstellung, und der Endpunkt kann nach Bedarf zwischen den unterstützten Ressourcengruppen verschoben werden, um die allgemeinen Systemressourcenanforderungen zu erfüllen.
Ohne Ressourcengruppen geht das Ressourcenverwaltungssystem in Versionen vor Windows 11 davon aus, dass Hardwareressourcen begrenzt sind, diese Ressourcen können jedoch frei über die Audioendpunkte (DSP MIPS) verschoben werden. Das System kann z. B. bis zu drei Auslagerungsstreams, einen Kommunikationsdatenstrom und jeweils einen Sprachstream für eine beliebige Kombination von Audioendpunkten erstellen. Wenn Ressourcen deklariert und verwendet werden, stammen sie alle aus einem einzigen Pool. Dies kann so betrachtet werden, dass eine einzelne Ressourcengruppe über alle Audioendpunkte hinweg geteilt wird. Da nur eine Ressourcengruppe vorhanden war, musste der Treiber nicht benachrichtigt werden, welche Gruppe verwendet wurde.
Beispielszenario für Ressourcengruppen
Wenn ein Treiber beispielsweise über zwei Audioendpunkte und zwei getrennte Pfade zum Rendern von Audio verfügt, eine über einen DSP und einen ohne DSP. Entweder Weg kann im Voraus für jeden Endpunkt ausgewählt werden, aber der Endpunkt, der zur Verwendung des DSP zugewiesen ist, hat die exklusive Nutzung des DSP, und alle Audiodaten für diesen Endpunkt müssen über den DSP laufen. d. h. zwischen diesen beiden Pfaden besteht kein Mischen von Audio.
Der DSP hätte andere Ressourceneinschränkungen und -funktionen als der Endpunkt ohne den DSP. Das Austauschen der Ressourcen zwischen den beiden Endpunkten erfordert, dass alle Audiodaten auf beiden Endpunkten beendet werden, die Hardware neu zugewiesen und dann die Audiowiedergabe fortgesetzt werden kann. Da die Entscheidung darüber, ob der DSP verwendet werden soll oder nicht, getroffen werden muss, bevor überhaupt Datenströme auf dem Endpunkt erstellt werden, muss sie außerhalb des Treibers getroffen werden. Im Falle eines Konflikts, bei dem zwei Anwendungen gleichzeitig ein DSP-Feature benötigen, werden Ressourcengruppen verwendet, um zu entscheiden, welchem Endpunkt welche Ressource zugewiesen wird.
Jede Ressourcengruppe wird mit einer eigenen Gruppe von Ressourcen erstellt, kann aber auch optional die global freigegebenen Ressourcen verwenden. Beispielsweise kann DSPGroup definiert werden, um zwei Offloadstreams und einen Host-Sprachstream zuzulassen, während NoDSPGroup nur einen Offloadstream und keine Host-Sprachstreams zulässt. Diese Definition würde es ermöglichen, dass bis zu drei Offload-Streams gleichzeitig aktiv sind. Es kann auch ein systemweites Maximum von bis zu zwei Offloadstreams gleichzeitig geben, die sowohl für DSPGroup als auch für NoDSPGroup freigegeben werden.
Wenn ein Datenstrom erstellt wird, wird er entweder DSPGroup oder NoDSPGroup zugewiesen, basierend auf dem Typ des zu erstellenden Datenstroms und der Priorität des Datenstroms und des Endpunkts. Wenn der erstellte Datenstrom ausgelagert wird, wird ihm DSPGroup zugewiesen, wenn nicht, kann er entweder DSPGroup oder NoDSPGroup zugewiesen werden.
Während einer Gruppe ein Endpunkt zugewiesen ist, sind alle Datenströme auf diesen Endpunkt auf die Datenstromressourcen beschränkt, die der Gruppe zugeordnet sind. Beispielsweise stehen maximal zwei Offloadstreams zur Verfügung, wenn einem Endpunkt DSPGroup zugewiesen ist.
Es kann festgestellt werden, dass ein Endpunkt aufgrund der Priorität von Datenströmen von einer Gruppe zu einer anderen Gruppe wechseln muss. Wenn beispielsweise der erste Offload-Datenstrom auf einem Lautsprecherendpunkt erstellt wurde und ein neuer Offload-Datenstrom auf dem Headset-Endpunkt erstellt wird und nur eine DSPGroup-Ressourcengruppe verfügbar ist, muss die DSPGroup-Ressource vom Lautsprecherendpunkt zum Headsetendpunkt neu zugeordnet werden. Hierzu werden alle DSPGroup-Streams des Lautsprechers ungültig. DSPGroup würde dann dem Headset-Endpunkt und dem erstellten Offloaddatenstrom zugewiesen. Nach der Ungültigmachung des Streams, der von den ungültig gemachten Apps neu erstellt wurde, ist die Offload-Funktion nicht mehr verfügbar, da sie eine niedrigere Priorität haben als der bestehende Nutzer des Headset-Endpunkt-Offloads. NoDSPGroup wird dem Sprecherendpunkt zugewiesen, und Datenströme sind auf die Ressourceneinschränkungen des Sprecherendpunkts beschränkt, z. B. maximal sechs Hoststreams im System.
Das beschriebene Beispiel ist vereinfacht. Das System ermöglicht eine beliebige Anzahl von Gruppen, die für eine beliebige Anzahl von Endpunkten freigegeben werden. So könnten beispielsweise drei Endpunkte vorhanden sein, die zwei leistungsfähige DSPs und einen eingeschränkten DSP gemeinsam nutzen, oder fünf Endpunkte, die zwei DSPs und drei Softwarepfade gemeinsam nutzen.
Beispielressourcengruppen-XML
In diesem XML-Beispielsegment werden zwei Ressourcengruppen definiert: DSPGroup und NoDSPGroup.
<Limits>
<Resource>
<ID>DataBus</ID>
<Consumption>8</Consumption>
</Resource>
<ResourceGroup Name="DSPGroup">
<Consumption>1</Consumption>
<Resource>
<ID>MaxOffload</ID>
<Consumption>3</Consumption>
</Resource>
<Resource>
<ID>DspMaxLoopback</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceGroup>
<ResourceGroup Name="NoDSPGroup">
<Consumption>2</Consumption>
<Resource>
<ID>MaxHost</ID>
<Consumption>2</Consumption>
</Resource>
<Resource>
<ID>MaxLoopback</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceGroup>
</Limits>
Ressourcengruppenzuordnungsverhalten
Beim Start werden vorhandene globale Ressourcen vom externen Ressourcen-Manager zugeordnet. Anschließend verfügt jede Ressourcengruppe über eine Ressource, die dem externen Ressourcen-Manager zugeordnet ist, wobei die Anzahl den maximalen Instanzen dieser Gruppe entspricht.
Zur Laufzeit wird jeder Endpunkt nur einer Ressourcengruppe zugeordnet.
Datenströme auf diesem Endpunkt haben nur Zugriff auf die Ressourcen innerhalb der zugeordneten Ressourcengruppe.
Ressourcen aus dem ursprünglichen global freigegebenen Pool können ebenfalls verwendet werden.
Wenn der erste Datenstrom auf einem Endpunkt erstellt wird, wird die erforderliche Ressourceneinschränkung für Endpunkte abgerufen. Wenn der letzte Datenstrom auf dem Endpunkt geschlossen wird, wird die Einschränkung freigegeben.
Wenn einem Endpunkt eine Ressourcengruppe zugewiesen wird, muss er über die zugeordnete Ressourcengruppe benachrichtigt werden.
Die zugewiesene Ressourcengruppe hängt von der Priorität der Ressourcengruppenanforderungen für die derzeit aktiven Datenströme und die Verfügbarkeit ab.
Wenn die Einschränkung der Endpunktressource abgerufen wird, sind die Datenströme auf die globalen Datenstromressourcen und die Datenstromressourcen innerhalb der erworbenen Ressourcengruppe beschränkt. Sie können eine Ressource, die in einer anderen Gruppe verfügbar ist, nicht erwerben.
Ressourcen, die Teil der Ressourcengruppe sind, werden nur vom Endpunkt verwendet, dem derzeit die Ressourcengruppe zugewiesen ist.
Ressourcengruppen können optional zusätzliche gruppenspezifische Ressourcen enthalten. Eine Ressource wird vom externen Ressourcen-Manager für jede Ressource multipliziert mit der maximalen Instanzenanzahl der Ressourcengruppe zugeordnet.
Wenn die Ressourcengruppenzuordnung geändert wird, werden alle Datenströme am Endpunkt vor der Änderung beendet.
Damit ein Endpunkt von einer Ressourcengruppe zu einer anderen Ressourcengruppe wechselt, müssen alle Datenströme, die Ressourcen aus der anderen Gruppe enthalten, ungültig sein, und beim Erstellen von Datenstroms werden alle neuen Ressourcen aus der neuen Ressourcengruppe abgerufen.
Konfiguration des Registrierungsschlüssels
Der vollständige Pfad zur PARALLELITÄTseinschränkungs-XML-Datei muss im folgenden Registrierungsschlüssel angegeben werden.
HKR\SYSTEM\MultiMedia\DeviceCapability\ResourceSettings\XMLConfig
Der Pfad ist relativ zur Treiberinstallation. In der Treiber-INF-Installation muss die EINSCHRÄNKUNGs-XML-Datei kopiert werden, und die folgende Zeile würde hinzugefügt, um sie beim System zu registrieren:
HKR,SYSTEM\MultiMedia\DeviceCapability\ResourceSettings\XMLConfig,<Name of the constraint>,,<Path to the constraint>
Geben Sie in diesem Registrierungsschlüssel einen Wert an, der den Pfad zum XML-Code enthält. Es wird empfohlen, dass der Name der XML-Datei und des Registrierungsschlüsselwertnamens eindeutig ist, da andere Subsysteme/Audiogeräte ihre eigenen Einschränkungen in XML-Dateien bereitstellen können. Der Registrierungsschlüssel kann in der INF-Datei des Audiotreibers festgelegt werden.
Xml-Einschränkungsdatei (Beispiel)
Dies ist eine Beispieldatei für XML-Einschränkungen aus dem Beispiel für einen virtuellen SYSVAD-Audiotreiber.
<?xml version="1.0" encoding="utf-8"?>
<ConstraintModel>
<Limits>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>3</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>2</Consumption>
</Resource>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>2</Consumption>
</Resource>
<Resource>
<ID>MaxOneLoopback</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>27</Consumption>
</Resource>
</Limits>
<ExclusiveEndpoints>
<Endpoint>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologySpeaker</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
</Endpoint>
<Endpoint>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetS*</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
</Endpoint>
</ExclusiveEndpoints>
<ExclusiveEndpoints>
<Endpoint>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicArray1</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
</Endpoint>
<Endpoint>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetM*</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
</Endpoint>
</ExclusiveEndpoints>
<ResourceConsumer>
<!-- Phone call -->
<ConsumerInfo>
<PhoneCall>
<CallState>Active</CallState>
</PhoneCall>
</ConsumerInfo>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>2</Consumption>
</Resource>
<Resource>
<ID>MaxOneLoopback</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>26</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- Keyword Detector -->
<ConsumerInfo>
<KeywordDetector />
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>2</Consumption>
</Resource>
<!-- Don't include MaxOneRawStreamInPhoneCall
so we can validate Capture stream causing
KD release then PhoneCall releasing Capture
and letting KD acquire -->
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, default mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!--Signal processing mode default-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Communications mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<!--Signal processing mode Communications-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Speech mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{FC1CFC9B-B9D6-4CFA-B5E0-4BB2166878B2}</Mode>
<!--Signal processing mode Speech-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Notification mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{9CF2A70B-F377-403B-BD6B-360863E0355C}</Mode>
<!--Signal processing mode Notification-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Media mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{4780004E-7133-41D8-8C74-660DADD2C0EE}</Mode>
<!--Signal processing mode Media-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Movie mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{B26FEB0D-EC94-477C-9494-D1AB8E753F6E}</Mode>
<!--Signal processing mode Movie-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, raw mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<!--Signal processing mode raw-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, default mode, offload -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!--Signal processing mode default-->
<ConnectorType>Offload</ConnectorType>
<!-- Offload -->
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Media mode, Offload -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{4780004E-7133-41D8-8C74-660DADD2C0EE}</Mode>
<!--Signal processing mode Media-->
<ConnectorType>Offload</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, Movie mode, offload -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{B26FEB0D-EC94-477C-9494-D1AB8E753F6E}</Mode>
<!--Signal processing mode Movie-->
<ConnectorType>Offload</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to speaker, default mode, loopback -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeaker</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!--Signal processing mode default-->
<ConnectorType>Loopback</ConnectorType>
<!-- Loopback -->
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneLoopback</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Communications mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<!--Signal processing mode Communications-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Speech mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{FC1CFC9B-B9D6-4CFA-B5E0-4BB2166878B2}</Mode>
<!--Signal processing mode Speech-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Notification mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{9CF2A70B-F377-403B-BD6B-360863E0355C}</Mode>
<!--Signal processing mode Notification-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Media mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{4780004E-7133-41D8-8C74-660DADD2C0EE}</Mode>
<!--Signal processing mode Media-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Movie mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{B26FEB0D-EC94-477C-9494-D1AB8E753F6E}</Mode>
<!--Signal processing mode Movie-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, default mode, offload -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!-- Offload -->
<ConnectorType>Offload</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Media mode, Offload -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{4780004E-7133-41D8-8C74-660DADD2C0EE}</Mode>
<!--Signal processing mode Media-->
<ConnectorType>Offload</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, Movie mode, offload -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{B26FEB0D-EC94-477C-9494-D1AB8E753F6E}</Mode>
<!--Signal processing mode Movie-->
<ConnectorType>Offload</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to wired headset, default mode, loopback -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologySpeakerHeadset</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!-- Loopback -->
<ConnectorType>Loopback</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneLoopback</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to BT speaker, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyBthHfpSpeaker</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to BT speaker, raw mode, offload -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyBthHfpSpeaker</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<!-- Offload -->
<ConnectorType>Offload</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxTwoOffload</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to BT speaker, default mode, loopback -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyBthHfpSpeaker</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!-- Loopback -->
<ConnectorType>Loopback</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneLoopback</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to handset speaker, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetS*</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to handset speaker, Communications mode, host -->
<ConsumerInfo>
<Stream>
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<TopologyName>TopologyHandsetS*</TopologyName>
<!-- Topology filter reference string-->
<PinId>1</PinId>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<!--Signal processing mode Communications-->
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to handset speaker, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetS*</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream to handset speaker, default mode, loopback -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetS*</TopologyName>
<!-- KSPIN_TOPO_LINEOUT_DEST -->
<PinId>1</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<!-- Loopback -->
<ConnectorType>Loopback</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxThreeRender</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneLoopback</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicIn</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic, communications mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicIn</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode communications-->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic, speech mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicIn</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode speech-->
<Mode>{FC1CFC9B-B9D6-4CFA-B5E0-4BB2166878B2}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic, notification mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicIn</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode notification-->
<Mode>{9CF2A70B-F377-403B-BD6B-360863E0355C}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicIn</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from wired headset mic, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicHeadset</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from wired headset mic, communications mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicHeadset</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode communications-->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from wired headset mic, speech mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicHeadset</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode speech-->
<Mode>{FC1CFC9B-B9D6-4CFA-B5E0-4BB2166878B2}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from wired headset mic, notification mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicHeadset</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode notification-->
<Mode>{9CF2A70B-F377-403B-BD6B-360863E0355C}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from wired headset mic, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicHeadset</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic array, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicArray1</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic array, communications mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicArray1</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode communications-->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic array, speech mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicArray1</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode speech-->
<Mode>{FC1CFC9B-B9D6-4CFA-B5E0-4BB2166878B2}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic array, notification mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicArray1</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode notification-->
<Mode>{9CF2A70B-F377-403B-BD6B-360863E0355C}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from mic array, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyMicArray1</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from BT mic, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyBthHfpMic</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from BT mic, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyBthHfpMic</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from handset mic, default mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetM*</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode default-->
<Mode>{C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from handset mic, communications mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetM*</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode communications-->
<Mode>{98951333-B9CD-48B1-A0A3-FF40682D73F7}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from handset mic, speech mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetM*</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode speech-->
<Mode>{FC1CFC9B-B9D6-4CFA-B5E0-4BB2166878B2}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from handset mic, notification mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetM*</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode notification-->
<Mode>{9CF2A70B-F377-403B-BD6B-360863E0355C}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>2</Consumption>
</Resource>
</ResourceConsumer>
<ResourceConsumer>
<!-- AudioStream from handset mic, raw mode, host -->
<ConsumerInfo>
<Stream>
<!-- Example of h/w id specified in phoneaudiosample.inf -->
<HWID>Root\sysvad_PhoneAudioSample</HWID>
<!-- Topology filter reference string-->
<TopologyName>TopologyHandsetM*</TopologyName>
<!-- KSPIN_TOPO_MIC_ELEMENTS -->
<PinId>0</PinId>
<!--Signal processing mode raw-->
<Mode>{9E90EA20-B493-4FD1-A1A8-7E1361A956CF}</Mode>
<ConnectorType>Host</ConnectorType>
</Stream>
</ConsumerInfo>
<Resource>
<ID>MaxTwoCapture</ID>
<Consumption>1</Consumption>
</Resource>
<Resource>
<ID>MaxOneRawStreamInPhoneCall</ID>
<Consumption>1</Consumption>
</Resource>
</ResourceConsumer>
</ConstraintModel>