Bagikan melalui


Menyesuaikan Pengaturan Volume Pengandar Audio HD

Kemampuan untuk menyesuaikan volume audio default HD dalam kotak dan peningkatan tingkat mikrofon agar sesuai dengan PC tertentu; memberikan OEM beberapa fleksibilitas dalam parameter penginstalan adaptor audio mereka.

Nota

Proses yang dijelaskan di sini hanya dapat digunakan jika driver Microsoft HD Audio default sedang digunakan.

Secara default, driver fungsi kelas HD Audio mengatur volume audio dan tingkat peningkatan mikrofon pada nilai yang telah ditentukan untuk memastikan pengalaman "out of the box" yang menyenangkan bagi pengguna.

Driver fungsi kelas HD Audio, yang disebut di sini sebagai driver Kelas Audio, menggunakan berbagai nilai default yang dikodekan secara permanen yang tidak dapat disesuaikan untuk PC tertentu. Dengan demikian, OEM tidak dapat mengambil alih nilai-nilai ini untuk memenuhi persyaratan mereka sendiri. Dan salah satu pengaturan paling penting untuk disesuaikan adalah tingkat volume, karena pengguna sensitif terhadap kenyaringan atau ketenangan sistem audio mereka, terutama selama penggunaan pertama kali.

Driver Kelas Audio telah dirancang ulang untuk memungkinkan Anda menggantikan nilai default yang dikodekan secara tetap. Mekanisme untuk mengganti nilai hard-code driver Kelas Audio melibatkan penulisan file INF yang membungkus file INF bawaan driver Kelas Audio (hdaudio.inf), dan menggunakan file INF pembungkus ini untuk menentukan nilai yang diinginkan.

Diagram berikut menunjukkan contoh topologi codec HD Audio. Ada ID untuk simpul individu, dan ID untuk kompleks pin. Diagram topologi codec audio contoh dengan kompleks pin yang mewakili konektor fisik, termasuk node input mikrofon dan input line, serta node output speaker dengan ID kompleks pin.

Kompleks pin mewakili konektor fisik untuk perangkat terkait (misalnya, speaker, mikrofon, atau garis).

Untuk menentukan tingkat volume audio kustom atau tingkat peningkatan mikrofon, gunakan file INF pembungkus untuk menentukan tingkat kustom per ID kompleks pin. Tingkat dinyatakan sebagai DWORD yang mewakili tingkat desibel streaming kernel (KS) default yang harus dikembalikan driver kelas.

Ketika driver kelas HD Audio menerima permintaan GET untuk KSPROPERTY_AUDIO_VOLUMELEVEL, driver menentukan apakah ada nilai volume default (atau Peningkatan mikrofon) dalam registri untuk jalur yang berisi simpul yang menerima permintaan. Jika ada nilai dalam registri, tetapi tidak ada nilai yang di-cache sebelumnya, nilai default dalam registri akan diterapkan ke perangkat, dan juga dikembalikan dalam respons KSPROPERTY_AUDIO_VOLUMELEVEL. Jika tidak ada nilai dalam registri, driver kelas HD Audio mengambil nilai default dari implementasi grafik sub-perangkat.

Dimulai dengan Windows Vista, nilai defaultnya adalah sebagai berikut:

  • Volume endpoint secara default diatur ke maksimum dikurangi 6 dB untuk semua jenis perangkat.

  • Peningkatan mikrofon diatur ke default 0 dB.

Langkah-langkah berikut meringkas algoritma yang digunakan oleh driver Kelas Audio untuk menentukan nilai default yang akan dikembalikan sebagai respons terhadap permintaan GET untuk KSPROPERTY_AUDIO_VOLUMELEVEL:

  1. Tentukan kompleks pin tempat jalur yang mengandung node volume yang diminta berakhir.

  2. Lakukan pencarian registri untuk melihat apakah nilai default peningkatan volume atau mikrofon telah disediakan untuk kompleks pin yang ditemukan di langkah 1.

  3. Jika nilai ditemukan di registri, maka driver menetapkan nilai tersebut ke minimum, jika berada di bawah nilai minimum yang didukung oleh amplifier. Jika nilai melebihi nilai maksimum yang didukung oleh amplifier, maka akan diatur ke nilai maksimum. Jika nilai yang ditemukan dalam registri berada dalam rentang yang didukung oleh amplifier, maka nilai dikembalikan sebagai respons terhadap permintaan GET. Selain itu, driver memprogram widget amplifier HD Audio terkait dengan nilai ini saat merender ke atau menangkap dari kompleks pin.

Pohon folder berikut menunjukkan tata letak untuk kunci instans driver yang menyimpan nilai default.

<Driver Key> DefaultVolumeLevels Pin Complex (angka Heksadesimal 2 digit yang tidak diawali dengan '0x') Volume (DWORD dalam langkah KS DB) Boost (DWORD dalam langkah KS DB)

Nilai langkah KS DB didefinisikan sebagai berikut: -2147483648 adalah sebesar -infinity desibel (attenuasi).

-2147483647 adalah -32767.99998474 desibel (redaman)

+2147483647 adalah +32767.99998474 dalam desibel (penguatan)

Untuk informasi selengkapnya tentang satuan pengukuran yang digunakan (1/65536 dB), lihat KSPROPERTY_AUDIO_VOLUMELEVEL.

Untuk mengambil alih file wdmudio.inf, gunakan arahan Sertakan dan Kebutuhan seperti yang ditunjukkan pada segmen kode ini dari Sampel Driver Perangkat Audio Virtual Microsoft yang tersedia sebagai bagian dari Sampel Windows Driver Kit (WDK) 8.1.

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

Untuk informasi selengkapnya tentang direktif Include dan Needs, lihat Bagian INF DDInstall.

Berikut ini adalah contoh pembungkus INF yang membungkus file INF untuk driver Kelas 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"

Karena jalur relatif HKR ditentukan, jalur registri driver yang tepat akan ditentukan berdasarkan bagian file INF tertentu yang digunakan. Untuk informasi selengkapnya tentang jalur relatif HKR, lihat Direktif AddReg INF (Driver Windows).

Pengaturan Default Volume Audio

KSPROPERTY_AUDIO_VOLUMELEVEL