Форматы и диапазоны данных KS
Контакты KS определяют форматы данных и диапазоны с помощью структур KSDATAFORMAT и KSDATARANGE . Формат данных задает один атрибут потока данных, например размер выборки звука 16 бит. Диапазон данных определяет несколько форматов, например диапазон выборки звука от 16 до 24 бит.
Мини-диск содержит массив структур KSDATARANGE в каждой KSPIN_DESCRIPTOR структуре, которую он предоставляет. Форматы, предоставляемые корпорацией Майкрософт, перечислены в ksmedia.h.
Структура KSDATARANGE имеет те же члены, что и структура KSDATAFORMAT; однако мини-диск может указать подстановочные знаки для основных форматов, подчиненных форматов и описателя KSDATARANGE.
Мини-накопители используют расширенные версии этих структур для определения значений для конкретных носителей. Сведения о том, как это работает в аудио- и видеозахвате, см. в разделах Форматы аудиоданных и диапазоны данных и Выбор формата потока.
Клиенты используют следующие свойства для запроса поддержки формата данных контактов, созданных заданной фабрикой контактов в фильтре:
KSPROPERTY_PIN_DATARANGES. Фильтр KS сообщает обо всех диапазонах данных, поддерживаемых контактами, созданными фабрикой контактов. Сюда входят все форматы данных, которые могут поддерживаться контактом.
KSPROPERTY_PIN_CONSTRAINEDDATARANGES. Фильтр KS сообщает обо всех диапазонах данных, поддерживаемых контактами, созданными фабрикой контактов, с учетом текущего состояния внутреннего драйвера.
KSPROPERTY_PIN_PROPOSEDATAFORMAT. Клиенты могут использовать это свойство для запроса, поддерживают ли экземпляры контактов, созданные фабрикой контактов, определенный формат данных.
KSPROPERTY_PIN_DATAINTERSECTION. Клиенты могут использовать это свойство для предоставления различных форматов данных.
После создания экземпляра пин-кода клиент пользовательского режима может определить текущий формат данных или запросить изменение формата данных с помощью KSPROPSETID_Connection запросов свойств. Например, клиент использует KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT , чтобы определить, поддерживает ли пин-код заданный формат данных. Клиент использует KSPROPERTY_CONNECTION_DATAFORMAT для изменения формата данных.
Мини-накопители и клиенты KS могут динамически согласовывать форматы данных. При изменении формата данных потока мини-диск указывает флаг KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY в элементе OptionsFlags KSSTREAM_HEADER. Мини-диск передает новый формат данных, описанный в структуре KSDATAFORMAT , в соответствующий буфер данных.