Personalización de la configuración del volumen del controlador de audio hd
La capacidad de personalizar el volumen de audio y los niveles de aumento de micrófono predeterminados de audio hd en la caja para adaptarse a un equipo específico, proporciona a los OEM cierta flexibilidad en sus parámetros de instalación del adaptador de audio.
Nota
El proceso descrito aquí solo se puede usar si se usa el controlador microsoft HD Audio predeterminado.
De forma predeterminada, el controlador de función de clase HD Audio establece el volumen de audio y los niveles de aumento del micrófono en valores predeterminados para garantizar una experiencia agradable "lista para usar" para el usuario.
El controlador de funciones de clase HD Audio, que se conoce aquí como controlador de clase audio, usa varios valores predeterminados codificados de forma rígida que no se pueden personalizar para ningún equipo determinado. Por lo tanto, los OEM no pueden invalidar estos valores para cumplir sus propios requisitos. Y una de las opciones de configuración más importantes para ajustar es el nivel de volumen, ya que los usuarios son sensibles a la voz o a la tranquilidad de sus sistemas de audio, especialmente durante el primer uso.
El controlador audio Class se ha rediseñado para permitirle invalidar los valores predeterminados codificados de forma rígida. El mecanismo para invalidar los valores codificados de forma rígida del controlador de clase de audio implica escribir un archivo INF que encapsula el archivo INF del controlador de clase de audio (hdaudio.inf) y usar este contenedor INF para especificar los valores deseados.
En el diagrama siguiente se muestra una topología de códec de audio HD de ejemplo. Hay identificadores para los nodos individuales e identificadores para los complejos de patillas.
Los complejos de patillas representan los conectores físicos del dispositivo asociado (por ejemplo, altavoz, micrófono o línea).
Para especificar un nivel de volumen de audio personalizado o un nivel de aumento de micrófono, use el archivo INF contenedor para especificar niveles personalizados por identificador complejo de patillas. Los niveles se expresan como DWORD que representan los niveles predeterminados de decibeles de streaming de kernel (KS) que debe devolver el controlador de clase.
Cuando el controlador de clase hd Audio recibe una solicitud GET para KSPROPERTY_AUDIO_VOLUMELEVEL, el controlador determina si hay o no un valor de volumen predeterminado (o aumento de micrófono) en el registro para la ruta de acceso que contiene el nodo que recibió la solicitud. Si hay un valor en el Registro, pero no hay ningún valor almacenado en caché previamente, el valor predeterminado del registro se aplicará al dispositivo y también se devolverá en la respuesta KSPROPERTY_AUDIO_VOLUMELEVEL. Si no hay ningún valor en el registro, el controlador de clase de audio HD recupera un valor predeterminado de la implementación del grafo de sub device.
A partir de Windows Vista, los valores predeterminados son los siguientes:
El volumen del punto de conexión tiene como valor predeterminado un máximo de 6 dB para todos los tipos de dispositivo.
El valor predeterminado del aumento del micrófono es 0 dB.
En los pasos siguientes se resume el algoritmo que usa el controlador audio Class para determinar los valores predeterminados que se devuelven en respuesta a una solicitud GET para KSPROPERTY_AUDIO_VOLUMELEVEL:
Determine el complejo de patillas en el que finaliza la ruta de acceso que contiene el nodo de volumen consultado.
Realice una búsqueda del Registro para ver si se ha proporcionado un valor predeterminado de aumento de volumen o micrófono para el complejo de patillas que se encuentra en el paso 1.
Si se encuentra un valor en el registro, el controlador establece ese valor en el mínimo, si se encuentra por debajo del valor mínimo admitido por el amplificador. De lo contrario, el valor se establece en el máximo, si cae por encima del valor máximo admitido por el amplificador. Si el valor encontrado en el registro está dentro del intervalo admitido por el amplificador, el valor se devuelve en respuesta a la solicitud GET. Además, el controlador programa el widget de amplificador hd Audio asociado con este valor al representar o capturar desde el complejo de patillas.
En el árbol de carpetas siguiente se muestra el diseño de la clave de instancia del controlador que contiene los valores predeterminados.
<Driver Key> DefaultVolumeLevels Pin Complex (HEX de 2 dígitos, no precedido por "0x") Volume (DWORD in KS DB steps) Boost (DWORD in KS DB steps) (DWORD in KS DB steps)
Los valores de ejecución paso a paso de KS DB se definen de la siguiente manera: -2147483648 es -infinity decibels (atenuación)
-2147483647 es -32767.999998474 decibelios (atenuación)
+2147483647 es +32767.99998474 decibels (ganancia)
Para obtener más información sobre la unidad de medida que se usa (1/65536 dB), consulte KSPROPERTY_AUDIO_VOLUMELEVEL.
Para invalidar el archivo wdmudio.inf, use las directivas Include and Needs como se muestra en este segmento de código del ejemplo de controlador de dispositivo de audio virtual de Microsoft disponible como parte de los ejemplos del Kit de controladores de Windows (WDK) 8.1.
;Copyright (c) Microsoft Corporation. All rights reserved.
;
...
[MSVAD_Simple.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration
...
Para obtener más información sobre las directivas Include y Needs, consulte la sección INF DDInstall.
A continuación se muestra un contenedor INF de ejemplo que encapsula el archivo INF para el controlador de clase de audio.
;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"
Dado que se especifica una ruta de acceso relativa HKR, la ruta de acceso exacta del registro del controlador se determinará en función de la sección específica del archivo INF que se usa. Para obtener más información sobre las rutas de acceso relativas de HKR, vea Directiva AddReg inf (controladores de Windows).