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.
Dalam grafik filter audio, aliran audio dapat mengalir dari pin sumber satu filter ke pin sink filter lain hanya jika kedua pin mendukung format umum untuk aliran. Demikian pula, klien dapat mengirim aliran audio ke pin sink pada filter atau menerima aliran audio dari pin sumber pada filter hanya jika klien dan pin mendukung format aliran umum. Filter audio menggunakan teknik yang disebut irisan data (singkatan dari irisan rentang data) untuk mengidentifikasi format aliran yang umum antara dua pin atau antara klien dan pin.
Misalnya, di Windows Server 2003, Windows XP, Windows 2000, dan Windows Me/98, driver sistem SysAudio menggunakan teknik persimpangan data untuk membangun grafik filter audio dengan menghubungkan pasangan pin filter yang mendukung format data audio yang kompatibel.
Pabrik pin menentukan sekumpulan format yang didukung setiap pin sebagai array rentang data, di mana setiap rentang data adalah struktur jenis KSDATARANGE_AUDIO. Rentang data menentukan jenis format umum, yang dapat KSDATAFORMAT_WAVEFORMATEX atau KSDATAFORMAT_DSOUND. Selain itu, rentang data menentukan rentang nilai untuk setiap parameter berikut:
Bit per sampel
Frekuensi sampel
Jumlah saluran
Struktur KSDATARANGE_AUDIO menentukan nilai minimum dan maksimum untuk rentang bit per sampel dan frekuensi sampel tetapi hanya maksimum untuk rentang jumlah saluran. Jumlah minimum saluran secara implisit satu.
pekerjaan menegosiasikan format data umum untuk dua pin terdiri dari menemukan dua rentang data—satu untuk setiap pin—yang saling berpotongan. Sepasang rentang data bersinggungan jika:
Mereka mendukung format gelombang umum yang sama (KSDATAFORMAT_WAVEFORMATEX atau KSDATAFORMAT_DSOUND).
Rentang bit per sampel mereka tumpang tindih.
Rentang frekuensi sampel mereka tumpang tindih.
Seperti disebutkan sebelumnya, struktur KSDATAFORMAT_AUDIO menyiratkan model perangkat keras di mana jumlah minimum saluran yang didukung oleh pin selalu satu. Menurut model ini, rentang jumlah saluran untuk dua pin harus selalu tumpang tindih karena kedua pin mendukung setidaknya satu saluran. Jelas, adaptor perangkat keras dengan jumlah minimum saluran yang lebih besar dari satu tidak sesuai dengan model ini, tetapi driver adaptor dapat mencakup penangan persilangan data khusus untuk menangani jenis masalah ini (lihat contoh di Penangan Data-Intersection Khusus).
Setelah menemukan sepasang rentang data yang berpotangan untuk dua pin, handler memilih format data umum dari wilayah persimpangan sebagai berikut:
Jumlah bit per sampel dipilih dari wilayah tempat rentang dua bit per sampel tumpang tindih.
Frekuensi sampel dipilih dari wilayah tempat dua rentang frekuensi sampel tumpang tindih.
Jumlah saluran dipilih dari wilayah di mana dua rentang jumlah saluran tumpang tindih.
Misalnya, saat menegosiasikan format umum untuk pin sink dari driver port audio dan pin sumber dari filter lain (biasanya, driver sistem KMixer), SysAudio terlebih dahulu mendapatkan array rentang data dari pin sumber. SysAudio kemudian mengirim permintaan KSPROPERTY_PIN_DATAINTERSECTION ke pin sink dan menyertakan array rentang data pin sumber dengan permintaan ini. Lapisan kernel-streaming mencegat permintaan dan secara berulang memanggil pengelola persimpangan data dari driver port untuk setiap elemen berturut-turut dalam array rentang data pada pin sumber, dimulai dengan elemen pertama, hingga pengelola berhasil menemukan persimpangan data.
Dengan setiap panggilan yang dilakukan SysAudio ke handler perpotongan data dari driver port, handler terlebih dahulu mendapatkan array rentang data dari pin sink yang disediakan oleh driver miniport. Kemudian melakukan iterasi melalui array, dimulai dengan elemen pertama, hingga berhasil menemukan persimpangan antara rentang data sink-pin dan rentang data pin sumber saat ini. Handler memilih format umum yang berada dalam irisan dan mengeluarkan format ini kepada pemanggil.
Pada setiap langkah dalam iterasi, driver port memanggil handler persimpangan data milik driver miniport dengan dua rentang data--satu untuk masing-masing dari dua pin. Jika pada langkah apa pun handler eksklusif menolak untuk menangani pemeriksaan persimpangan data antara dua rentang data, handler persimpangan data dari driver port melakukan pemeriksaan tersebut.
Untuk meringkas, pencarian persimpangan antara rentang data pin sumber dan rentang data sink-pin adalah proses berulang:
Di perulangan luar, lapisan kernel-streaming menelusuri elemen-elemen berturut-turut dalam array rentang-data pin sumber, dimulai dengan elemen array pertama.
Dalam perulangan dalam, driver port melakukan iterasi melalui elemen-elemen secara berurutan dalam array rentang data pin sink, dimulai dengan elemen array pertama.
Pencarian berhenti setelah menemukan persimpangan data pertama. Proses ini cenderung lebih menguntungkan elemen-elemen di awal rentang data dari setiap pin. Saat menentukan array rentang data untuk pin, driver adaptor harus menyusun elemen array dengan menempatkan rentang data untuk format pilihan menuju awal array.