Delen via


Volume-instellingen voor HD-audiostuurprogramma aanpassen

De mogelijkheid om het standaard audiovolume en de boostniveaus van de microfoon in het vak HD aan te passen aan een specifieke pc, biedt OEM's enige flexibiliteit in de installatieparameters van hun audioadapter.

Opmerking

Het proces dat hier wordt beschreven, kan alleen worden gebruikt als het standaardstuurprogramma voor Microsoft HD Audio wordt gebruikt.

Standaard stelt het stuurprogramma van de HD Audio-klassefunctie het audiovolume en de microfoon boostniveaus in op vooraf vastgestelde waarden om een aangename "out-of-the-box"-ervaring voor de gebruiker te garanderen.

Het functiestuurprogramma van de HD Audio-klasse, waarnaar hier wordt verwezen als het stuurprogramma audioklasse, gebruikt verschillende in code vastgelegde standaardwaarden die niet kunnen worden aangepast voor een bepaalde pc. Als zodanig kunnen OEM's deze waarden niet overschrijven om aan hun eigen vereisten te voldoen. En een van de belangrijkste instellingen die moeten worden aangepast, is het volumeniveau, omdat gebruikers gevoelig zijn voor de luidheid of stilte van hun audiosystemen, vooral tijdens het eerste gebruik.

Het stuurprogramma voor audioklasse is opnieuw ontworpen, zodat u de in code vastgelegde standaardwaarden kunt overschrijven. Het mechanisme voor het overschrijven van de in code vastgelegde waarden van het stuurprogramma voor audioklasse omvat het schrijven van een INF-bestand dat het Postvak INF-bestand van het stuurprogramma voor audioklasse (hdaudio.inf) verpakt en met deze wrapper INF de gewenste waarden opgeeft.

In het volgende diagram ziet u een voorbeeld van een HD Audio-codectopologie. Er zijn id's voor de afzonderlijke knooppunten en id's voor de pincomplexen. Diagram van een voorbeeld van een audiocodectopologie met pincomplexen die fysieke connectors vertegenwoordigen, inclusief microfoon- en lijninvoerknooppunten, en luidsprekeruitvoerknooppunt met complexe id's.

De pincomplexen vertegenwoordigen de fysieke verbindingslijnen voor het bijbehorende apparaat (bijvoorbeeld luidspreker, microfoon of lijn).

Als u een aangepast volumeniveau of een boostniveau voor de microfoon wilt opgeven, gebruikt u het INF-bestand van de wrapper om aangepaste niveaus per complexe id voor pincodes op te geven. De niveaus worden uitgedrukt als DWORDs die de standaard KS-decibelniveaus (Kernel Streaming) vertegenwoordigen die het klassestuurprogramma moet retourneren.

Wanneer het stuurprogramma van de HD Audio-klasse een GET-aanvraag voor KSPROPERTY_AUDIO_VOLUMELEVEL ontvangt, bepaalt het stuurprogramma of er een standaardvolumewaarde (of Mic Boost) in het register staat voor het pad dat het knooppunt bevat dat de aanvraag heeft ontvangen. Als er een waarde in het register staat, maar er geen eerder in de cache opgeslagen waarde is, wordt de standaardwaarde in het register toegepast op het apparaat en ook geretourneerd in het KSPROPERTY_AUDIO_VOLUMELEVEL antwoord. Als het register geen waarde bevat, haalt het stuurprogramma van de HD Audio-klasse een standaardwaarde op uit de implementatie van de sub-apparaatgrafiek.

Vanaf Windows Vista zijn de standaardwaarden als volgt:

  • Eindpuntvolume is standaard ingesteld op maximaal min 6 dB voor alle apparaattypen.

  • Microfoon boost is standaard ingesteld op 0 dB.

De volgende stappen geven een overzicht van het algoritme dat door het stuurprogramma van de audioklasse wordt gebruikt om de standaardwaarden te bepalen die moeten worden geretourneerd als reactie op een GET-aanvraag voor KSPROPERTY_AUDIO_VOLUMELEVEL:

  1. Bepaal het pincomplex waarop het pad met het opgevraagde volumeknooppunt wordt beƫindigd.

  2. Voer een registerzoekactie uit om te zien of er een volume- of microfoonverhogingswaarde is opgegeven voor het pincomplex dat in stap 1 is gevonden.

  3. Als een waarde in het register wordt gevonden, stelt het stuurprogramma deze waarde in op het minimum, als deze onder de minimumwaarde valt die wordt ondersteund door de versterker. Anders wordt de waarde ingesteld op het maximum, als deze boven de maximumwaarde valt die door de versterker wordt ondersteund. Als de waarde in het register binnen het bereik valt dat door de versterker wordt ondersteund, wordt de waarde geretourneerd als reactie op de GET-aanvraag. Bovendien programmeert het stuurprogramma de bijbehorende HD Audio-versterkerwidget met deze waarde bij het renderen naar of het vastleggen van de pincomplex.

In de volgende mapstructuur ziet u de indeling voor de exemplaarsleutel van het stuurprogramma die de standaardwaarden bevat.

<Driver Key> DefaultVolumeLevels Pin Complex (2 cijferige HEX, niet voorafgegaan door "0x") Volume (DWORD in KS DB-stappen) Boost (DWORD in KS DB-stappen)

De KS DB-stapwaarden worden als volgt gedefinieerd: -2147483648 is -infinity decibel (verzwakking)

-2147483647 is -32767,99998474 decibel (verzwakking)

+2147483647 is +32767,99998474 decibels (versterking)

Zie KSPROPERTY_AUDIO_VOLUMELEVEL voor meer informatie over de meeteenheid die wordt gebruikt (1/65536 dB).

Als u het bestand wdmudio.inf wilt overschrijven, gebruikt u de instructies Opnemen en Behoeften zoals weergegeven in dit codesegment van het Microsoft Virtual Audio Device Driver Sample dat beschikbaar is als onderdeel van de Windows Driver Kit (WDK) 8.1 Samples.

;Copyright (c) Microsoft Corporation. All rights reserved.
;
...
[MSVAD_Simple.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
...

Voor meer informatie over de directives Include en Needs, zie de sectie INF DDInstall.

Hier volgt een voorbeeld van een INF-wrapper waarmee het INF-bestand voor het stuurprogramma van de audioklasse wordt verpakt.

;Copyright (c) Microsoft Corporation. All rights reserved.
;
;Module Name:
;    HDAUDVOL.INF
;
;Abstract:
;    Wrapper INF file for installing the Microsoft UAA Function Driver for High
;    Definition Audio with specific INF overrides

[Version]
Signature="$Windows NT$"
Class=MEDIA
ClassGuid={4d36e96c-e325-11ce-bfc1-08002be10318}
Provider=Microsoft
DriverVer=07/28/2012,6.2.9201.0
CatalogFile=hdaudvol.cat
PnpLockdown=1

[Manufacturer]
Microsoft = Microsoft,ntamd64,ntarm

[ControlFlags]
ExcludeFromSelect = *

;;====================================================================================
;; Edit the PNP ID (HDAUDIO\FUNC_01...) below to match the codec + subsystem you are ;; configuring.
;;====================================================================================

[Microsoft]
%HdAudModel_DefaultVolume_DeviceDesc% = HdAudModel_DefaultVolume, HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_00000000&REV_1000

[Microsoft.ntamd64]
%HdAudModel_DefaultVolume_DeviceDesc% = HdAudModel_DefaultVolume, HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_00000000&REV_1000

[Microsoft.ntarm]
%HdAudModel_DefaultVolume_DeviceDesc% = HdAudModel_DefaultVolume, HDAUDIO\FUNC_01&VEN_10EC&DEV_0889&SUBSYS_00000000&REV_1000

;;===================== HdAudModel_DefaultVolume ==============================

[HdAudModel_DefaultVolume]
Include=hdaudio.inf
Needs=HDAudModel
AddReg=HdAudModel_DefaultVolume.HdAudInit

[HdAudModel_DefaultVolume.HW]
Include=hdaudio.inf
Needs=HdAudModel.HW

[HdAudModel_DefaultVolume.Services]
Include=hdaudio.inf
Needs=HdAudModel.Services

[HdAudModel_DefaultVolume.Interfaces]
Include=hdaudio.inf
Needs=HdAudModel.Interfaces

[HdAudModel_DefaultVolume.HdAudInit]
;;====================================================================================
;; Units are in KS dB so 1dB == 65536 (0x00010000)
;; ======================================================================================
HKR,DefaultVolumeLevels\18,Volume,1,00,00,FE,FF ; Set to 0xFFFE0000 to set to -2dB
HKR,DefaultVolumeLevels\18,Boost,1,00,00,0A,00 ; Set to 0x000A0000 to set to 10dB

[Strings]
HdAudModel_DefaultVolume_DeviceDesc = "High Definition Audio Device"

Omdat een relatief HKR-pad is opgegeven, wordt het exacte registerpad van de stuurprogramma bepaald op basis van de specifieke INF-bestandssectie die wordt gebruikt. Zie INF AddReg Directive (Windows-stuurprogramma's) voor meer informatie over relatieve HKR-paden.

Standaardinstellingen voor audiovolume

KSPROPERTY_AUDIO_VOLUMELEVEL