Udostępnij przez


Określanie zakresów danych pinu

Po zdefiniowaniu topologii reprezentującej ścieżki danych i węzły sterowania na urządzeniach następnym krokiem jest zdefiniowanie zakresów danych dla każdego konfigurowalnego numeru PIN. Konfigurowalny pin można utworzyć, skonfigurować i podłączyć do strumienia fal lub MIDI za pomocą oprogramowania. Natomiast połączenie fizyczne lub mostkowanie istnieje niejawnie i nie można go ani utworzyć, ani skonfigurować za pomocą oprogramowania.

Przed podłączeniem konfigurowalnego pina do działania jako odbiornik lub źródło strumienia audio lub MIDI, należy skonfigurować pin do obsługi formatu danych strumienia. Zazwyczaj można skonfigurować pin tak, aby akceptował jeden z kilku formatów strumienia. Na przykład pin wyjściowy danych PCM może zaakceptować następujące zakresy parametrów strumienia PCM:

  • Częstotliwość próbkowania 11,025 kHz, 22,05 kHz, 44,1 kHz i 48 kHz

  • Rozmiary próbek 8, 16, 24 i 32 bitów

  • Dowolna liczba kanałów z zakresu od 1 do 8

Dla każdego typu konfigurowalnego pinu, sterownik miniportu opisuje różne formaty danych strumienia, które pin może obsłużyć. Te zakresy parametrów można określić jako tablicę deskryptorów zakresu danych, jak pokazano w poniższym przykładzie kodu.

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
    }
};

Należy pamiętać, że tablica PinDataRangesPcm w poprzednim przykładzie zawiera deskryptor pojedynczego zakresu danych typu KSDATARANGE_AUDIO. Ogólnie rzecz biorąc, tablica zakresów danych może zawierać dowolną liczbę deskryptorów. Na przykład pin wyjściowy dla fal innych niż PCM może obsługiwać formaty AC-3-over-S/PDIF i WMA Pro-over-S/PDIF. Każdy z tych dwóch formatów jest określany przez oddzielny deskryptor zakresu danych. W związku z tym tablica zakresów danych pinu będzie zawierać co najmniej dwie struktury KSDATARANGE_AUDIO.

Konfigurowalny pin obsługujący format strumienia muzyki z aplikacji wykorzystującej funkcje DirectMusic lub midiInXxx i midiOutXxx używa deskryptora danych typu KSDATARANGE_MUSIC.

Sterownik portu uzyskuje informacje o zakresie danych od sterownika miniportu i używa tych informacji, tam, gdzie to możliwe, do przetwarzania żądań o informacje dotyczące formatów danych, które mogą obsługiwać każdy pin. W przypadku numeru PIN z prostym zakresem danych PCM sterownik portu może obsługiwać żądania przecięcia dla tego numeru PIN. W żądaniu przecięcia klient dostarcza zestaw zakresów danych reprezentujących możliwe formaty danych dla strumienia. Jeśli to możliwe, procedura obsługi przecięcia sterownika portu wybiera określony format danych z zakresów danych w żądaniu, który również mieści się w zakresach danych pinu. Ten format reprezentuje przecięcie dwóch zestawów zakresów danych. W związku z tym zarówno klient, jak i numer PIN mogą przetwarzać strumień w tym formacie. W przypadku bardziej złożonych zakresów danych sterownik miniportu może zapewnić własną procedurę obsługi skrzyżowania, której używa następnie sterownik portu zamiast własnej, domyślnej procedury obsługi. Program obsługi przecięć sterownika miniportu może zezwalać na wszelkie wymagania dotyczące formatu, które mogą być trudne do wyrażenia sterownikowi portu jako tablicę zakresów danych. Aby uzyskać więcej informacji, zobacz procedury obsługiData-Intersection i wielokanałowe dane audio i pliki WAVE.