Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di Windows Vista dan versi Windows yang lebih baru, AudioEndpointBuilder adalah layanan sistem yang menghitung, menginisialisasi, dan mengaktifkan titik akhir audio dalam sistem. Topik ini memberikan gambaran umum algoritma yang digunakan oleh layanan AudioEndpointBuilder.
Layanan AudioEndpointBuilder menggunakan algoritma untuk menemukan dan menghitung titik akhir. Algoritma ini dirancang untuk menyederhanakan akses sistem ke perangkat pengambilan multipleks (MUXed) dan untuk membantu bekerja dengan topologi yang melibatkan beberapa pin host dan beberapa pin jembatan, atau keduanya.
Di Windows XP, model audio menggunakan istilah perangkat audio untuk merujuk ke perangkat konseptual di pohon Plug and Play (PnP). Di Windows Vista dan versi Windows yang lebih baru, konsep perangkat audio telah dirancang ulang untuk lebih mewakili perangkat yang berinteraksi dengan pengguna secara fisik.
Dengan dua API baru di Windows Vista, MMDevice API dan WASAPI, Anda dapat mengakses dan memanipulasi perangkat audio baru ini. MMDevice API mengacu pada perangkat audio baru sebagai titik akhir.
Layanan AudioEndpointBuilder memantau kelas KSCATEGORY_AUDIO untuk kedatangan dan penghapusan antarmuka perangkat. Ketika driver perangkat audio mendaftarkan instans baru kelas antarmuka perangkat KSCATEGORY_AUDIO, layanan AudioEndpointBuilder mendeteksi pemberitahuan antarmuka perangkat dan menggunakan algoritma untuk memeriksa topologi perangkat audio dalam sistem dan mengambil tindakan yang sesuai.
Daftar berikut ini meringkas cara kerja algoritma yang digunakan oleh AudioEndpointBuilder:
Memeriksa pin jembatan yang tidak terhubung.
Membuat titik akhir untuk pin jembatan yang tidak tersambung. Misalnya, ketika AudioEndpointBuilder menemukan pin bridge yang tidak terhubung dengan GUID kategori pin KSNODETYPE_SPEAKER, ia menghasilkan endpoint pengeras suara untuk pin bridge ini. Untuk informasi selengkapnya tentang KSNODETYPE_SPEAKER dan GUIDS kategori pin lainnya, lihat Ksmedia.h di WinDDK\<build number>\inc\api.
Mengatur properti default untuk titik akhir. Misalnya, AudioEndpointBuilder mengatur nama, ikon, dan faktor bentuk.
Menentukan apakah ada jalur dari titik akhir ke pin host yang mendukung modulasi kode pulsa (PCM), codec-3 audio (AC3), atau video media Windows (WMV). Pin host adalah struktur KSPIN yang anggota Komunikasinya disetel ke KSPIN_COMMUNICATION_SINK atau KSPIN_COMMUNICATION_BOTH. Untuk informasi selengkapnya tentang struktur KSPIN, lihat KSPIN.
Mengisi propertyStore titik akhir dengan informasi properti dari kunci registri antarmuka perangkat audio.
Mengatur status titik akhir. Status titik akhir bisa menjadi salah satu dari tiga nilai berikut:
Aktif. Ini menunjukkan bahwa jalur ada seperti yang dijelaskan di Langkah 4.
Tidak Terhubung Jika perangkat audio mendukung deteksi jack, status ini menunjukkan bahwa jalur tersedia untuk titik akhir, serta jack telah dicabut dari konektor fisik pada adaptor audio.
Tidak ada. Status ini menunjukkan bahwa jalur tidak ditemukan di Langkah 4, dan deteksi jack tidak didukung oleh titik akhir ini.
Mengatur titik akhir ini sebagai titik akhir default, jika itulah yang ditentukan dalam file INF terkait.
Setelah titik akhir dijumlahkan, klien sistem audio dapat memanipulasinya secara langsung dengan menggunakan API Windows Vista baru (seperti yang ditunjukkan sebelumnya) atau secara tidak langsung dengan menggunakan API yang lebih akrab seperti Wave, DirectShow atau DirectSound. Metode API baru telah disediakan sehingga klien audio dapat memulai dengan ID MMDevice dari titik akhir dan mengakses ID Wave atau DirectSound untuk titik akhir yang sama.
Saat menggunakan titik akhir, Anda dapat memanfaatkan hal berikut:
ID unik global (GUID) yang sama tersedia terlepas dari seberapa sering Anda menghidupkan ulang komputer Anda. Memiliki GUID persisten ini lebih dapat diandalkan daripada menyimpan ID WaveOut atau nama yang mudah diingat untuk titik akhir.
PropertyStore yang sama tersedia terlepas dari seberapa sering Anda menghidupkan ulang komputer Anda. Metadata terkait perangkat audio disimpan di PropertyStore endpoint.
Pin Multiplexed (MUX) dan de-multiplexed (DEMUX) dikelola secara otomatis dan dijumlahkan oleh layanan AudioEndpointBuilder.
Jika Anda mengembangkan driver perangkat audio dan file INF Anda sendiri untuk bekerja dengan perangkat audio Anda, dan mengembangkan aplikasi audio, atau keduanya, yang terbaik adalah mengetahui masalah dan praktik terbaik berikut. Ketika Anda mengembangkan driver dan aplikasi dengan pertimbangkan rekomendasi ini, Anda menghasilkan driver, file INF, dan klien audio yang bekerja lebih efektif dengan AudioEndpointBuilder.
Konvensi penamaan. Konvensi penamaan yang digunakan untuk titik akhir didasarkan pada nama pin jembatan yang ramah. Namun, dalam kasus titik akhir pengeras suara, nama telah dikodekan secara permanen menjadi "Pengeras Suara" dan tidak dapat diubah oleh driver maupun aplikasi pihak ketiga.
Topologi suboptimal. Topologi tertentu dianggap suboptimal karena algoritma yang digunakan oleh AudioEndpointBuilder untuk menghitung titik akhir. Misalnya, ketika Anda membuat salah satu topologi suboptimal ini, Anda membuat pin host yang memiliki titik akhir tersembunyi dan tidak dapat dilihat oleh AudioEndpointBuilder atau pemisah (titik akhir terpisah) yang tidak dapat ditautkan oleh AudioEndpointBuilder ke pin host terkait.
Titik akhir tersembunyi
Dalam diagram berikut, filter KS diperlihatkan memiliki dua pin host yang tersambung ke satu pin penghubung (Speaker).
Ketika AudioEndpointBuilder menemukan pin jembatan ini, ia melacak jalur kembali ke hanya salah satu pin host, mengatur nilai default untuk pin jembatan, membuat dan mengaktifkan titik akhir Speaker, dan terus menemukan pin jembatan lainnya. Dengan demikian, pin host lainnya tetap tersembunyi dari AudioEndpointBuilder.
Dalam diagram sebelumnya, topologi bermasalah telah dirancang ulang sehingga AudioEndpointBuilder dapat menemukan dua pin host (PCM dan AC-3/ PCM) karena sekarang dapat melihat dua pin penghubung (Speaker dan SPDIF).
Pemisah
Jenis topologi suboptimal lainnya dibuat ketika satu pin host terhubung ke lebih dari satu pin jembatan. Diagram berikut menunjukkan topologi di mana pin host PCM tersambung ke pin jembatan Speaker dan pin jembatan SPDIF.
Dalam hal ini AudioEndpointBuilder menemukan satu pin jembatan dan melacak jalur kembali ke pin host PCM, mengatur nilai default, lalu membuat dan mengaktifkan titik akhir Speaker. Ketika AudioEndpointBuilder menemukan pin jembatan berikutnya, ia melacak jalur kembali ke pin host PCM yang sama, mengatur nilai default, lalu membuat dan mengaktifkan titik akhir SPDIF. Namun, meskipun kedua titik akhir telah diinisialisasi dan diaktifkan, streaming ke salah satunya membuatnya tidak mungkin untuk melakukan streaming ke titik akhir lainnya secara bersamaan; dengan kata lain, titik akhir tersebut saling eksklusif.
Diagram berikut menunjukkan desain ulang topologi ini di mana koneksi terpisah ada. Desain ini memungkinkan AudioEndpointBuilder untuk melacak jalur kembali ke pin host PCM untuk masing-masing dari dua pin jembatan.
Format titik akhir. Saat mesin audio berjalan dalam mode bersama, format untuk titik akhir mengasumsikan pengaturan tertentu sebagaimana diarahkan oleh file INF pada saat penginstalan. Misalnya, driver audio untuk perangkat audio menggunakan file INF terkait untuk mengatur titik akhir default ke format PCM 44,1-kHz, 16-bit, stereo. Setelah penginstalan, Anda harus menggunakan Panel Kontrol atau aplikasi pihak ketiga untuk mengubah format titik akhir.
Perangkat default. Titik akhir yang diatur sebagai perangkat default dipilih pada saat penginstalan dengan menggunakan informasi dalam file INF. Setelah penginstalan selesai, Anda harus menggunakan Panel Kontrol atau aplikasi pihak ketiga untuk memilih titik akhir lain untuk menjadi titik akhir default.
Nota Jika file INF Anda tidak memilih titik akhir yang akan diatur sebagai default selama penginstalan, aplikasi klien dapat menggunakan MMDevice API untuk memilih titik akhir. API mendasarkan pilihannya pada peringkat faktor bentuk dan apakah endpoint tersebut adalah endpoint render atau endpoint capture. Tabel berikut ini memperlihatkan urutan pilihan.
| Peringkat render | Peringkat tangkapan |
|---|---|
| Pengeras Suara | Mikrofon |
| Keluaran Suara | Baris masuk |
| SPDIF | SPDIF |
Jika Anda menggunakan MMDevice API untuk memilih titik akhir default dan titik akhir yang tersedia diberi peringkat yang sama, MMDevice API akan membuat alfabet ID Titik Akhir untuk menentukan titik akhir mana yang akan dipilih sebagai default. Misalnya, jika adaptor audio memiliki konektor line-out dan line-in, dan file INF terkait tidak memilih salah satu untuk menjadi default pada saat penginstalan, MMDevice API mengidentifikasi ID Titik Akhir mana yang pertama kali menurut abjad dan mengatur konektor tersebut sebagai default. Pilihan ini bertahan setelah Anda menghidupkan ulang sistem karena ID Titik Akhir persisten. Namun, pilihan tersebut tidak bertahan jika titik akhir peringkat lebih tinggi (misalnya, adaptor kedua dengan konektor mikrofon) muncul di sistem.