Bagikan melalui


Perbedaan Antara Versi DDI Audio HD

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

  • Versi dasar HD Audio DDI, 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 yang disempurnakan dari HD Audio DDI 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 ANTARMUKA . 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 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.

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

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

Versi DDI HDAUDIO_BUS_INTERFACE dan HDAUDIO_BUS_INTERFACE_BDL memiliki perbedaan berikut:

Saat 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 dalam 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. Pelanggan melakukan ini dengan mengatur bit interrupt-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 DDI yang HDAUDIO_BUS_INTERFACE. Hanya beberapa klien yang memerlukan kontrol yang tepat atas waktu interupsi yang akan menggunakan versi HDAUDIO_BUS_INTERFACE_BDL.