Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In Windows Vista en latere versies van Windows is de AudioEndpointBuilder een systeemservice die de audio-eindpunten in een systeem opsommen, initialiseert en activeert. Dit onderwerp bevat een overzicht van het algoritme dat wordt gebruikt door de AudioEndpointBuilder-service.
De AudioEndpointBuilder-service maakt gebruik van een algoritme om eindpunten te detecteren en op te sommen. Het algoritme is ontworpen om de systeemtoegang tot multiplexed (MUXed) opnameapparaten te vereenvoudigen en om te werken met topologieën die meerdere hostpinnen, meerdere brugpinnen of beide omvatten.
In Windows XP heeft het audiomodel de term audioapparaat gebruikt om te verwijzen naar een conceptueel apparaat in de Plug and Play-structuur (PnP). In Windows Vista en latere versies van Windows is het concept van een audioapparaat opnieuw ontworpen om het apparaat waarmee de gebruiker fysiek communiceert beter weer te geven.
Met twee nieuwe API's in Windows Vista, MMDevice-API en WASAPI kunt u deze nieuwe audioapparaten openen en bewerken. De MMDevice-API verwijst naar de nieuwe audioapparaten als eindpunten.
De AudioEndpointBuilder-service bewaakt de KSCATEGORY_AUDIO klasse voor aankomsten en verwijderingen van de apparaatinterface. Wanneer een audioapparaatstuurprogramma een nieuw exemplaar van de KSCATEGORY_AUDIO apparaatinterfaceklasse registreert, detecteert de Service AudioEndpointBuilder de melding van de apparaatinterface en gebruikt een algoritme om de topologie van de audioapparaten in het systeem te onderzoeken en de juiste actie te ondernemen.
In de volgende lijst ziet u hoe het algoritme dat wordt gebruikt door AudioEndpointBuilder werkt:
Zoekt naar niet-verbonden brugpennen.
Hiermee maak je een eindpunt voor niet aangesloten brugpennen. Wanneer de AudioEndpointBuilder bijvoorbeeld een niet-verbonden brugpin vindt met een pincategorie-GUID van KSNODETYPE_SPEAKER, wordt er een luidsprekereindpunt voor deze brugpin gemaakt. Zie Ksmedia.h in WinDDK\<build number>\inc\api voor meer informatie over KSNODETYPE_SPEAKER en andere pin-categorie GUIDs.
Hiermee stelt u de standaardeigenschappen voor het eindpunt in. AudioEndpointBuilder stelt bijvoorbeeld de naam, het pictogram en de vormfactor in.
Bepaalt of er een pad is van het eindpunt naar een hostpin die ondersteuning biedt voor pulse code modulation (PCM), audio codec-3 (AC3) of Windows media video (WMV). Een host-pin is een KSPIN-structuur waarbij het Communication-lid is ingesteld op KSPIN_COMMUNICATION_SINK of KSPIN_COMMUNICATION_BOTH. Zie KSPIN voor meer informatie over de KSPIN-structuur.
Hiermee wordt het eindpunt PropertyStore gevuld met eigenschapsgegevens uit de registersleutels van de interface van het audioapparaat.
Hiermee stelt u de status van het eindpunt in. De status van het eindpunt kan een van de volgende drie waarden zijn:
Actief. Dit geeft aan dat er een pad bestaat zoals beschreven in stap 4.
Losgekoppeld. Als het audioapparaat ondersteuning biedt voor de detectie van jacks, geeft deze status aan dat er een pad bestaat voor het eindpunt en wordt de aansluiting losgekoppeld van de fysieke connector op de audioadapter.
Niet aanwezig Deze status geeft aan dat er geen pad is gevonden in stap 4 en dat de detectie van jacks niet wordt ondersteund door dit eindpunt.
Hiermee stelt u dit eindpunt in als het standaardeindpunt, als dat is wat is opgegeven in het bijbehorende INF-bestand.
Nadat de eindpunten zijn geïnventariseerd, kunnen clients van het audiosysteem ze rechtstreeks manipuleren met behulp van de nieuwe Windows Vista-API's (zoals eerder aangegeven) of indirect met behulp van de meer bekende API's zoals Wave, DirectShow of DirectSound. Er zijn nieuwe API-methoden opgegeven, zodat audioclients kunnen beginnen met de MMDevice-id van een eindpunt en toegang hebben tot de Wave- of DirectSound-id voor hetzelfde eindpunt.
Wanneer u eindpunten gebruikt, kunt u profiteren van het volgende:
Dezelfde GUID (Globally Unique Id) is beschikbaar, ongeacht hoe vaak u uw computer opnieuw opstart. Deze permanente GUID is betrouwbaarder dan het opslaan van een waveOut-id of een beschrijvende naam voor het eindpunt.
Dezelfde PropertyStore is beschikbaar, ongeacht hoe vaak u uw computer opnieuw opstart. De metagegevens van het audioapparaat worden opgeslagen in het eindpunt PropertyStore.
Multiplexpinnen (MUX) en demultiplexpinnen (DEMUX) worden automatisch beheerd en geïnventariseerd door de AudioEndpointBuilder-service.
Als u uw eigen stuurprogramma voor audioapparaten en INF-bestanden ontwikkelt om met uw audioapparaat te werken en een audiotoepassing te ontwikkelen, of beide, is het raadzaam om rekening te houden met de volgende problemen en aanbevolen procedures. Wanneer u stuurprogramma's en toepassingen ontwikkelt met deze aanbevelingen in het achterhoofd, produceert u stuurprogramma's, INF-bestanden en audioclients die effectiever werken met de AudioEndpointBuilder.
Naamgevingsconventie. De naamgevingsconventie die wordt gebruikt voor de eindpunten is gebaseerd op de vriendelijke namen van de brugpennen. In het geval van sprekereindpunten is de naam echter vastgelegd in 'Sprekers' en kan deze niet worden gewijzigd door uw stuurprogramma of een toepassing van derden.
Suboptimale topologieën. Bepaalde topologieën worden beschouwd als suboptimaal vanwege het algoritme dat wordt gebruikt door de AudioEndpointBuilder om eindpunten te inventariseren. Wanneer u bijvoorbeeld een van deze suboptimale topologieën maakt, maakt u hostpinnen die verborgen eindpunten hebben en die niet kunnen worden gezien door de AudioEndpointBuilder of splitters (gesplitste eindpunten) die de AudioEndpointBuilder niet kan koppelen aan de bijbehorende hostpinnen.
Verborgen eindpunten
In het volgende diagram ziet u dat het KS-filter twee hostpins bevat die zijn verbonden met één brugpin (Speaker).
Wanneer de AudioEndpointBuilder deze brugpin detecteert, traceert het een pad terug naar slechts één van de hostpins, stelt de standaardwaarden voor de brugpin in, maakt en activeert een Speaker-eindpunt en blijft andere brugpinnen ontdekken. De andere hostpin blijft dus verborgen voor de AudioEndpointBuilder.
In het voorgaande diagram is de problematische topologie opnieuw ontworpen, zodat de AudioEndpointBuilder de twee hostpinnen (PCM en AC-3/ PCM) kan detecteren omdat deze nu twee brugpennen (Speaker en SPDIF) kan zien.
Splitters
Een ander type suboptimale topologie wordt gemaakt wanneer één hostpin verbinding maakt met meer dan één brugpin. In het volgende diagram ziet u een topologie waarin een PCM-hostpin verbinding maakt met een speaker bridgepin en een SPDIF-brugpin.
In dit geval detecteert de AudioEndpointBuilder één brugpin en traceert een pad terug naar de pcM-hostpin, stelt standaardwaarden in en maakt en activeert vervolgens een speaker-eindpunt. Wanneer de AudioEndpointBuilder de volgende brugpin detecteert, wordt een pad teruggezet naar dezelfde PCM-hostpin, worden standaardwaarden ingesteld en wordt vervolgens een SPDIF-eindpunt gemaakt en geactiveerd. Hoewel beide eindpunten echter zijn geïnitialiseerd en geactiveerd, maakt streaming naar een van deze eindpunten het onmogelijk om tegelijkertijd naar de andere te streamen; met andere woorden, ze sluiten elkaar wederzijds uit.
In het volgende diagram ziet u een nieuw ontwerp van deze topologie waarin afzonderlijke verbindingen bestaan. Dit ontwerp maakt het mogelijk voor de AudioEndpointBuilder om een pad terug te traceren naar de PCM-hostpin voor elk van de twee brugpinnen.
Eindpuntformaat. Wanneer de audio-engine draait in gedeelde modus, neemt de opmaak van het eindpunt de specifieke instelling aan zoals bepaald door het INF-bestand op het moment van installatie. Het audiostuurprogramma voor een audioapparaat gebruikt bijvoorbeeld het bijbehorende INF-bestand om het standaardeindpunt in te stellen op een 44,1-kHz, 16-bits, stereo PCM-indeling. Na de installatie moet u het Configuratiescherm of een toepassing van derden gebruiken om de eindpuntindeling te wijzigen.
Standaardapparaat. Het eindpunt dat is ingesteld als het standaardapparaat, wordt geselecteerd op het moment van de installatie met behulp van informatie in het INF-bestand. Nadat de installatie is voltooid, moet u het Configuratiescherm of een toepassing van derden gebruiken om een ander eindpunt te selecteren dat het standaardeindpunt is.
Notitie Als uw INF-bestand geen eindpunt selecteert dat standaard moet worden ingesteld tijdens de installatie, kan een clienttoepassing de MMDevice-API gebruiken om een eindpunt te selecteren. De API baseert zijn selectie op de rangorde van de form factor en of het eindpunt een render- of een capture-eindpunt is. In de volgende tabel ziet u de selectievolgorde.
| Rangschikking weergeven | Positie vastleggen |
|---|---|
| Sprekers | Microfoon |
| Regeluitlijning | Line-in |
| SPDIF | SPDIF |
Als u de MMDevice-API gebruikt om een standaardeindpunt te selecteren en de beschikbare eindpunten op dezelfde positie staan, alfabetiseert de MMDevice-API de eindpunt-id's om te bepalen welk eindpunt als standaard moet worden geselecteerd. Als een audioadapter bijvoorbeeld zowel line-out- als line-in-connectors heeft en het bijbehorende INF-bestand geen van beide connectors selecteert als de standaardwaarde op het moment van de installatie, identificeert de MMDevice-API welke eindpunt-id's eerst alfabetisch zijn en stelt deze connector in als de standaardwaarde. Deze selectie blijft behouden nadat u het systeem opnieuw hebt opgestart, omdat de eindpunt-id's permanent zijn. De selectie blijft echter niet behouden als een hoger classificatie-eindpunt (bijvoorbeeld een tweede adapter met een microfoonconnector) in het systeem wordt weergegeven.