Bagikan melalui


Filter Sistem AEC

Filter sistem AEC (Aec.sys) mengimplementasikan algoritma pembatalan gema akustik (AEC) dan penindasan kebisingan (NS) dalam perangkat lunak. Filter ini adalah komponen sistem operasi standar di Windows XP dan yang lebih baru. Untuk informasi tentang bagaimana aplikasi DirectSoundCapture mengaktifkan penggunaan filter sistem AEC, lihat dokumentasi Microsoft Windows SDK.

Batasan yang Diberlakukan oleh Filter Sistem AEC

Grafik filter audio yang menggabungkan efek pengambilan yang diterapkan dalam filter sistem AEC tunduk pada batasan berikut:

  • Filter sistem AEC hanya dapat terhubung ke pin yang menangani format data PCM.

  • Kedalaman bit harus 16 bit untuk aliran pengambilan dan 8 atau 16 bit untuk aliran render.

  • Filter sistem AEC melakukan semua pemrosesan internal pada 16 kHz. Aliran input dan output dikonversi tingkat sumber seperlunya.

  • Di Windows XP SP1, Windows Server 2003, dan yang lebih baru, pin capture-out dan render-in filter sistem AEC (lihat gambar berikut) harus memiliki laju sampel yang sama, tetapi laju sampel pada pin capture-in dan render-out masing-masing dapat dipilih secara independen dari pin lain. Laju sampel pada pin capture-in bisa (dalam urutan preferensi) 16 kHz, 48 kHz, 44,1 kHz, atau 8 kHz. (Urutan preferensi didasarkan pada waktu pemrosesan dan kualitas audio.) Laju sampel pada pin render-out bisa (dalam urutan preferensi) 16 kHz, 48 kHz, atau 44,1 kHz. Perhatikan bahwa pin render-out tidak mendukung laju sampel 8 kHz.

Diagram yang mengilustrasikan pin dan koneksi filter sistem AEC.

  • Simpul AEC dan NS (lihat gambar dalam Mengekspos efek pengambilan Hardware-Accelerated) hanya dapat menangani aliran monofonik. Jika aliran pengambilan adalah multisaluran (misalnya, stereo dua saluran), semua saluran selain yang pertama diabaikan (dan dibuang). Hanya aliran monofonik yang dapat diproses oleh sisi render.

  • Di Windows XP SP1, Windows Server 2003, dan yang lebih baru, batasan ini tidak ada. Filter sistem AEC menangani ketidakcocokan antara jam dengan benar untuk menangkap dan merender aliran, dan perangkat terpisah dapat digunakan untuk menangkap dan merender.

  • Ketika filter sistem AEC digunakan, driver sistem SysAudio mematikan akselerasi perangkat keras untuk pencampuran, konversi laju sampel, spasialisasi 3D, dan sebagainya. Semua pencampuran aliran dilakukan dalam emulasi perangkat lunak oleh driver sistem KMixer. Pembatasan ini diperlukan untuk memastikan bahwa semua audio yang diputar oleh perangkat penyajian dapat dibatalkan dari aliran pengambilan oleh filter sistem AEC.

  • Setiap pemrosesan sinyal yang dilakukan sebelum simpul AEC atau NS di sisi pengambilan grafik atau setelah simpul AEC atau NS di sisi render harus invarian waktu linier. Melakukan pemrosesan sinyal nonlinear atau bervariasi waktu di salah satu lokasi ini mencegah AEC membatalkan gema dalam sinyal penangkapan.

  • Pemfilteran AEC hanya membatalkan gema yang berasal dari saluran yang difilter AEC di komputer Anda. Audio yang keluaran melalui saluran yang tidak melewati AEC tidak dibatalkan gemanya. Gema dalam saluran audio non-AEC secara fungsional setara dengan gema dalam audio yang diputar di radio di kantor di samping komputer Anda. AEC tidak memiliki cara untuk membatalkan (dan tidak berpengaruh pada) gema dari radio atau saluran non-AEC.

Persyaratan sebelumnya berlaku untuk semua grafik filter audio streaming kernel yang menggabungkan efek pengambilan yang diterapkan dalam Aec.sys. Pembatasan ini mencerminkan asumsi mendasar dalam desain dan implementasi filter sistem AEC. Batasan pada format aliran mungkin berubah dalam versi Windows yang akan datang.

Setiap desain produk yang menggunakan filter sistem AEC harus mempertimbangkan batasan sebelumnya. Pertanyaan dan jawaban berikut menunjukkan bagaimana batasan ini dapat memengaruhi perilaku pemfilteran AEC:

T: Saya telah membuat buffer DirectSound untuk penyajian stereo, tetapi kedua saluran terdengar sama ketika saya menggunakan AEC. Mengapa ini?

A: AEC hanya berfungsi pada aliran mono, sehingga KMixer mencampur aliran stereo kembali ke mono untuk memenuhi batasan ini.

T: Mengapa audio 44-kHz, 16-bit saya terdengar seperti 16 kHz saat saya menggunakan AEC?

A: Karena filter sistem AEC melakukan semua pemrosesan internal pada 16 kHz.

T: Mengapa saya tidak bisa mendapatkan buffer DirectSound yang dipercepat perangkat keras dengan AEC?

A: Karena SysAudio menonaktifkan pencampuran yang dipercepat perangkat keras saat AEC diaktifkan.

T: Apakah filter sistem AEC akan berfungsi dengan kartu Sound Blaster 16 lama saya?

J: Ya. Meskipun kartu Sound Blaster16 tidak dapat secara bersamaan mengelola aliran penyajian dan pengambilan 16-bit, kartu tersebut dapat secara bersamaan mengelola aliran penyajian 8-bit dan aliran pengambilan 16-bit, yang merupakan kombinasi yang didukung oleh pin render-out dan capture-in filter sistem AEC. Kartu audio baru harus dirancang untuk mendukung kedalaman bit setidaknya 16 bit untuk penyajian dan pengambilan.

Ringkasan Format Data untuk Pin AEC

Aplikasi DirectSound yang memungkinkan filter sistem AEC dapat memilih untuk buffer DirectSound-nya laju sampel atau ukuran sampel yang didukung KMixer. KMixer mengonversi data dari buffer penyajian aplikasi menjadi format mono 16-kHz 16-bit sebelum memasuki filter sistem AEC. Demikian pula, KMixer dapat mengonversi data yang ditujukan untuk buffer pengambilan aplikasi DirectSoundCapture menjadi format mono 16-kHz 16-bit setelah meninggalkan filter sistem AEC. Namun, untuk meminimalkan jumlah pemrosesan yang dilakukan dalam grafik dan mencapai kualitas audio tertinggi, aplikasi harus menggunakan format mono 16-bit 16 kHz untuk penyajian dan menangkap buffer.

Jika Anda ingin perangkat keras audio Anda bekerja dengan filter sistem AEC, maka pin penyajian perangkat keras harus mendukung setidaknya salah satu laju sampel yang didukung oleh pin render-out AEC, dan pin pengambilan perangkat keras harus mendukung salah satu laju sampel yang didukung oleh pin capture-in AEC. Untuk mencapai performa AEC terbaik, perangkat keras Anda harus mendukung laju sampel 16 kHz selain tingkat yang lebih tinggi yang didukungnya. Dengan mendukung laju 16 kHz, perangkat keras mengurangi jumlah pemrosesan yang harus dilakukan filter sistem AEC dengan menghilangkan kebutuhan untuk melakukan konversi laju sampel.

Pin render-in filter sistem AEC terhubung ke pin output KMixer. KMixer melakukan konversi aliran input yang diperlukan ke format yang diperlukan pin render-in. Pin render-in hanya mendukung dua format data:

  • Format PCM mono 16 kHz dengan ukuran sampel 16 bit

  • Format PCM mono 16 kHz dengan ukuran sampel 8 bit

Pin capture-out hanya mendukung satu format:

  • Format PCM mono 16 kHz dengan ukuran sampel 16 bit

Jika format buffer aplikasi DirectSoundCapture adalah PCM mono 16-bit 16 kHz, pin pengambilan AEC dapat melewati KMixer dan terhubung langsung ke DSound.DLL (lihat gambar sebelumnya). Jika tidak, pin pengambilan AEC terhubung ke KMixer, yang mengonversi aliran PCM mono 16-bit 16 kHz dari pin ke dalam format apa pun yang digunakan buffer tangkapan aplikasi.

Pin render-out AEC dapat menangani salah satu format berikut:

  • PCM 16-kHz 16-bit dengan dua saluran (stereo)

  • PCM 16-kHz 8-bit dengan dua saluran

  • PCM 16-bit 48 kHz dengan dua saluran

  • PCM 8-bit 48-kHz dengan dua saluran

  • PCM 16-bit 44,1 kHz dengan dua saluran

  • PCM 8-bit 44,1-kHz dengan dua saluran

Pin render-out menghasilkan aliran stereo dengan menyalin saluran tunggal dari simpul AEC ke kedua saluran aliran output.

Pin pengambilan dapat menangani salah satu format berikut:

  • PCM 16-kHz 16-bit dengan sejumlah saluran

  • PCM 16-bit 48 kHz dengan sejumlah saluran

  • PCM 16-bit 44,1-kHz dengan sejumlah saluran

  • PCM 16-bit 8-kHz dengan sejumlah saluran

Pin capture-in hanya menggunakan saluran pertama dan mengabaikan (dan membuang) yang lain.

Semua pin filter sistem AEC menggunakan nilai parameter format data yang diperlihatkan dalam tabel berikut.

Anggota KSDATARANGE Nilai Parameter

MajorFormat

KSDATAFORMAT_TYPE_AUDIO

SubFormat

KSDATAFORMAT_SUBTYPE_PCM

Penentu

KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

Untuk informasi selengkapnya tentang anggota MajorFormat, SubFormat, dan Specifier , lihat KSDATARANGE. Untuk contoh pendeskripsi rentang data KSDATARANGE_AUDIO yang menggunakan ketiga nilai parameter ini, lihat Rentang Data Aliran PCM.