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


Пересечения диапазонов данных в AVStream

Формат данных — это единый набор параметров, описывающих некоторые аспекты соединения. Например, формат звуковых данных может указывать определенный формат звука со скоростью Х выборок в секунду и битами Y на выборку.

Диапазон данных задает последовательность допустимых параметров. Например, диапазон звуковых данных может указывать определенный формат звука при выборке A-B в секунду и битах C-D на выборку.

Мини-driver предоставляет список диапазонов данных, поддерживаемых для определенного контакта в элементе DataRanges соответствующей структуры KSPIN_DESCRIPTOR .

В AVStream мини-накопители могут предоставлять собственные обработчики пересечения диапазона данных, предоставляя указатель на подпрограмму обратного вызова, предоставляемую мини-накопителем, в элементе IntersectHandlerKSPIN_DESCRIPTOR_EX. Чтобы avStream пересекал диапазоны, присвойте этому члену значение NULL. Сведения об определении процедуры обратного вызова см. в статье AVStrMiniIntersectHandlerEx .

Если мини-диск предоставляет обработчик пересечения, при необходимости пересечения он получает два диапазона данных, которые соответствуют основному типу, подчиненной форме и спецификатору. Кроме того, обязательные атрибуты диапазонов данных совпадают.

Если диапазоны пересекаются и в параметре Data процедуры обратного вызова AVStrMiniIntersectHandlerEx указано достаточное пространство буфера, то подпрограмма пересечения выбирает формат пересечения и возвращает его вызывающему объекту в буфере, на который указывает Data.

Если два диапазона данных не пересекаются, обработчик возвращает STATUS_NO_MATCH.

Если мини-driver указал диспетчер AVStrMiniPinSetDataFormat , avStream вызывает эту диспетчеризацию, чтобы сообщить мини-driver о том, что AVStream задает определенный формат для закрепления. Укажите указатель на подпрограмму обратного вызова AVStrMiniPinSetDataFormat в элементе SetDataFormatструктуры KSPIN_DISPATCH . (Мини-накопители, которые являются клиентами класса потока , получают SRB_SET_DATA_FORMAT вместо AVStrMiniPinSetDataFormat.)

Мини-диск может отказаться от предлагаемого формата, возвращая STATUS_NO_MATCH из AVStrMiniPinSetDataFormat.

Помимо первоначального вызова AVStrMiniPinSetDataFormat перед созданием пин-кода, мини-driver может получить второй вызов AVStrMiniPinSetDataFormat непосредственно перед переходом контакта в состояние RUN. Если клиент AVStream или класса stream является мини-хранилищем для захвата видео и вы получаете такое уведомление, эта диспетчеризация содержит фактические параметры поверхности. Если это возможно, мини-диск не должен завершать это второе изменение формата. Не предполагайте, что будет выполняться второй вызов диспетчеризации.

Мини-driver должен записывать данные в любом формате, содержавшегося в последней успешной отправке AVStrMiniPinSetDataFormat .