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


Расширения Майкрософт для спецификации КЛАССА ВИДЕО USB 1.5

Обзор

Сводка 1.1

Расширения Майкрософт в спецификации класса ВИДЕО USB позволяют новым элементам управления и возможности переносить хорошо определенные метаданные кадров в стандартном формате.

1.2 Решения по архитектуре

Поддержка метаданных кадров класса USB (UVC) доступна для конечных точек ISOCH и BULK. Однако в случае конечной точки BULK размер метаданных ограничен 240 байтами (так как все данные видеокадров передаются в одном пакете видеокадров на конечных точках BULK).

Поддержка метаданных UVC доступна только для полезных данных на основе кадров.

Поддержка метаданных UVC доступна только через конвейер записи Media Foundation (MF).

Метаданные UVC являются согласием. Каждый IHV/OEM, требующий поддержки метаданных, должен быть включен с помощью пользовательского INF-файла.

Метаданные UVC поддерживают только выделенную системой память. Поверхности VRAM или DX не поддерживаются.

Обзор архитектуры 2

Описание 2.1

2.2.1 Обнаружение возможностей с помощью INF

2.2.1.1 По-прежнему запись изображений — метод 2

Некоторые существующие устройства UVC могут не поддерживать метод 2, описанный в разделе 2.4.2.4 (запись по-прежнему изображения) класса UVC 1.5 specification.pdf , который можно скачать на веб-сайте спецификации класса USB.

В Windows 10 версии 1607 и более ранних версиях конвейер захвата не использовал метод 2, даже если устройство объявило поддержку для него на спецификацию UVC 1.5.

В Windows 10 версии 1703 устройства, использующие этот метод, должны использовать пользовательский INF-файл для драйвера камеры, но для заданного оборудования требуется пользовательский INF-файл для включения метода 2 по-прежнему захвата изображений).

Примечание. Драйвер камеры может быть основан на USBVIDEO.SYS Windows или может быть основан на пользовательском двоичном файле драйвера.

Пользовательский INF-файл, основанный на пользовательском драйвере UVC или драйвере UVC в папке "Входящие", должен содержать следующую запись AddReg:

EnableDependentStillPinCapture: REG_DWORD: 0x0 (отключено) для 0x1 (включено)

Если для этой записи задано значение "Включено" (0x1), конвейер захвата использует метод 2 для записи по-прежнему (если встроенное ПО также объявляет поддержку метода 2, указанного спецификацией UVC 1.5).

Примером для пользовательского раздела INF будет следующее:

[USBVideo.NT.Interfaces]
AddInterface=%KSCATEGORY_CAPTURE%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_RENDER%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_VIDEO%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_RENDER_EXT%,GLOBAL,USBVideo.Interface
AddInterface=%KSCATEGORY_VIDEO_CAMERA%,GLOBAL,USBVideo.Interface

[USBVideo.Interface]
AddReg=USBVideo.Interface.AddReg

[USBVideo.Interface.AddReg]
HKR,,CLSID,,%ProxyVCap.CLSID%
HKR,,FriendlyName,,%USBVideo.DeviceDesc%
HKR,,RTCFlags,0x00010001,0x00000010
HKR,,EnableDependentStillPinCapture,0x00010001,0x00000001

Элементы управления единицами расширения 2.2.2

Расширение Майкрософт к спецификации класса ВИДЕО USB для включения новых элементов управления выполняется с помощью модуля расширения, определяемого guid MS_CAMERA_CONTROL_XU (называемой Microsoft-XU).

// {0F3F95DC-2632-4C4E-92C9-A04782F43BC8}
DEFINE_GUID(MS_CAMERA_CONTROL_XU,
    0xf3f95dc, 0x2632, 0x4c4e, 0x92, 0xc9, 0xa0, 0x47, 0x82, 0xf4, 0x3b, 0xc8);

Microsoft-XU, реализованный встроенного ПО устройства, содержит новые элементы управления, определенные в следующих подразделах. Следующие определения запросов применяются ко всем этим элементам управления, если для этого элемента управления не указано явное определение переопределения. Ознакомьтесь с классом UVC 1.5 specification.pdf для определений D3, D4, GET_INFO и т. д.

GET_INFO запрос должен сообщать элементу управления без автоматического обновления и асинхронных возможностей (например, для битов D3 и D4 должно быть задано значение 0).

GET_LEN запрос должен сообщать максимальную длину полезных данных для этого элемента управления (wLength).

GET_RES запрос должен сообщать о разрешении (шаг-размер) для qwValue/dwValue. Все остальные поля должны иметь значение 0.

GET_MIN запрос должен сообщать минимальное поддерживаемое значение для qwValue/dwValue. Все остальные поля должны иметь значение 0.

GET_MAX запрос должен сообщать максимально поддерживаемое значение для qwValue/dwValue. Кроме того, все поддерживаемые флаги должны иметь значение 1 в bmControlFlags. Все остальные поля должны иметь значение 0.

запросы GET_DEF и GET_CUR должны сообщать о параметрах по умолчанию и текущих параметрах соответственно для полей qwValue/dwValue и bmControlFlags. Все остальные поля должны иметь значение 0.

Запрос SET_CUR выдается узлом после задания всех полей.

В следующей таблице перечислены селекторы элементов управления для Microsoft-XU с соответствующими значениями и битовой позицией поля bmControls в дескрипторе модуля расширения:

Селектор элементов управления Значение Битовое положение
(поле bmControls)
MSXU_CONTROL_UNDEFINED 0x00 Неприменимо
MSXU_CONTROL_FOCUS 0x01 D0
MSXU_CONTROL_EXPOSURE 0x02 D1
MSXU_CONTROL_EVCOMPENSATION 0x03 D2
MSXU_CONTROL_WHITEBALANCE 0x04 D3
Зарезервировано для будущего использования 0x05 D4
MSXU_CONTROL_FACE_AUTHENTICATION 0x06 D5
MSXU_CONTROL_CAMERA_EXTRINSICS 0x07 D6
MSXU_CONTROL_CAMERA_INTRINSICS 0x08 D7
MSXU_CONTROL_METADATA 0x09 D8
MSXU_CONTROL_IR_TORCH 0x0A D9
MSXU_CONTROL_DIGITALWINDOW 0X0B Д10
MSXU_CONTROL_DIGITALWINDOW_CONFIG 0X0C D11
MSXU_CONTROL_VIDEO_HDR 0X0D D12
MSXU_CONTROL_FRAMERATE_THROTTLE 0x0E D13
MSXU_CONTROL_FIELDOFVIEW2_CONFIG 0x0F D14
MSXU_CONTROL_FIELDOFVIEW2 0x10 D15
2.2.2.1 Отменяемые элементы управления

Элемент управления Cancelable определяется здесь с помощью функции автоматического обновления.

GET_INFO запрос должен сообщать такой элемент управления, как элемент управления autoupdate (например, D3-бит должен иметь значение 1), но не как асинхронный элемент управления (например, D4-бит должен иметь значение 0).

Для такого элемента управления можно выдать запрос SET_CUR, чтобы задать новое значение (запрос SET_CUR(NORMAL), в котором для бита bmOperationFlags:D0 задано значение 0) или отменить предыдущий запрос SET_CUR(NORMAL) (запрос SET_CUR(CANCEL), в котором для bmOperationFlags:D0 бит имеет значение 1. Запрос SET_CUR должен быть завершен устройством сразу после получения запроса (даже если оборудование не настроено или конвергентно для новых параметров). Для каждого запроса SET_CUR(NORMAL) устройство создает соответствующее прерывание изменения элемента управления, возникающее при применении новых параметров или при поступлении запроса SET_CUR(ОТМЕНА); пока этот прерываний не будет доставлен, запрос SET_CUR(NORMAL) считается выполняемым. При выполнении запроса SET_CUR(NORMAL) дополнительные запросы SET_CUR(NORMAL) для этого конкретного элемента управления могут привести к сбою. Запрос SET_CUR(CANCEL) всегда будет выполнен успешно. Если нет ничего, чтобы отменить, устройство просто ничего не делает.

Полезные данные прерывания изменения управления должны иметь битовое значение bmOperationFlags:D0 равно 0, если параметры, указанные SET_CUR(NORMAL), были применены (например, конвергенция произошла) и имеет значение 1, если параметры не были применены из-за запроса SET_CUR(ОТМЕНА), который был применен после запроса SET_CUR(NORMAL) (например, конвергенция еще не произошла).

Элемент управления фокусом 2.2.2

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

элемент управления фокусом.

Этот элемент управления должен функционировать как элемент управления отмены (см. раздел 2.2.2.1 для требований GET_INFO запросов и функционального поведения запроса SET_CUR).

GET_MAX требование: этот элемент управления должен объявлять поддержку битов D0, D1, D2, D8 и D18 в bmControlFlags.

GET_DEF требование. Значение по умолчанию для bmControlFlags должно иметь значение D0 и D18, равные 1, а dwValue — 0.

Для запросов GET_CUR/SET_CUR применяются следующие ограничения для полей bmControlFlags:

  • Среди битов D0, D1 и D8 можно задать только один бит; Ни один из них не является допустимым, если задан бит D2.

  • Среди D16, D17, D18, D19 и D20 можно задать только один бит, ни один из них не является допустимым.

  • D1 несовместим с всеми другими битами, определенными в настоящее время (D0, D2, D8, D16, D17, D18, D19 и D20).

  • D2 несовместим с D1 и D8.

  • D2 несовместим с D16, D17, D18, D19 и D20, если D0 не задан.

2.2.2.3 Управление экспозицией

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

элемент управления экспозицией.

GET_INFO запрос должен сообщать об этом элементе управления как асинхронный элемент управления (например, D4-бит должен иметь значение 1), но не как элемент управления autoUpdate (например, D3 bit должен иметь значение 0).

GET_MAX требование: этот элемент управления должен объявлять поддержку битов D0, D1 и D2 в bmControlFlags.

GET_DEF требование. Значение по умолчанию для bmControlFlags должно иметь значение D0 1, а qwValue — 0.

Для запросов GET_CUR/SET_CUR применяются следующие ограничения для полей bmControlFlags:

  • Среди битов D0, D1 и D2 должно быть установлено по крайней мере один бит.
  • D1 несовместим с D0 и D2.
Контроль компенсации 2.2.2.4 EV

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

Управление компенсацией E V.

GET_INFO запрос должен сообщать об этом элементе управления как асинхронный элемент управления (например, D4-бит должен иметь значение 1), но не как элемент управления autoUpdate (например, D3 bit должен иметь значение 0).

GET_RES запрос должен сообщать обо всех поддерживаемых разрешениях (шаг-размер), задав соответствующие биты в bmControlFlags. Все остальные поля должны иметь значение 0.

запросы GET_MIN и GET_MAX должны сообщать о минимальном и максимально поддерживаемом значении dwValue. Бит D4 (указывающий размер шага 1) должен быть одним и единственным битом в bmControlFlags. Все остальные поля должны иметь значение 0.

GET_DEF, GET_CUR, запросы SET_CUR должны соответствовать определениям в разделе 2.2.2.1, но должен иметь один и только один бит между D0, D1, D2, D3 и D4 битами поля bmControlFlags. Кроме того, GET_DEF запрос должен иметь dwValue , равный 0.

2.2.2.5 Элемент управления белым балансом

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

элемент управления

GET_INFO запрос должен сообщать об этом элементе управления как асинхронный элемент управления (например, D4-бит должен иметь значение 1), но не как элемент управления autoUpdate (например, D3 bit должен иметь значение 0).

GET_RES, GET_MIN запросы GET_MAX должны соответствовать определениям в разделе 2.2.2.1, но должны иметь значение dwValueFormat равным 1.

GET_MAX требование: этот элемент управления должен объявлять поддержку битов D0, D1 и D2 в bmControlFlags.

GET_DEF требование. Значение по умолчанию для bmControlFlags должно иметь значение D0 1, а dwValueFormat и dwValue — значение 0.

Для запросов GET_CUR/SET_CUR применяются следующие ограничения для полей bmControlFlags:

  • Среди битов D0, D1 и D2 должно быть установлено по крайней мере один бит.
  • D1 несовместим с D0 и D2.
2.2.2.6 Управление проверкой подлинности лиц

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

Этот элемент управления применим только к камерам, которые могут создавать данные Infra-Red (IR) и применимы только к указанным интерфейсам потоковой передачи (это подмножество всех интерфейсов потоковой передачи видео, связанных с интерфейсом управления видео).

управление проверкой подлинности лиц.

GET_RES и GET_MIN запросы должны сообщать поле bNumEntries равным 0 и, следовательно, не имеют дополнительных полей.

Для запроса GET_MAX битовое значение 1 в поле bmControlFlags указывает, что соответствующий режим поддерживается для этого интерфейса потоковой передачи. Выходные данные запроса GET_MAX должны содержать список всех и только интерфейсов потоковой передачи, способных либо D1, либо D2 (например, если интерфейс потоковой передачи способен либо D1, либо D2, он получает список; в противном случае он не получает список). Кроме того, интерфейс потоковой передачи не должен объявляться как для D1, так и D2. Если интерфейс потоковой передачи также предназначен для использования в общем порядке (например, вне цели проверки подлинности лиц), D0 должен иметь значение 1 для этого интерфейса потоковой передачи (в дополнение к D1/D2).

Для запросов GET_DEF/ GET_CUR / SET_CUR битовое значение 1 в поле bmControlFlags указывает, что для этого интерфейса потоковой передачи выбран соответствующий режим. В этих запросах для определенного интерфейса потоковой передачи устанавливается только один и только один бит (среди D0, D1 и D2). Для запроса GET_DEF, возвращающего выбор по умолчанию (который является конкретной реализацией), если интерфейс потоковой передачи также предназначен для использования в общем порядке (например, вне цели проверки подлинности лиц), D0 по умолчанию должен иметь значение 1 в этом интерфейсе потоковой передачи; в противном случае значение D1 или D2 (но не оба) должно иметь значение 1 по умолчанию. Выходные данные запроса GET_DEF /GET_CUR должны содержать сведения обо всех интерфейсах потоковой передачи, перечисленных в выходных данных запроса GET_MAX, однако запрос SET_CUR может содержать только подмножество интерфейсов потоковой передачи, перечисленных в выходных данных запроса GET_MAX.

Пример:

Предположим, что камера имеет четыре интерфейса потоковой передачи видео с номерами 0x03, 0x05, 0x08 и 0x0b соответственно, где интерфейс потоковой передачи видео 0x05 создает данные RGB и остальные три интерфейса потоковой передачи видео создают данные IR. Среди интерфейсов потоковой передачи, которые создают данные IR, предположим, что интерфейсы потоковой передачи 0x03 и 0x0b поддерживаются как D1, но интерфейс потоковой передачи 0x03 также поддерживает D0. В этом примере управление проверкой подлинности лиц применимо только к интерфейсам потоковой передачи, нумерованным 0x03 и 0x0b, поэтому в запросах отображаются только эти интерфейсы.

Выходные данные для запроса GET_MAX должны быть следующими:

GET_MAX проверки подлинности лиц.

Выходные данные для запроса GET_DEF должны быть следующими:

GET_DEF проверки подлинности лиц.

Запрос SET_CUR на изменение параметра интерфейса потоковой передачи 0x03 на D1 будет следующим образом:

SET_CUR проверки подлинности лиц.

Выходные данные для запроса GET_CUR после приведенного выше запроса SET_CUR должны быть следующими:

GET_CUR проверки подлинности лиц.

2.2.2.7 Камера элемент управления Extrinsics

Этот элемент управления позволяет программному обеспечению узла получать данные камеры для конечных точек в интерфейсах потоковой передачи видео, связанных с интерфейсом управления видео. Таким образом, данные, полученные для каждой конечной точки, отображаются как атрибут MFStreamExtension_Камера Extrinsics в хранилище атрибутов для соответствующего потока (полученного с помощью вызова IMFDeviceTransform::GetOutputStreamAttributes).

элемент управления экстринсиками камеры.

GET_RES, GET_MIN, GET_MAX запросы GET_CUR должны сообщать поля bNumEntries равным 0 и поэтому не имеют дополнительных полей.

GET_DEF запрос должен содержать список всех конечных точек с доступными сведениями о экстринсиках.

Пример:

Предположим, что камера имеет три интерфейса потоковой передачи видео с номерами 0x03, 0x05 и 0x08 соответственно, где интерфейс потоковой передачи видео 0x05 поддерживает запись изображений с помощью метода 2 в дополнение к видеозахвату, поддерживаемому всеми интерфейсами потоковой передачи видео. Среди этих интерфейсов потоковой передачи предположим, что интерфейсы потоковой передачи 0x05 и 0x08 имеют информацию о экстринсиках, доступных в то время как интерфейс потоковой передачи 0x03 не имеет доступных сведений о экстринсиках.

В этом примере выходные данные для запроса GET_DEF должны быть следующими:

GET_DEF камеры.

2.2.2.8 Камера встроенных элементов управления

Этот элемент управления позволяет программному обеспечению узла получать встроенные данные камеры для конечных точек в интерфейсах потоковой передачи видео, связанных с интерфейсом управления видео. Таким образом, данные, полученные для каждой конечной точки, отображаются как атрибуты MFStreamExtension_Pinhole Камера Intrinsics в хранилище атрибутов для соответствующего потока (полученного с помощью вызова IMFDeviceTransform::GetOutputStreamAttributes).

встроенные функции камеры.

GET_RES, GET_MIN, GET_MAX запросы GET_CUR должны сообщать поля bNumEntries равным 0 и поэтому не имеют дополнительных полей.

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

Пример:

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

В этом примере выходные данные для запроса GET_DEF должны быть следующими:

встроенные камеры GET_DEF.

2.2.2.9 Элемент управления метаданными

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

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_METADATA драйвером камеры.

элемент управления метаданными.

Если запрос SET_CUR поддерживается встроенного ПО, применяется следующее:

  • GET_MIN запросы GET_DEF должны сообщать значение dwValue поля 0.

  • GET_RES запрос должен сообщать о значении dwValue поля, как сообщается в запросе GET_MAX.

  • При получении запроса SET_CUR с dwValue с значением 0 камера не должна создавать метаданные. Когда запрос SET_CUR получается с параметром dwValue, равным значению, которое сообщается в запросе GET_MAX, камера может создавать метаданные и размер таких метаданных не может превышать dwValue для любого кадра.

Если запрос SET_CUR не поддерживается встроенного ПО, применяется следующее:

  • GET_MIN запросы GET_DEF должны сообщать значение dwValue поля, которое должно быть таким же значением, как сообщается в запросе GET_MAX.

  • GET_RES запрос должен сообщать значение dwValue поля 0.

  • Камера может создавать метаданные, а общий размер таких метаданных не может превышать dwValue , как сообщается в запросе GET_MAX, — в 1024 байтах меньше размера полезных данных метаданных UsbVideoHeader для любого кадра.

  • Полезные данные метаданных UsbVideoHeader — это полезные данные sizeof(KSCAMERA_METADATA_ITEMHEADER) + sizeof(KSTREAM_UVC_METADATA) или 24 байта.

Созданные метаданные должны соответствовать метаданным стандартного формата Майкрософт, описанным в разделе 2.2.3.

2.2.2.10 IR Torch Control

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

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_IRTORCHMODE драйвером камеры.

I R факел управления.

Применяется следующее:

  • GET_LEN запрос должен сообщать о значении 8.

  • GET_INFO запрос должен сообщать значение 3. Это значение указывает синхронный элемент управления, поддерживающий GET_CUR и SET_CUR.

  • GET_MIN запрос должен сообщать поле dwMode , равное 0, и dwValue имеет значение, указывающее минимальную мощность. Уровень питания 0 может указывать off, но минимальный рабочий уровень питания не должен быть 0.

  • GET_RES запрос должен сообщать поле dwMode с значением 0, а dwValue — числом меньше или равно GET_MAX(dwValue) — GET_MIN(dwValue) и таким образом, что GET_MAX(dwValue) — GET_MIN(dwValue) равномерно делится на это значение. dwValue может не быть нулевым (0).

  • GET_MAX запрос должен сообщать поле dwMode с битами D[0-2], чтобы определить возможности этого элемента управления. DwMode должен иметь битовый набор D0, указывающий, что off поддерживается, и он должен иметь по крайней мере один другой битовый набор, поддерживающий активное состояние. DwValue должен иметь значение, указывающее обычную мощность.

  • GET_DEF запрос должен сообщать поле dwMode по умолчанию, чтобы система должна находиться перед началом потоковой передачи. DwMode должен иметь значение 2 (ON) или 4 (ALTERNATING). Значение dwValue должно быть установлено на уровень питания, который обычно используется для элемента управления FaceAuth. dwValue определяется производителем.

  • GET_CUR запрос должен сообщать поле dwMode для текущего рабочего режима и dwValue , установленного для текущего освещения.

  • При получении запроса SET_CUR факел IR устанавливает освещение в интенсивность пропорциональной скорости с помощью запрошенного рабочего режима.

Факел IR должен выдавать атрибут MF_CAPTURE_METADATA_FRAME_ILLUMINATION для каждого кадра. Он может обеспечить это с помощью MFT устройства или путем включения атрибута MetadataId_FrameIllumination в полезные данные метаданных из камеры. См. раздел 2.2.3.4.4.

Единственное назначение этих метаданных заключается в том, чтобы указать, освещается ли кадр или нет. Это те же метаданные, необходимые KSPROPERTY_CAMERACONTROL_EXTENDED_FACEAUTH_MODE DDI и MSXU_FACE_AUTHENTICATION_CONTROL, определенные в разделе 2.2.2.6.

2.2.2.11 Digital Window Control

Цифровое окно указывает поле зрения и масштабирование камеры во время потоковой передачи камеры. Этот элемент управления является потенциальной заменой пан, наклона и масштабирования. Этот элемент управления применяется только во время активной потоковой передачи камеры.

Этот элемент управления доступен для всех типов камер и не зависит от типа мультимедиа, который выполняется потоковой передачи.

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

Это глобальный элемент управления, который влияет на все конечные точки во всех интерфейсах потоковой передачи видео, связанных с интерфейсом управления видео. Он настраивает источник данных пикселей, используемых isP. К ним относятся метод 2 и метод 3 по-прежнему фиксируют закрепление.

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW драйвером камеры в папке "Входящие".

элемент управления цифровым окном.

Применяется следующее:

  • GET_LEN запрос должен сообщать значение 16.

  • GET_INFO запрос должен сообщать значение 3. Это значение указывает синхронный элемент управления, поддерживающий GET_CUR и SET_CUR.

  • GET_MIN запрос должен сообщать поле dwMode с значением 0, OriginX и OriginY , равным 0,0 и WindowSize , равным 1.0. Этот запрос в настоящее время не используется.

  • GET_RES запрос должен сообщать поле dwMode с значением 0, OriginX и OriginY , равным 0,0 и WindowSize , равным 1.0. Этот запрос в настоящее время не используется.

  • GET_MAX запрос должен сообщать поле dwMode с битом D0, чтобы определить возможности этого элемента управления. Значение 0 указывает, что поддерживается только ручной режим. Значение 1 указывает, что поддерживается режим автоматического обрамления лиц. Остальные поля не используются, однако рекомендуется задать для OriginX и OriginY значение 0.0, а WindowSize — 1.0.

  • GET_DEF запрос должен сообщать поле dwMode с значением 0, OriginX и OriginY , равным 0,0 и WindowSize , равным 1.0. Это всегда окно по умолчанию.

  • GET_CUR запрос должен сообщать поле dwMode , установленное в текущем операционном режиме, и OriginX, OriginY и WindowSize описывают текущее цифровое окно.

  • При получении запроса SET_CUR камера настраивает его поле зрения в соответствии с выбранным режимом работы и цифровым окном.

  • Если выбран режим автоматического обрамления лиц, камера выбирает окно, которое полностью охватывает лицо доминирования в сцене, и OriginX, OriginY и WindowSize передаются без учета. Если лицо не найдено, используется окно по умолчанию.

  • Любые изменения в цифровом окне должны отражаться в полезных данных метаданных каждого примера.

  • Изменения в цифровом окне могут не быть немедленно эффективными, но элемент управления должен немедленно реагировать. Изменения в цифровом окне должны быть сообщены в полезных данных метаданных кадра, как только они вводятся в силу.

2.2.2.12 Digital Window Config Control

Элемент управления caps конфигурации цифрового окна указывает ограничения масштабирования камеры, учитывая все доступные разрешения. Разрешения не зависят от типа мультимедиа, поэтому два типа мультимедиа, рекламирующих один и тот же разрешение дисплея, объединяются в одну возможность.

Из-за ограничений размера конечной точки элемента управления этот элемент управления может описывать не более 1820 уникальных разрешений.

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

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_DIGITALWINDOW_CONFIGCAPS драйвером камеры папки "Входящие".

элемент управления конфигурации цифрового окна.

Применяется следующее:

  • GET_LEN запрос должен сообщать весь размер полезных данных. Размер полезных данных должен быть кратным из 36, так как каждое определение разрешения составляет 36 байтов в длину.

  • GET_INFO запрос должен сообщить о 1. Это значение указывает синхронный элемент управления, поддерживающий только GET_CUR.

  • GET_CUR запрос должен сообщать массив возможностей. Поля структуры возможностей определены выше.

  • GET_MIN, GET_MAX, GET_RES и GET_DEF запросы не используются, но должны возвращать те же значения, что и GET_CUR.

  • SET_CUR запросы не поддерживаются.

2.2.2.13 Элемент управления HDR для видео

Этот элемент управления позволяет программному обеспечению узла указать, поддерживает ли камера видео HDR. Поддержка этого элемента управления подразумевает, что камера способна выполнять видео HDR в качестве лучших усилий. Если камера не поддерживает Видео HDR, она не должна реализовать этот элемент управления.

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_VIDEOHDR драйвером камеры.

элемент управления видео H D R.

Применяется следующее:

  • GET_LEN запрос должен сообщать весь размер полезных данных (например, 4 байта).

  • GET_INFO запрос должен сообщать значение 3. Это значение указывает синхронный элемент управления, поддерживающий GET_CUR, SET_CUR.

  • GET_CUR запрос должен сообщать поле dwMode , заданное в текущем режиме работы.

  • GET_DEF должен иметь значение DWMode , для параметра OFF (0).

  • GET_MAX запрос должен объявлять поддержку доступных режимов операций: [1 (ON/OFF), 3 (ON/OFF/Auto)]. Поддержка ON (1) является обязательной для этого элемента управления.

  • GET_MIN и GET_RES запросы должны сообщать 0.

  • SET_CUR запрос должен иметь значение OFF (0), ON (1) или AUTO (2).

2.2.2.14 Управление регулированием кадра

Этот элемент управления позволяет программному обеспечению узла указать, поддерживает ли камера регулирование framerate.

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

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

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_FRAMERATE_THROTTLE драйвером камеры.

Селектор элементов управления MSXU_CONTROL_FRAMERATE_THROTTLE
Обязательные запросы GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF GET_CUR, SET_CUR
Необязательные запросы
wLength 20
Смещение Поле Размер значение Описание
0 dwMode 4 Флаги D0: 0 (OFF) или 1 (ON)
D1-D31: зарезервировано и установлено значение 0
4 scaleFactorPercentage 4 Число Это значение должно находиться в диапазоне min и Max, и оно должно быть задано на несколько значений step. Например, если min = 5, Max = 100 и Step = 5, и если приложение решило уменьшить частоту кадров до 80 % исходного значения, то для этого элемента должно быть задано значение 80. Установив это значение соответствующим образом, приложение может убедиться, что новая частота кадров никогда не превышает исходное значение, а также не переходит к нулю, но исходная частота кадров возможна.
8 min 4 Число Минимальное значение должно быть равно размеру одного шага по аренде или должно быть несколько размеров шага (например, шаг 1, шаг2 и т. д.). Минимальное значение не может иметь значение 0.
12 max 4 Число Максимальное значение должно иметь значение 100, что означает отсутствие изменений в частоте кадров.
16 Шаг 4 Число Шаг должен быть строгим фактором Max, например {Max % Step == 0}. Пример: 1, 2, 4, 5 и т. д.

Применяется следующее:

  • GET_LEN запрос должен сообщать весь размер полезных данных (например, 20 байтов). 

  • GET_INFO запрос должен сообщать значение 3. Это значение указывает синхронный элемент управления, поддерживающий GET_CUR, SET_CUR. 

  • GET_CUR запрос должен сообщать поле dwMode, установленное в текущем режиме работы и масштабируемом объектеFactorPercentage, для текущего значения scaleFactor. Минимальное, максимальное и шаг должно сообщать о значениях, как описано в приведенной выше таблице.

  • GET_DEF должен иметь значение dwMode, равное OFF(0), scaleFactorPercentage=100, Min set to default minimum value, max set to 100 and, step set to default step value. Значения min и step должны быть определены производителем, но должны соответствовать рекомендациям, упоминание в приведенной выше таблице.

  • GET_ ЗАПРОС MAX должен объявлять поддержку доступных режимов операций и будет сообщать значение 1 [ ON | OFF ]. Поддержка как ON, так и OFF является обязательной для этого элемента управления. Значение min, max, step и scaleFactorPercentage можно задать для значений по умолчанию.

  • GET_MIN и GET_RES запросы должны сообщать 0. 

  • SET_CUR запрос должен иметь значение OFF(0), ON(1). Если для dwMode задано значение ON, то scaleFactorPercentage вступит в силу. Для случаев OFF и ON масштабируемый ОбъектFactorPercentage должен быть допустимым, как описано в приведенной выше таблице.

2.2.2.15 Поле элемента управления конфигурации view 2

Поле элемента управления "Конфигурация представления 2" указывает поддерживаемые значения диагонали градусов представления в виде массива значений. Все поддерживаемые значения должны находиться в диапазоне теоретических мин и максимума, 1 градуса – 360 градусов.

Если устройство хочет поддерживать непрерывные значения поля представления, необходимо сообщить обо всех поддерживаемых значениях. Например, если устройство хочет поддерживать диагональное поле представления от 85 градусов – 60 градусов с размером шага 1, этот элемент управления должен сообщать массив значений [85, 84, 83, 82, ..., 62, 61, 60].

Этот элемент управления должен быть доступен для отчета о возможностях при наличии элемента управления "Поле представления 2".

Это синхронный элемент управления уровня фильтра.

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2_CONFIGCAPS драйвером камеры.

Селектор элементов управления MSXU_CONTROL_FIELDOFVIEW2_CONFIG
Обязательные запросы GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF, GET_CUR
Необязательные запросы
wLength 4 байта + число раз в 4 байта, где количество уникальных значений поля представления.
Смещение Поле Размер значение Описание
0 dwDefaultFieldOfView 4 Число По умолчанию диагональное поле представления должно быть одним из значений, сообщаемых в массиве FieldOfViewValues.
4 FieldOfViewValues[0] 4 Число Первое поле значения представления должно быть самым широким значением FoV (поле представления).
4 + 4*(Count-1) FieldOfViewValues [Count -1] 4 Число Последнее значение поля представления должно быть самым узким значением FoV.

Применяется следующее:

  • GET_LEN запрос должен сообщать весь размер полезных данных.

  • GET_INFO запрос должен сообщить о 1. Это значение указывает синхронный элемент управления, поддерживающий только GET_CUR.

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

  • GET_DEF запрос должен сообщать так же, как GET_CUR.

  • GET_MIN, GET_MAX и GET_RES запросы не используются, но должны возвращать те же значения, что и GET_CUR.

  • SET_CUR запросы не поддерживаются.

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

2.2.2.16 Поле элемента управления View 2

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

Этот элемент управления доступен для всех типов камер и не зависит от типа мультимедиа, который выполняется потоковой передачи.

Этот элемент управления позволяет хост-программному обеспечению запрашивать и контролировать поле просмотра, связанное с камерой.

Это глобальный элемент управления, который влияет на все конечные точки во всех интерфейсах потоковой передачи видео, связанных с интерфейсом управления видео. Он корректирует источник данных пикселя (или датчика), используемых поставщиком услуг интернета вещей (обработчик сигналов изображений). К ним относятся метод 2 и метод 3 по-прежнему фиксируют закрепление.

Это синхронный элемент управления уровня фильтра.

Этот элемент управления сопоставляется с KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2 драйвером камеры.

Селектор элементов управления MSXU_CONTROL_FIELDOFVIEW2
Обязательные запросы GET_INFO, GET_LEN, GET_RES, GET_MIN, GET_MAX, GET_DEF GET_CUR, SET_CUR
Необязательные запросы
wLength 4
Смещение Поле Размер значение Описание
0 dwValue 4 Число Диагональное поле представления в градусах.

Применяется следующее:

  • GET_LEN запрос должен сообщать значение 4.

  • GET_INFO запрос должен сообщить о 3. Это значение указывает синхронный элемент управления, поддерживающий GET_CUR и SET_CUR.

  • GET_MIN запрос должен сообщать значение dwValue поля поля для минимального поддерживаемого поля представления.

  • GET_RES запрос должен сообщать значение dwValue поля 0. Этот запрос в настоящее время не используется.

  • GET_MAX запрос должен сообщать значение dwValue поля для поля dwValue, установленное для максимального поддерживаемого поля представления.

  • GET_DEF запрос должен сообщать значение dwValue поля по умолчанию для поля представления.

  • GET_CUR запрос должен сообщать значение dwValue поля для текущего поля представления.

  • При получении запроса SET_CUR камера задает поле зрения для сопоставления заданного dwValue.

  • Если камера реализует CT_ZOOM_RELATIVE_CONTROL и (или) CT_ZOOM_ABSOLUTE_CONTROL, эти элементы управления сбрасываются до значений по умолчанию при вызове MSXU_CONTROL_FIELDOFVIEW2 SET_CUR.

Если камера реализует MSXU_CONTROL_DIGITALWINDOW, она должна отражать изменение окна при установке нового значения поля представления. И наоборот, поле представления должно отражать изменения, внесенные через цифровое окно. Дополнительные сведения см . в KSPROPERTY_CAMERACONTROL_EXTENDED_ FIELDOFVIEW2 .

Метаданные 2.2.3

Проектирование стандартных кадров-метаданных формата строится на пользовательском макете метаданных UVC из Windows 10. В Windows 10 пользовательские метаданные поддерживаются для UVC с помощью пользовательского INF-файла драйвера камеры (примечание. Драйвер камеры можно использовать на основе Windows USBVIDEO.SYS, но для получения метаданных требуется пользовательский INF-файл. Если MetadataBufferSizeInKB<PinIndex> запись реестра присутствует и ненулевой, для этого пин-кода поддерживаются пользовательские метаданные, а значение указывает размер буфера, используемый для метаданных. Поле <PinIndex> указывает на 0 индекс пин-кода видео.

В Windows 10 версии 1703 драйвер камеры может сигнализировать о поддержке метаданных стандартного формата Майкрософт, включая следующую запись AddReg:

StandardFormatMetadata<PinIndex>: REG_DWORD: 0x0 (NotSupported) для 0x1 (поддерживается)

Этот раздел реестра будет считываться DevProxy и сообщает драйверу UVC, что метаданные имеют стандартный формат, задав флаг KSSTREAM_METADATA_INFO_FLAG_STANDARDFORMAT в поле "Флаги" для KSSTREAM_METADATA_INFO структуры.

2.2.3.1 Метаданные формата Microsoft Standard

Метаданные стандартного формата Майкрософт — это один или несколько экземпляров следующей структуры:

Метаданные стандартного формата.

typedef struct tagKSCAMERA_METADATA_ITEMHEADER {
    ULONG MetadataId;
    ULONG Size; // Size of this header + metadata payload following
} KSCAMERA_METADATA_ITEMHEADER, *PKSCAMERA_METADATA_ITEMHEADER;

Поле MetadataId заполняется идентификатором из следующего определения перечисления, содержащего хорошо определенные идентификаторы и пользовательские идентификаторы (идентификаторы >= MetadataId_Custom_Start).

typedef enum {
    MetadataId_Standard_Start = 1,
    MetadataId_PhotoConfirmation = MetadataId_Standard_Start,
    MetadataId_UsbVideoHeader,
    MetadataId_CaptureStats,
    MetadataId_CameraExtrinsics,
    MetadataId_CameraIntrinsics,
    MetadataId_FrameIllumination,
    MetadataId_Standard_End = MetadataId_FrameIllumination,
    MetadataId_Custom_Start = 0x80000000,
} KSCAMERA_MetadataId;

Поле "Размер" имеет значение sizeof(KSCAMERA_METADATA_ITEMHEADER) + sizeof(Полезные данные метаданных).

2.2.3.2, созданные метаданными стандартного формата из пакетов видеокадров USB

Во время передачи по UVC для видео на основе кадра видео кадр пакетизируется в ряд пакетов, каждый из которых предшествует заголовку полезных данных UVC. Каждый заголовок полезных данных UVC определяется спецификацией полезных данных класса ВИДЕО USB на основе полезных данных:

Заголовок полезных данных

Ниже приведено описание формата заголовка полезных данных для форматов на основе кадров.

Заголовок полезных данных.

Поле HLE (длина заголовка)

Поле длины заголовка указывает длину заголовка в байтах.

Поле заголовка битового поля

FID: идентификатор кадра

  • Этот бит переключается на каждую границу начала кадра и остается константой для остальной части кадра.

EOF: конец кадра

  • Этот бит указывает конец кадра видео и задается в последнем примере видео, относящемся к кадру. Использование этого бита является оптимизацией для уменьшения задержки в завершении передачи кадров и является необязательным.

PTS: метка времени презентации

  • Этот бит, если задан, указывает на наличие поля PTS.

SCR: справочник по исходному часову

  • Этот бит, если задан, указывает наличие поля SCR.

RES: зарезервировано.

  • Присвойте параметру значение 0.

STI: по-прежнему изображение

  • Этот бит при установке определяет пример видео как принадлежащий к по-прежнему изображению.

ERR: бит ошибки

  • Этот бит, если задано, указывает на ошибку в потоковой передаче устройства.

EOH: конец заголовка

  • Этот бит, если задан, указывает конец полей BFH.

PTS: метка времени презентации, размер: 4 байта, значение: число

  • Поле PTS присутствует при установке бита PTS в поле BFH[0]. См. раздел 2.4.3.3 "Заголовки полезных данных видео и по-прежнему изображения" в спецификации класса USB-устройств для видеоустройств .

SCR: справочник по исходному часову, размер: 6 байт, значение: число

  • Поле SCR присутствует при установке бита SCR в поле BFH[0]. См. раздел 2.4.3.3 Видео и заголовки полезных данных изображений в спецификации класса USB-устройств для видеоустройств .

Поле HLE в существующем драйвере UVC фиксировано до 2 байтов (нет PTS/SCR) или до 12 байт (PTS/SCR присутствует). Однако поле HLE, являясь полем размера байтов, может указывать до 255 байт данных заголовка. Если присутствуют оба PTS/SCR, а HLE — более 12 байт, все дополнительные данные после первых 12 байт заголовка полезных данных будут выбраны как стандартные метаданные, относящиеся к кадру видео при установке записи StandardFormatMetadata<PinIndex> INF.

Метаданные стандартного формата (созданные встроенного ПО) для кадра получаются путем объединения частичных BLOB-объектов, найденных в пакетах видеокадров, представляющих этот кадр.

пакеты кадров метаданных.

Буфер метаданных 2.2.3.3, предоставленный компоненту пользовательского режима

Буфер метаданных, предоставленный компоненту пользовательского режима, будет иметь элемент метаданных для меток времени UVC (созданных драйвером UVC), а затем элементы метаданных, созданные встроенного ПО, и они приведены следующим образом:

буфер метаданных.

Формат метаданных 2.2.3.4 для стандартных идентификаторов метаданных

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

2.2.3.4.1 MetadataId_CaptureStats

Формат метаданных для этого идентификатора определяется следующей структурой:

typedef struct tagKSCAMERA_METADATA_CAPTURESTATS {
    KSCAMERA_METADATA_ITEMHEADER Header;
    ULONG Flags;
    ULONG Reserved;
    ULONGLONG ExposureTime;
    ULONGLONG ExposureCompensationFlags;
    LONG ExposureCompensationValue;
    ULONG IsoSpeed;
    ULONG FocusState;
    ULONG LensPosition; // a.k.a Focus
    ULONG WhiteBalance;
    ULONG Flash;
    ULONG FlashPower;
    ULONG ZoomFactor;
    ULONGLONG SceneMode;
    ULONGLONG SensorFramerate;
} KSCAMERA_METADATA_CAPTURESTATS, *PKSCAMERA_METADATA_CAPTURESTATS;

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

#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_EXPOSURETIME            0x00000001
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_EXPOSURECOMPENSATION    0x00000002
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_ISOSPEED                0x00000004
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_FOCUSSTATE              0x00000008
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_LENSPOSITION            0x00000010
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_WHITEBALANCE            0x00000020
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_FLASH                   0x00000040
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_FLASHPOWER              0x00000080
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_ZOOMFACTOR              0x00000100
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_SCENEMODE               0x00000200
#define KSCAMERA_METADATA_CAPTURESTATS_FLAG_SENSORFRAMERATE         0x00000400

Зарезервированное поле зарезервировано для будущего и должно иметь значение 0.

Поле ExposureTime содержит время экспозиции в 100 ns, примененное к датчику при захвате кадра. Это отображается как атрибут MF_CAPTURE_METADATA_EXPOSURE_TIME в соответствующем примере MF.

Поле ExposureCompensationFlags содержит шаг компенсации EV (точно один из флагов шага KSCAMERA_EXTENDEDPROP_EVCOMP_XXX должны быть заданы) для передачи значения компенсации EV. Поле ExposureValue содержит значение компенсации EV в единицах шага, примененного к датчику при захвате кадра. Они отображаются как атрибуты MF_CAPTURE_METADATA_EXPOSURE_COMPENSATION в соответствующем примере MF.

Поле IsoSpeed содержит значение скорости ISO, примененное к датчику при захвате кадра. Это безукоризненный. Это отображается как атрибут MF_CAPTURE_METADATA_ISO_SPEED в соответствующем примере MF.

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

Поле LensPosition содержит логическую позицию объектива при захвате кадра, который является безудельным. Это то же значение, которое можно запрашивать из KSPROPERTY_CAMERACONTROL_EXTENDED_FOCUS в вызове GET. Это отображается как атрибут MF_CAPTURE_METADATA_LENS_POSITION в соответствующем примере MF.

Поле WhiteBalance содержит белый баланс, примененный к датчику при захвате кадра, который является значением в Келвине. Это отображается как атрибут MF_CAPTURE_METADATA_WHITEBALANCE в соответствующем примере MF.

Поле Flash содержит логическое значение с 1 значением вспышки, а значение 0 означает вспышку отключено, когда кадр был захвачен. Это отображается как атрибут MF_CAPTURE_METADATA_FLASH в соответствующем примере MF.

Поле FlashPower содержит мощность флэш-памяти, примененную к кадру, который является значением в диапазоне [0, 100]. Это поле должно быть опущено, если драйвер не поддерживает настраиваемую мощность для флэш-памяти. Это отображается как атрибут MF_CAPTURE_METADATA_FLASH_POWER в соответствующем примере MF.

Поле ZoomFactor содержит значение масштабирования в формате Q16, примененное к захваченным кадрам. Это отображается как атрибут MF_CAPTURE_METADATA_ZOOMFACTOR в соответствующем примере MF.

Поле SceneMode содержит режим сцены, примененный к кадру, который является 64-разрядным флагом KSCAMERA_EXTENDEDPROP_SCENEMODE_XXX. Это отображается как атрибут MF_CAPTURE_METADATA_SCENE_MODE в соответствующем примере MF.

Поле SensorFramerate содержит измеряемую скорость чтения датчика в герц при захвате кадра, который состоит из числового значения в верхнем 32-разрядном и знаменателя в нижнем 32-разрядном разряде. Это отображается как атрибут MF_CAPTURE_METADATA_SENSORFRAMERATE в соответствующем примере MF.

2.2.3.4.2 MetadataId_Камера Extrinsics

Формат метаданных для этого идентификатора включает стандартный KSCAMERA_METADATA_ITEMHEADER за полезными данными массива байтов. Полезные данные должны соответствовать структуре MF Камера Extrinsics, а затем нулю или нескольким структурам MF Камера Extrinsic_CalibratedTransform. Полезные данные должны быть выровнены по 8 байтам, и все неиспользуемые байты должны выполняться в конце полезных данных и иметь значение 0.

2.2.3.4.3 MetadataId_Камера Intrinsics

Формат метаданных для этого идентификатора включает стандартный KSCAMERA_METADATA_ITEMHEADER за полезными данными массива байтов. Полезные данные должны соответствовать структуре MFPinhole Камера Intrinsics. Полезные данные должны быть выровнены по 8 байтам, и все неиспользуемые байты должны выполняться в конце полезных данных и иметь значение 0.

2.2.3.4.4 MetadataId_FrameIllumination

Формат метаданных для этого идентификатора определяется следующей структурой:

typedef struct tagKSCAMERA_METADATA_FRAMEILLUMINATION {
    KSCAMERA_METADATA_ITEMHEADER Header;
    ULONG Flags;
    ULONG Reserved;
} KSCAMERA_METADATA_FRAMEILLUMINATION, *PKSCAMERA_METADATA_FRAMEILLUMINATION;

Поле "Флаги" указывает сведения о захваченном кадре. В настоящее время определены следующие флаги:

#define KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON 0x00000001

Если кадр был захвачен при освещении, флаг KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON должен быть установлен. В противном случае этот флаг не должен быть задан.

Зарезервированное поле зарезервировано для дальнейшего использования и должно иметь значение 0.

Пример:

Например, KSCAMERA_METADATA_FRAMEILLUMINATION структура, указывающая, что освещение было на следующем:

KSCAMERA_METADATA_FRAMEILLUMINATION.Header.MetadataId = MetadataId_FrameIllumination;
KSCAMERA_METADATA_FRAMEILLUMINATION.Header.Size = 16; // 4 ULONG variables in total inside the structure
KSCAMERA_METADATA_FRAMEILLUMINATION.Flags = KSCAMERA_METADATA_FRAMEILLUMINATION_FLAG_ON;
KSCAMERA_METADATA_FRAMEILLUMINATION.Reserved = 0;
2.2.3.4.5 MetadataId_USBVideoHeader

Формат метаданных для этого идентификатора определяется общим KSCAMERA_METADATA_ITEMHEADER и структурой KSSTREAM_UVC_METADATA:

typedef struct
{
    ULONG       PresentationTimeStamp;
    ULONG       SourceClockReference;
    union
    {
        struct
        {
            USHORT    Counter : 11;
            USHORT  Reserved : 5;
        };
        USHORT    SCRToken;
    };
    USHORT      Reserved0;
    ULONG       Reserved1;
} KSSTREAM_UVC_METADATATYPE_TIMESTAMP, *PKSSTREAM_UVC_METADATATYPE_TIMESTAMP;

typedef struct {
    KSSTREAM_UVC_METADATATYPE_TIMESTAMP StartOfFrameTimestamp;
    KSSTREAM_UVC_METADATATYPE_TIMESTAMP EndOfFrameTimestamp;
} KSSTREAM_UVC_METADATA, *PKSSTREAM_UVC_METADATA;

Поле StartOfFrameTimestamp и EndOfFrameTimestamp — это метки времени, содержащиеся в заголовках UVC в первых и последних полезных данных UVC, выданных камерой для создания этого кадра.

Полезные данные не должны отправляться устройством.

Эта полезные данные метаданных уникальна в том, что это единственная полезные данные метаданных, созданные непосредственно драйвером класса USB Video из сведений, полученных из заголовков полезных данных, совместимых с UVC.

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

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