Perbedaan Antara Versi HD Audio DDI

HD Audio DDI tersedia dalam tiga versi yang sedikit berbeda yang didefinisikan sebagai berikut:

  • Versi dasar DDI Audio HD, yang didefinisikan oleh struktur HDAUDIO_BUS_INTERFACE . Sebagian besar driver fungsi untuk codec audio dan modem hanya memerlukan kemampuan yang disediakan versi DDI ini. Versi ini tersedia melalui driver bus HD Audio yang disediakan dengan Windows XP dan Windows Vista.

  • Versi DDI Audio HD yang disempurnakan yang ditentukan oleh struktur HDAUDIO_BUS_INTERFACE_V2 . Versi DDI ini menyediakan kemampuan tambahan yang diperlukan untuk mendukung pemberitahuan peristiwa berbasis DMA dengan fleksibilitas. Ini tersedia di Windows Vista dan versi Windows yang lebih baru.

  • Versi DDI Audio HD yang dimodifikasi yang ditentukan oleh struktur HDAUDIO_BUS_INTERFACE_BDL . Versi ini mengakomodasi persyaratan driver audio dan modem yang relatif sedikit yang harus memiliki kontrol tambahan atas penyiapan daftar deskriptor buffer (BDL) untuk operasi DMA. Versi DDI ini tersedia untuk Windows XP dan versi Windows yang lebih baru. Namun, gunakan HDAUDIO_BUS_INTERFACE atau versi DDI HDAUDIO_BUS_INTERFACE_V2 sebagai gantinya. .

Dalam ketiga struktur, nama dan jenis lima anggota pertama cocok dengan lima anggota struktur INTERFACE . Untuk informasi tentang nilai anggota ini, lihat Mendapatkan Objek DDI HDAUDIO_BUS_INTERFACE, Mendapatkan Objek DDI HDAUDIO_BUS_INTERFACE_V2 atau Mendapatkan Objek DDI HDAUDIO_BUS_INTERFACE_BDL.

Rutinitas dalam tiga versi HD Audio DDI melakukan tugas-tugas berikut:

  • Transfer perintah ke codec dan ambil respons terhadap perintah tersebut.

  • Alokasikan dan siapkan mesin DMA untuk mentransfer data dalam render dan mengambil aliran.

  • Ubah status aliran satu atau beberapa mesin DMA untuk menjalankan, menjeda, menghentikan, atau mengatur ulang.

  • Pesan bandwidth tautan untuk merender dan mengambil aliran.

  • Berikan akses langsung ke register jam dinding dan daftar posisi tautan.

  • Memberi tahu klien tentang respons yang tidak diminta dari codec.

  • Daftarkan peristiwa kernel sehingga mereka dapat menerima pemberitahuan kemajuan DMA.

Versi HDAUDIO_BUS_INTERFACE dan HDAUDIO_BUS_INTERFACE_BDL DDI memiliki perbedaan berikut:

Ketika klien memanggil rutinitas AllocateDmaBuffer di versi DDI pertama, driver bus HD Audio:

  • Mengalokasikan buffer DMA dan BDL untuk digunakan mesin DMA.

  • Menginisialisasi BDL.

  • Menyiapkan mesin DMA untuk menggunakan buffer dan BDL.

Sebaliknya, rutinitas AllocateContiguousDmaBuffer di versi DDI kedua mengalokasikan penyimpanan untuk buffer DMA dan BDL, tetapi bergantung pada pemanggil untuk menginisialisasi BDL. Rutinitas SetupDmaEngineWithBdl menyiapkan mesin DMA untuk menggunakan buffer dan BDL yang diinisialisasi pemanggil.

BDL berisi daftar blok memori fisik dalam antrean sebar/kumpulkan mesin DMA. Dengan memanggil SetupDmaEngineWithBdl untuk menyiapkan BDL, klien dapat menentukan titik dalam aliran data tempat mesin DMA menghasilkan gangguan. Klien melakukan ini dengan mengatur bit interupsi-on-completion (IOC) dalam entri BDL yang dipilih. Dengan kemampuan ini, klien dapat dengan tepat mengontrol waktu gangguan IOC yang terjadi selama pemrosesan aliran audio. Driver modem audio juga menggunakan versi DDI kedua untuk mendapatkan informasi jam sistem yang akurat.

Untuk informasi selengkapnya, lihat Spesifikasi Audio Definisi Tinggi Intel.

Namun, hampir semua klien akan menggunakan versi HDAUDIO_BUS_INTERFACE DDI. Hanya beberapa klien yang memerlukan kontrol yang tepat atas waktu interupsi yang akan menggunakan versi HDAUDIO_BUS_INTERFACE_BDL.