Поделиться через


Указание диапазонов данных закрепления

После определения топологии для представления путей к данным и узлов управления на устройствах необходимо определить диапазоны данных для каждого настраиваемого контакта. Настраиваемый пин-код можно создать, настроить и подключить к потоку волны или MIDI под управлением программного обеспечения. В отличие от этого, физическое соединение или закрепление моста существует неявно и не может быть создано или настроено под управлением программного обеспечения.

Перед подключением настраиваемого контакта для использования в качестве приемника или источника для волны или MIDI-потока необходимо настроить контакт для обработки формата данных для потока. Как правило, закрепление можно настроить для приема одного из нескольких форматов потока. Например, волновой выход PCM может принимать следующие диапазоны параметров потока PCM:

  • Частота дискретизации 11,025 кГц, 22,05 кГц, 44,1 кГц и 48 кГц

  • Размеры выборки 8, 16, 24 и 32 бит

  • Любое количество каналов от 1 до 8

Для каждого типа настраиваемого контакта драйвер минипорта описывает различные форматы данных потока, которые может обрабатывать закрепление. Эти диапазоны параметров можно указать в виде массива дескрипторов диапазона данных, как показано в следующем примере кода.

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

Обратите внимание, что PinDataRangesPcm массив в предыдущем примере содержит один дескриптор диапазона данных типа KSDATARANGE_AUDIO. Как правило, массив диапазонов данных может содержать произвольное количество дескрипторов. Например, волновой вывод не pcM может поддерживать форматы AC-3-over-S/PDIF и WMA Pro-over-S/PDIF. Каждый из этих двух форматов задается с помощью отдельного дескриптора диапазона данных. Таким образом, массив диапазона данных контакта будет содержать по крайней мере две KSDATARANGE_AUDIO структуры.

Настраиваемое закрепление, поддерживающее формат потока музыки из приложения, использующего функции DirectMusic или windows multimedia midiInXxx и midiOutXxx , использует дескриптор диапазона данных типа KSDATARANGE_MUSIC.

Драйвер порта получает сведения о диапазоне данных от драйвера мини-порта и использует эти сведения, где это возможно, для обработки запросов на получение сведений о форматах данных, которые может поддерживать каждый пин-код. В случае контакта с простым диапазоном данных PCM драйвер порта может обрабатывать запросы пересечения для этого контакта. В запросе на пересечение клиент предоставляет набор диапазонов данных, представляющих возможные форматы данных для потока. По возможности обработчик пересечения драйвера порта выбирает определенный формат данных из диапазонов данных в запросе, которые также попадают в диапазоны данных контакта. Этот формат представляет собой пересечение двух наборов диапазонов данных. Таким образом, клиент и пин-код могут обрабатывать поток в этом формате. Для более сложных диапазонов данных драйвер мини-порта может предоставить собственный обработчик пересечения, который затем использует драйвер порта вместо собственного обработчика по умолчанию. Обработчик пересечения драйвера мини-порта может разрешить любые требования к формату, которые может быть трудно выразить драйверу порта в виде массива диапазонов данных. Дополнительные сведения см. в разделе Обработчики пересечения данных и многоканальные звуковые данные и файлы WAVE.