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


KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET

Идентификатор свойства KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET , определенный в KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_PROPERTY , используется для установки параметров для каждого кадра в драйвере.

Сводка использования

Чтобы задать параметры для каждого кадра, элемент управления свойством KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_SET отправляется драйверу вместе с полезными данными параметров каждого кадра.

Это свойство может быть прочитано или записано. Хотя вызов GET можно использовать для возврата последних параметров кадра, заданных в драйвере, вызов GET не предоставляется клиенту приложения и выполняется только во время инициализации, когда элемент управления параметрами для каждого кадра создается конвейером MF, где драйвер должен вернуть STATUS_BUFFER_OVERFLOW с размером буфера 0.

В вызове GET сначала драйверу отправляется буфер нулевой длины, чтобы узнать необходимый размер буфера данных для хранения всех параметров каждого кадра, заданных драйвером. В ответ на этот вызов драйвер должен вернуть STATUS_BUFFER_OVERFLOW с требуемым размером буфера параметров для каждого кадра, который должен быть равным 0, если параметры для каждого кадра никогда не были заданы, или по крайней мере размер KSCAMERA_PERFRAMESETTING_HEADER в противном случае.

Полезные данные для каждого кадра должны начинаться с KSCAMERA_PERFRAMESETTING_HEADER, за которым следует один или несколько параметров кадра. Количество параметров кадра указывается в frameCount. Параметры для каждого кадра должны начинаться с KSCAMERA_PERFRAMESETTING_FRAME_HEADER, за которым следует ноль или более параметров элемента. Количество параметров элемента указывается в параметре ItemCount. Параметры для каждого элемента, если таковые должны начинаться с KSCAMERA_PERFRAMESETTING_ITEM_HEADER.

Если для параметров для каждого элемента есть полезные данные Value, за KSCAMERA_PERFRAMESETTING_ITEM_HEADER следует KSCAMERA_EXTENDEDPROP_VALUE. Если пользовательский элемент присутствует, за KSCAMERA_PERFRAMESETTING_ITEM_HEADER должен следовать KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM, а затем пользовательские данные, связанные с идентификатором GUID, указанным в KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM.

Если frameCount имеет значение 0, драйвер должен отклонить полезные данные параметров для каждого кадра. Если itemCount имеет значение 0, параметры фрейма не указываются. Драйвер должен применить глобальные параметры к связанному кадру. Например, FrameCount = 1 и ItemCount = 0 подразумевает одну последовательность фотографий с переменной кадра с глобальными параметрами.

На рисунке ниже показан макет структуры данных для конфигурации полезных данных параметров кадра. В приведенном ниже примере параметры для каждого кадра для четырех кадров настраиваются с кадром 0, содержащим три элемента, два без полезных данных и один с полезными данными Value; кадр 1, содержащий два элемента, один без полезных данных, а другой с полезными данными значения; кадр 2, содержащий элемент 0, который подразумевает глобальные параметры для кадра 2; Кадр 3, содержащий четыре элемента, один с полезными данными значения, два с пользовательским элементом и пользовательскими полезными данными, и один без полезных данных.

структура заголовка perframesetting.

  1. Размер в заголовке параметров для каждого кадра представляет общий размер полезных данных для заполнения KSCAMERA_PERFRAMESETTING_HEADER. Размер

  2. Размер в кадре параметров кадра представляет размер, который необходимо заполнить KSCAMERA_PERFRAMESETTING_FRAME_HEADER. Размер кадра.

  3. Размер элемента представляет размер, который необходимо заполнить в KSCAMERA_PERFRAMESETTING_ITEM_HEADER. Размер элемента.

  4. Размер настраиваемого элемента представляет размер, который необходимо заполнить в KSCAMERA_PERFRAMESETTING_CUSTOM_ITEM. Размер настраиваемого элемента.

Время экспозиции параметров для каждого кадра

Если время экспозиции вручную указано в параметрах кадра, KSCAMERA_EXTENDEDPROP_VALUE. Value.ll будет содержать требуемое время экспозиции в вызове SET и текущее время экспозиции, используемое в вызове GET .

Компенсация параметров для каждого кадра

Если в параметрах кадра указана компенсация параметров вручную, KSCAMERA_EXTENDEDPROP_VALUE. Value.l будет содержать требуемую компенсацию экспозиции в вызове SET и текущую компенсацию экспозиции, используемую в вызове GET .

Фокус параметров для каждого кадра

Если в параметрах кадра указан параметр вручную для каждого кадра, KSCAMERA_EXTENDEDPROP_VALUE. Value.ul будет содержать нужную позицию объектива в вызове SET и текущую позицию объектива, используемую в вызове GET .

Параметры iso для каждого кадра

Если драйвер не поддерживает KSCAMERA_EXTENDEDPROP_ISO_MANUAL, полезные данные Значения не включаются. В противном случае за заголовком элемента настройки кадра должен следовать KSCAMERA_EXTENDEDPROP_VALUE. В вызове SETKSCAMERA_EXTENDEDPROP_VALUE. Value.ul содержит требуемую скорость ISO, если KSCAMERA_EXTENDEDPROP_ISO_MANUAL поддерживается и указан в KSCAMERA_PERFRAMESETTING_ITEM_HEADER. Флаги.

Ниже показано, как должны выглядеть заголовок элемента и полезные данные value, если параметры ISO для каждого кадра KSCAMERA_EXTNDEDPROP_ISO_AUTO, KSCAMERA_EXTENDEDPROP_ISO_MANUAL (мин = 30, максимум = 210, шаг =20) следующим образом:

KSCAMERA_EXTNDEDPROP_ISO_AUTO, 
KSCAMERA_EXTENDEDPROP_ISO_MANUAL (min = 30, max = 210, step =20)
  1. Если скорость ISO составляет 70

    KSCAMERA_PERFRAMESETTING_ITEM_HEADER.Flags = KSCAMERA_EXTENDEDPROP_ISO_MANUAL
    KSCAMERA_EXTENDEDPROP_VALUE.Value.ul = 70
    
  2. Если скорость ISO составляет 50

    KSCAMERA_PERFRAMESETTING_ITEM_HEADER.Flags = KSCAMERA_EXTENDEDPROP_ISO_MANUAL
    KSCAMERA_EXTENDEDPROP_VALUE.Value.ul = 50
    

В следующей таблице перечислены доступные элементы управления и значения для параметров для каждого кадра. Фактическая доступность определяется фактической возможностью драйвера, которую можно получить с помощью KSPROPERTY_CAMERACONTROL_PERFRAMESETTING_CAPABILITY.

Имя Доступные значения

Время выдержки

Автоматически или время в 100 наносекундах.

Мигание

Включение и выключение, автоматическое включение и выключение красных глаз, мощность вспышки в процентах.

Коррекция экспозиции

Значение автоматического или компенсационного шага.

Скорость ISO

Автоматически или вручную с целочисленным значением ISO.

Фокус

Положение автоматического или логического объектива. Это значение не имеет определенной единицы измерения.

Пользовательские свойства

Изготовитель оборудования определяет это с помощью пользовательского GUID и данных свойств.

Изображение подтверждения

Вкл./выкл.

Чтобы передать данные пользовательских свойств в параметры для каждого кадра, приложение выполняет следующие действия:

  1. Вызывает QueryInterface в IFrameSettingsControls, чтобы получить интерфейс IMFGetServices, связанный с параметрами для каждого кадра.

  2. Вызывает GetService из интерфейса IMFGetServices для создания пользовательского интерфейса IMFAttributes в параметрах для каждого кадра.

  3. Вызывает методы SetUINT32, SetBlob и т. д. для guid пользовательского свойства, чтобы задать данные настраиваемых свойств в атрибутах IMFAttributes, связанных с параметрами для каждого кадра.

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

Поле LoopCount в KSCAMERA_PERFRAMESETTING_HEADER указывает количество повторов, которые должны применяться к будущим кадрам, которые будут захвачены в последовательности фотографий. Значение LoopCount жестко закодировано конвейером как 1 (например, параметры для каждого кадра будут применяться только один раз без дальнейших повторений). Поле FrameCount в KSCAMERA_PERFRAMESETTING_HEADER указывает количество параметров кадра, которые должны применяться к кадрам в каждом повторе.

Поле ItemCount в KSCAMERA_PERFRAMESETTING_FRAME_HEADER указывает количество параметров элемента, которые должны применяться к соответствующему кадру. Если ItemCount имеет значение 0, к соответствующему кадру должны применяться глобальные параметры.

В таблице ниже перечислены возможные конфигурации и соответствующие типы последовательностей фотографий.

LoopCount FrameCount ItemCount Тип

L(L=1)

N(N>0)

S(S>=0)

Конечная переменная последовательность фотографий

L(L=1)

1

0

Один кадр конечной переменной последовательности фотографий с глобальными параметрами

L(L=1)

0

S

Недопустимая конфигурация

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

Если число циклов — L (L = 1), а число кадров — N (N > 0), это конечная переменная последовательность фотографий. Параметры для каждого кадра будут повторяться L = 1 раз, а параметры N кадров будут применены к следующим N будущим кадрам в каждом повторе.

Если число циклов равно L (L = 1), количество кадров равно 1, а число элементов равно 0, это последовательность фотографий с конечной переменной одного кадра с глобальными параметрами.

Переменная последовательность фотографий дополнительно упрощается, чтобы не запрашивать какие-либо прошлые кадры. Конвейер жестко закодирует запрошенное число последних фотографий (например, RequestedHistoryFrames) до 0. Драйвер доставляет только будущие кадры в переменной последовательности фотографий. На следующем рисунке показано ожидаемое количество кадров, доставляемых драйвером в переменной последовательности фотографий. Число прошлых фотографий указывается в KSCAMERA_EXTENDEDPROP_PHOTOMODE. RequestedHistoryFrames с помощью KSPROPERTY_CAMERACONTROL_EXTENDED_PHOTOMODE расширенного элемента управления свойством, который в конвейере жестко закодирован до 0.

N : Frame Count
L : Loop Count
P : Past Photos Requested
T : Total number of frame delivered by driver
L = 1
P = 0
T = (N * L) + P

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

Требования

Заголовок

Ksmedia.h