Komponen Audio Mode Pengguna

Di Windows Vista, API audio inti berfungsi sebagai fondasi subsistem audio mode pengguna. API audio inti diimplementasikan sebagai lapisan tipis komponen sistem mode pengguna yang memisahkan klien mode pengguna dari driver audio mode kernel dan perangkat keras audio. API audio tingkat lebih tinggi, seperti DirectSound dan fungsi multimedia Windows, mengakses perangkat audio melalui API audio inti. Selain itu, beberapa aplikasi audio berkomunikasi langsung dengan API audio inti.

API audio inti mendukung gagasan perangkat titik akhir audio yang mudah digunakan. Perangkat titik akhir audio adalah abstraksi perangkat lunak yang mewakili perangkat fisik yang dimanipulasi pengguna secara langsung. Contoh perangkat titik akhir audio adalah speaker, headphone, dan mikrofon. Untuk informasi selengkapnya, lihat Perangkat Titik Akhir Audio.

Diagram berikut menunjukkan API audio inti dan hubungannya dengan komponen audio mode pengguna lainnya di Windows Vista.

diagram of user-mode audio-rendering components

Untuk kesederhanaan, diagram sebelumnya hanya memperlihatkan jalur data penyajian audio ke perangkat titik akhir—diagram tidak menampilkan jalur data pengambilan audio. API audio inti termasuk MMDevice API, WASAPI, DEVICETopology API, dan EndpointVolume API, yang diimplementasikan dalam modul sistem Audioses.dll dan Mmdevapi.dll mode pengguna.

Seperti yang ditunjukkan pada diagram sebelumnya, API audio inti menyediakan fondasi untuk API tingkat lebih tinggi berikut:

  • Media Foundation
  • Fungsi Windows multimedia waveXxx dan mixerXxx
  • DirectSound
  • DirectMusic

DirectSound, fungsi audio multimedia Windows, dan Media Foundation (melalui perender audio streaming, atau SAR, komponen) berkomunikasi langsung dengan API audio inti. DirectMusic berkomunikasi dengan API audio inti secara tidak langsung melalui DirectSound.

Klien WASAPI meneruskan data ke perangkat titik akhir melalui buffer titik akhir. Perangkat lunak sistem dan komponen perangkat keras mengelola pergerakan data dari buffer titik akhir ke perangkat titik akhir dengan cara yang sebagian besar transparan bagi klien. Selain itu, untuk perangkat titik akhir yang dicolokkan ke adaptor audio dengan deteksi jack-presence, klien dapat membuat buffer titik akhir hanya untuk perangkat titik akhir yang ada secara fisik. Untuk informasi selengkapnya tentang deteksi jack-presence, lihat Perangkat Titik Akhir Audio.

Diagram sebelumnya menunjukkan dua jenis buffer titik akhir. Jika klien WASAPI membuka aliran dalam mode bersama, maka klien menulis data audio ke buffer titik akhir dan mesin audio Windows membaca data dari buffer. Dalam mode ini, klien berbagi perangkat keras audio dengan aplikasi lain yang berjalan dalam proses lain. Mesin audio mencampur aliran dari aplikasi ini dan memutar campuran yang dihasilkan melalui perangkat keras. Mesin audio adalah komponen sistem mode pengguna (Audiodg.dll) yang melakukan semua operasi pemrosesan alirannya dalam perangkat lunak. Sebaliknya, jika klien membuka aliran dalam mode eksklusif, klien memiliki akses eksklusif ke perangkat keras audio. Biasanya, hanya sejumlah kecil aplikasi "pro audio" atau RTC yang memerlukan mode eksklusif. Meskipun diagram menunjukkan aliran mode bersama dan mode eksklusif, hanya satu dari dua aliran ini (dan buffer titik akhir yang sesuai) yang ada, tergantung pada apakah klien membuka aliran dalam mode bersama atau dalam mode eksklusif.

Dalam mode eksklusif, klien dapat memilih untuk membuka aliran dalam format audio apa pun yang didukung perangkat titik akhir. Dalam mode bersama, klien harus membuka aliran dalam format campuran yang saat ini digunakan oleh mesin audio (atau format yang mirip dengan format campuran). Aliran input mesin audio dan campuran output dari mesin semuanya dalam format ini.

Di Windows 7, fitur baru yang disebut mode latensi rendah telah ditambahkan untuk aliran dalam mode berbagi. Dalam mode ini, mesin audio berjalan dalam mode penarikan, di mana ada pengurangan latensi yang signifikan. Ini sangat berguna untuk aplikasi komunikasi yang membutuhkan latensi aliran audio rendah untuk streaming yang lebih cepat.

Aplikasi yang mengelola aliran audio latensi rendah dapat menggunakan Multimedia Class Scheduler Service (MMCSS) di Windows Vista untuk meningkatkan prioritas utas aplikasi yang mengakses buffer titik akhir. MMCSS memungkinkan aplikasi audio berjalan pada prioritas tinggi tanpa menolak sumber daya CPU ke aplikasi berprioritas lebih rendah. MMCSS menetapkan prioritas ke utas berdasarkan nama tugasnya. Misalnya, Windows Vista mendukung nama tugas "Audio" dan "Pro Audio" untuk utas yang mengelola aliran audio. Secara default, prioritas utas "Pro Audio" lebih tinggi dari utas "Audio". Untuk informasi selengkapnya tentang MMCSS, lihat dokumentasi Windows SDK.

API audio inti mendukung format aliran PCM dan non-PCM. Namun, mesin audio hanya dapat mencampur aliran PCM. Dengan demikian, hanya aliran mode eksklusif yang dapat memiliki format non-PCM. Untuk informasi selengkapnya, lihat Format Perangkat.

Mesin audio berjalan dalam proses yang dilindungi sendiri, yang terpisah dari proses yang dijalankan aplikasi. Untuk mendukung aliran mode bersama, layanan audio Windows (kotak berlabel "Layanan Audio" dalam diagram sebelumnya) mengalokasikan buffer titik akhir lintas proses yang dapat diakses oleh aplikasi dan mesin audio. Untuk mode eksklusif, buffer titik akhir berada dalam memori yang dapat diakses oleh aplikasi dan perangkat keras audio.

Layanan audio Windows adalah modul yang menerapkan kebijakan audio Windows. Kebijakan audio adalah seperangkat aturan internal yang diterapkan sistem untuk interaksi antara aliran audio dari beberapa aplikasi yang berbagi dan bersaing untuk menggunakan perangkat keras audio yang sama. Layanan audio Windows menerapkan kebijakan audio dengan mengatur parameter kontrol untuk mesin audio. Tugas layanan audio meliputi:

  • Melacak perangkat audio yang ditambahkan atau dihapus pengguna dari sistem.
  • Memantau peran yang ditetapkan ke perangkat audio dalam sistem.
  • Mengelola aliran audio dari grup tugas yang menghasilkan kelas konten audio serupa (konsol, multimedia, dan komunikasi).
  • Mengontrol tingkat volume aliran output gabungan ("submix") untuk masing-masing dari berbagai jenis konten audio.
  • Memberi tahu mesin audio tentang elemen pemrosesan di jalur data untuk aliran audio.

Di beberapa versi Windows, layanan audio Windows dinonaktifkan secara default dan harus diaktifkan secara eksplisit sebelum sistem dapat memutar audio.

Dalam contoh yang ditunjukkan dalam diagram sebelumnya, perangkat titik akhir adalah sekumpulan speaker yang dicolokkan ke adaptor audio. Aplikasi klien menulis data audio ke buffer titik akhir, dan mesin audio menangani detail pengangkutan data dari buffer ke perangkat titik akhir.

Kotak berlabel "Driver Audio" dalam diagram sebelumnya mungkin merupakan kombinasi komponen driver yang disediakan sistem dan disediakan vendor. Dalam kasus adaptor audio pada PCI atau bus PCI Express, sistem memasok driver sistem Kelas Port (Portcls.sys), yang mengimplementasikan serangkaian driver port untuk berbagai fungsi audio dalam adaptor, dan vendor perangkat keras memasok driver adaptor yang mengimplementasikan satu set driver miniport untuk menangani operasi khusus perangkat untuk driver port. Dalam kasus pengontrol Audio Definisi Tinggi dan codec pada pci atau bus PCI Express, sistem memasok driver adaptor (Hdaudio.sys), dan tidak diperlukan driver yang disediakan vendor. Dalam kasus adaptor audio pada bus USB, sistem memasok driver sistem kelas AVStream (Ks.sys) ditambah driver Audio USB (Usbaudio.sys); sekali lagi, tidak diperlukan driver yang disediakan vendor.

Untuk kesederhanaan, diagram sebelumnya hanya menunjukkan aliran penyajian. Namun, API audio inti juga mendukung aliran pengambilan. Dalam mode bersama, beberapa klien dapat berbagi aliran yang diambil dari perangkat keras audio. Dalam mode eksklusif, satu klien memiliki akses eksklusif ke aliran yang diambil dari perangkat.

Panduan Pemrograman