Menentukan Rentang Data Pin

Setelah menentukan topologi untuk mewakili jalur data dan node kontrol di perangkat Anda, langkah selanjutnya adalah menentukan rentang data untuk setiap pin yang dapat dikonfigurasi. Pin yang dapat dikonfigurasi dapat dibuat, dikonfigurasi, dan terhubung ke gelombang atau aliran MIDI di bawah kontrol perangkat lunak. Sebaliknya, koneksi fisik atau pin jembatan ada secara implisit dan tidak dapat dibuat atau dikonfigurasi di bawah kontrol perangkat lunak.

Sebelum menyambungkan pin yang dapat dikonfigurasi untuk berfungsi sebagai sink atau sumber untuk aliran gelombang atau MIDI, pin harus dikonfigurasi untuk menangani format data untuk aliran. Biasanya, pin dapat dikonfigurasi untuk menerima salah satu dari beberapa format aliran. Misalnya, pin output gelombang PCM mungkin menerima rentang parameter aliran PCM berikut:

  • Laju sampel 11,025 kHz, 22,05 kHz, 44,1 kHz, dan 48 kHz

  • Ukuran sampel 8, 16, 24, dan 32 bit

  • Sejumlah saluran dari 1 hingga 8

Untuk setiap jenis pin yang dapat dikonfigurasi, driver miniport menjelaskan berbagai format data aliran yang dapat ditangani pin. Rentang parameter ini dapat ditentukan sebagai array deskriptor rentang data, seperti yang ditunjukkan dalam contoh kode berikut.

static KSDATARANGE_AUDIO PinDataRangesPcm[] =
{
    {
        {
            sizeof(KSDATARANGE_AUDIO),
            0,
            0,
            0,
            STATICGUIDOF(KSDATAFORMAT_TYPE_AUDIO),
            STATICGUIDOF(KSDATAFORMAT_SUBTYPE_PCM),
            STATICGUIDOF(KSDATAFORMAT_SPECIFIER_WAVEFORMATEX)
        },
        8,       // Maximum number of channels
        8,       // Minimum number of bits-per-sample
        32,      // Maximum number of bits-per-channel
        11025,   // Minimum rate
        48000    // Maximum rate
    }
};

Perhatikan bahwa PinDataRangesPcm array dalam contoh sebelumnya berisi deskriptor rentang data tunggal dari jenis KSDATARANGE_AUDIO. Secara umum, array rentang data dapat berisi jumlah deskriptor arbitrer. Misalnya, pin output gelombang non-PCM mungkin mendukung format AC-3-over-S/PDIF dan WMA Pro-over-S/PDIF. Masing-masing dari kedua format ini ditentukan oleh deskriptor rentang data terpisah. Dengan demikian, rentang data pin akan berisi setidaknya dua struktur array KSDATARANGE_AUDIO.

Pin yang dapat dikonfigurasi yang mendukung format aliran musik dari aplikasi yang menggunakan fungsi DirectMusic atau Windows multimedia midiInXxx dan midiOutXxx menggunakan deskriptor rentang data jenis KSDATARANGE_MUSIC.

Driver port memperoleh informasi rentang data dari driver miniport dan menggunakan informasi ini, sedapat mungkin, untuk menangani permintaan informasi tentang format data yang dapat didukung oleh setiap pin. Dalam kasus pin dengan rentang data PCM sederhana, driver port dapat menangani permintaan persimpangan untuk pin tersebut. Dalam permintaan persimpangan, klien menyediakan sekumpulan rentang data yang mewakili kemungkinan format data untuk aliran. Jika memungkinkan, penangan interseksi driver port menentukan format data tertentu dari rentang data dalam permintaan yang juga termasuk dalam rentang data pin-nya. Format ini mewakili persimpangan dari dua set rentang data. Oleh karena itu, klien dan pin dapat memproses aliran dengan format ini. Untuk rentang data yang lebih kompleks, driver miniport dapat menyediakan handler interseksi sendiri, yang kemudian digunakan oleh driver port alih-alih handler default-nya sendiri. Penghandel persimpangan driver miniport dapat memungkinkan persyaratan format apa pun yang mungkin sulit diekspresikan ke driver port sebagai array rentang data. Untuk informasi selengkapnya, lihat penanganData-Intersection dan Beberapa Data Audio Saluran dan File WAVE.