Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V systému Windows Vista a novějších verzích systému Windows je AudioEndpointBuilder systémová služba, která v systému vytvoří výčet, inicializuje a aktivuje koncové body zvuku. Toto téma obsahuje přehled algoritmu, který používá služba AudioEndpointBuilder.
Služba AudioEndpointBuilder používá algoritmus ke zjišťování a výčtu koncových bodů. Algoritmus byl navržen tak, aby zjednodušil přístup systému k multiplexovaným zařízením (MUXed) a pomohl pracovat s topologiemi, které zahrnují více hostitelských pinů, více mostních pinů, nebo obojí.
V systému Windows XP používal zvukový model termín zvukové zařízení k odkazování na koncepční zařízení ve stromu Plug and Play (PnP). Ve Windows Vista a novějších verzích Windows byl koncept zvukového zařízení přepracovaný tak, aby lépe představoval zařízení, se kterým uživatel fyzicky komunikuje.
S dvěma novými rozhraními API ve Windows Vista, rozhraním MMDevice API a WASAPI můžete k těmto novým zvukovým zařízením přistupovat a manipulovat s nimi. MMDevice API označuje nová zvuková zařízení jako koncové body.
Služba AudioEndpointBuilder monitoruje třídu KSCATEGORY_AUDIO pro příchody a odebrání rozhraní zařízení. Když ovladač zvukového zařízení zaregistruje novou instanci třídy rozhraní KSCATEGORY_AUDIO zařízení, služba AudioEndpointBuilder zjistí oznámení rozhraní zařízení a pomocí algoritmu zkontroluje topologii zvukových zařízení v systému a provede příslušnou akci.
Následující seznam shrnuje, jak funguje algoritmus používaný nástrojem AudioEndpointBuilder:
Vyhledá všechny nepřipojené špendlíky mostu.
Vytvoří koncový bod pro všechny nepřipojené špendlíky mostu. Například když AudioEndpointBuilder najde nepřipojený kolík bridge s identifikátorem GUID kolíku kategorie KSNODETYPE_SPEAKER, vytvoří pro něj koncový bod reproduktoru. Další informace o identifikátorech GUID KSNODETYPE_SPEAKER a dalších GUIDech kategorií pinů najdete v tématu Ksmedia.h v systému WinDDK\<build number>\inc\api.
Nastaví výchozí vlastnosti koncového bodu. Například AudioEndpointBuilder nastaví název, ikonu a form factor.
Určuje, zda existuje cesta z koncového bodu k hostitelskému kolíku, který podporuje pulzní kódovou modulaci (PCM), zvukový kodek 3 (AC3) nebo Windows Media Video (WMV). Pin hostitele je struktura KSPIN s jejím komunikačním členem nastaveným na KSPIN_COMMUNICATION_SINK nebo KSPIN_COMMUNICATION_BOTH. Další informace o struktuře KSPIN naleznete v tématu KSPIN.
Naplní propertystore koncového bodu informacemi o vlastnosti z klíčů registru rozhraní zvukového zařízení.
Nastaví stav koncového bodu. Stav koncového bodu může být jedna z následujících tří hodnot:
Aktivní. To znamená, že cesta existuje, jak je popsáno v kroku 4.
Odpojeno. Pokud zvukové zařízení podporuje detekci konektoru, tento stav značí, že pro koncový bod existuje cesta a konektor se od fyzického konektoru na zvukovém adaptéru odpojí.
Není k dispozici. Tento stav označuje, že cesta nebyla v kroku 4 nalezena a tento koncový bod nepodporuje detekci konektoru.
Nastaví tento koncový bod jako výchozí koncový bod, pokud je zadaný v přidruženém souboru INF.
Po vytvoření výčtu koncových bodů můžou klienti zvukového systému manipulovat přímo pomocí nových rozhraní API systému Windows Vista (jak je uvedeno dříve) nebo nepřímo pomocí známých rozhraní API, jako je Wave, DirectShow nebo DirectSound. Byly poskytnuty nové metody rozhraní API, aby mohli zvuková klienti začít s ID MMDevice koncového bodu a přistupovat k ID Wave nebo DirectSound pro stejný koncový bod.
Pokud používáte koncové body, můžete využít následující výhody:
Stejné globálně jedinečné ID (GUID) je dostupné bez ohledu na to, jak často počítač restartujete. Tento trvalý identifikátor GUID je spolehlivější než uložení ID waveOutu nebo popisného názvu koncového bodu.
Stejný PropertyStore je k dispozici bez ohledu na to, jak často restartujete počítač. Metadata související se zvukovým zařízením se ukládají do úložiště vlastností koncového bodu.
Piny multiplexované (MUX) a demultiplexované (DEMUX) jsou spravovány automaticky a vyjmenovávány službou AudioEndpointBuilder.
Pokud vyvíjíte vlastní ovladač zvukového zařízení a soubor INF pro práci se zvukovým zařízením a vyvíjíte zvukovou aplikaci nebo obojí, je nejlepší vědět o následujících problémech a osvědčených postupech. Při vývoji ovladačů a aplikací s ohledem na tato doporučení vytvoříte ovladače, soubory INF a zvukové klienty, které efektivněji pracují s AudioEndpointBuilder.
Pojmenovací konvence Zásady vytváření názvů používané pro koncové body jsou založené na popisných názvech kolíků mostu. V případě koncových bodů mluvčího je však název pevně zakódovaný na "Reproduktory" a to nemůže změnit ani váš ovladač, ani aplikace třetí strany.
Neoptimální topologie. Některé topologie jsou považovány za neoptimální kvůli algoritmu, který používá AudioEndpointBuilder k vytvoření výčtu koncových bodů. Když například vytvoříte jednu z těchto neoptimálních topologií, vytvoříte hostitelské piny, které mají skryté koncové body, a nelze je zobrazit pomocí nástroje AudioEndpointBuilder, nebo rozdělovače (rozdělené koncové body), které AudioEndpointBuilder nemůže propojit s odpovídajícími hostitelskými piny.
Skryté koncové body
Jak je vidět v následujícím diagramu, filtr KS má dva hostitelské kolíky, které jsou připojené k jednomu kolíku mostu (Reproduktor).
Když AudioEndpointBuilder zjistí tento propojovací kolík, trasuje cestu zpět pouze k jednomu z pinů hostitele, nastaví výchozí hodnoty pro tento kolík, vytvoří a aktivuje koncový bod reproduktoru a pokračuje ve zjišťování dalších propojovacích kolíků. Druhý pin kód hostitele tak zůstává skrytý před AudioEndpointBuilder.
V předchozím diagramu byla problematická topologie přepracována tak, aby AudioEndpointBuilder dokázal rozpoznat dva hostitelské kolíky (PCM a AC-3/ PCM), protože nyní může vidět dva propojovací kolíky (reproduktor a SPDIF).
Rozdělovače
Další typ suboptimální topologie se vytvoří, když se jeden vývod hostitele připojí k více než jednomu vývodu mostu. Následující diagram znázorňuje topologii, ve které se hostitelský kolík PCM připojuje ke kolíku mostu reproduktorového a kolíku mostu SPDIF.
V tomto případě AudioEndpointBuilder zjistí jeden pin přemostění a trasuje cestu zpět k hostitelskému pinu PCM, nastaví výchozí hodnoty a pak vytvoří a aktivuje koncový bod reproduktoru. Když AudioEndpointBuilder zjistí další mostní pin, trasuje cestu zpět ke stejnému hostitelskému pinu PCM, nastaví výchozí hodnoty a pak vytvoří a aktivuje koncový bod SPDIF. Ačkoli se oba koncové body inicializovaly a aktivovaly, streamování do jednoho z nich znemožňuje současné streamování do druhého; jinými slovy, jedná se o vzájemně vylučující se koncové body.
Následující diagram znázorňuje návrh této topologie, ve které existují samostatná připojení. Díky tomuto návrhu může AudioEndpointBuilder vysledovat cestu zpět k hostitelskému pinu PCM pro každý z obou přemostění.
Formát koncového bodu Když je zvukový modul spuštěný ve sdíleném režimu, formát koncového bodu předpokládá konkrétní nastavení, jak je směrováno souborem INF v době instalace. Například zvukový ovladač zvukového zařízení používá přidružený soubor INF k nastavení výchozího koncového bodu na 44,1 kHz, 16bitový stereo PCM formát. Po instalaci musíte ke změně formátu koncového bodu použít Ovládací panely nebo aplikaci třetí strany.
Výchozí zařízení. Koncový bod, který je nastavený jako výchozí zařízení, je vybrán v době instalace pomocí informací v souboru INF. Po dokončení instalace musíte pomocí Ovládacích panelů nebo aplikace třetí strany vybrat jiný koncový bod, který bude výchozím koncovým bodem.
Poznámka Pokud váš soubor INF nevybere koncový bod, který se má nastavit jako výchozí během instalace, klientská aplikace může pomocí rozhraní MMDevice API vybrat koncový bod. Rozhraní API zakládá svůj výběr na pořadí podle formátu a na tom, zda je koncový bod vykreslovací nebo zachycovací. Následující tabulka zobrazuje pořadí výběru.
| Pořadí vykreslování | Hodnocení zachycení |
|---|---|
| Přednášející | Mikrofon |
| Linkový výstup | Zvukový vstup |
| SPDIF | SPDIF |
Pokud použijete rozhraní MMDevice API k výběru výchozího koncového bodu a dostupné koncové body jsou seřazené stejně, rozhraní API MMDevice bude id koncových bodů abecedně určovat, který koncový bod se má vybrat jako výchozí. Pokud má například zvukový adaptér konektory line-out i line-in, a přidružený soubor INF nevybere ani jeden z nich jako výchozí v době instalace, rozhraní MMDevice API identifikuje ID koncových bodů jako první abecedně a nastaví tento konektor jako výchozí. Tento výběr přetrvává po restartování systému, protože ID koncových bodů jsou trvalá. Výběr se ale neuchovává, pokud se v systému zobrazí koncový bod s vyšším hodnocením (například druhý adaptér s konektorem mikrofonu).