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


Приложения-компаньоны камеры

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

Введение

Windows 11 предоставляет платформу приложений-компаньонов камеры, которая позволяет производителям разрабатывать приложения со следующими возможностями:

  • Возможность отображения и (или) изменения тех же параметров по умолчанию, что и страница параметров камеры (например, яркость, контрастность, фоновые эффекты и т. д.).

  • Возможность регистрировать, обновлять или удалять параметры значения по умолчанию для других элементов управления камерой, известных Windows, но не видимых на странице параметров камеры (например, элемент управления Hue).

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

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

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

Терминология и предварительные требования

Срок Определение
Приложение-компаньон Пользовательское приложение, разработанное производителем камеры, которое позволяет настраивать и управлять камерой в дополнение к странице параметров камеры.
Текущее значение Значение элемента управления камерой, который в настоящее время активен в процессоре обработки изображений камеры и хранится во временной памяти камеры.
Значение по умолчанию Начальное значение элемента управления камерой, которое хранится на диске и сохраняется для определенной камеры для определенной учетной записи пользователя на определенном компьютере.
HSA Приложение для поддержки аппаратного обеспечения, которое поддерживается корпорацией Майкрософт, для автоматического скачивания и установки приложений, связанных с оборудованием, из магазина Microsoft Store, когда устройству осуществляется подключение.
НПУ Единица нейронной обработки, выделенное оборудование, предназначенное для обработки рабочих нагрузок искусственного интеллекта с высокой пропускной способностью и эффективностью.
Эффекты Windows Studio Коллекция видеоэффектов, доступных на некоторых компьютерах Windows с нейронными процессорами.
UVC Класс USB-видео, стандартизированный интерфейс для управления и потоковой передачи с usb-подключенных камер.

Требования к приложениям-компаньонам

Приложения-компаньоны должны быть упакованными приложениями с удостоверением пакета. Приложение-компаньон также должно быть выпущено в Microsoft Store, что позволяет странице параметров камеры направлять клиентов в магазин устанавливать приложение, если оно еще не установлено.

Традиционные настольные приложения без идентификации пакета нельзя использовать как приложения-компаньона.

Приложения-компаньоны в качестве HSAs

Приложения-компаньоны также не требуются для настройки в качестве приложения поддержки оборудования, но настоятельно рекомендуется. HSAs — это специальные приложения в Microsoft Store, связанные с определенным аппаратным устройством. Когда устройство подключено к компьютеру, HSA автоматически загружается и устанавливается из Microsoft Store при наличии.

Связывание приложения-компаньона с камерой

Производитель камеры может связать приложение-компаньон, заполнив специфический ключ свойства устройства именем семейства пакетов (PFN) приложения-компаньона.

Имя Тип Данные
SCSVCamPfn REG_SZ <PFN>

Чтобы определить PFN приложения-компаньона, выполните команду Get-AppxPackage из PowerShell, например:

Get-AppxPackage -Name CompanionAppName

Чтобы связать приложение-компаньон с камерой, используйте дескриптор MSOS в камере UVC или директиву AddReg в INF драйвера камеры. Например, с помощью INF-файла:

[SocCaptureSim.RearCamera.AddReg]

HKR,,SCSVCamPfn,,%AppPFN%

...

[Strings]

AppPFN="Contoso.CameraCompanion_xxxxxxxx00000"

Если приложение-компаньон связан с камерой, страница параметров камеры содержит ссылку на приложение-компаньон в заголовке "Связанные параметры" страницы конкретных параметров камеры.

Если приложение-компаньон уже установлено, ссылка отображается на "Открыть {имя приложения-компаньона}". При щелчке приложение запускается.

Если приложение-компаньон еще не установлено, ссылка отображается для запуска Microsoft Store для скачивания и установки приложения.

Камера может быть связана только с одним приложением-компаньоном.

Запуск приложения-компаньона на странице параметров камеры

Когда страница параметров камеры запускает приложение-компаньон, символьная ссылка камеры передается в качестве контекста через аргументы Application.OnLaunched .

Аргумент Тип Данные
cameraId Струна Символьная ссылка

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

  1. Одно приложение-компаньон поддерживает несколько камер в одной системе (например, предоставленное OEM-приложение поддерживает камеры переднего и заднего устройств на планшете).

  2. У клиента есть две камеры одного и того же бренда, подключенные к своей системе, управляемой тем же приложением-компаньоном.

Запуск страницы параметров камеры из приложения-компаньона

Приложение-компаньон может открыть страницу параметров камеры Windows через глубокую ссылку (deeplink URI). Дополнительные сведения см. в разделе Запуск страницы параметров камеры.

Настройка значений по умолчанию из вспомогательных приложений

Приложение-компаньон может использовать API IMFCameraConfigurationManager для настройки конфигурации значения по умолчанию текущего пользователя. Этот API позволяет приложению-компаньону считывать все настроенные значения по умолчанию (например, значения по умолчанию, заданные пользователем с помощью страницы параметров камеры), изменять значения по умолчанию, регистрировать новые значения по умолчанию или удалять сохраненные значения по умолчанию.

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

  • Параметры, которые также настраиваются с помощью страницы параметров камеры (например, яркость, контрастность, эффекты фона и т. д.)

  • Параметры других элементов управления камерой, известные Windows, но не предоставляются на странице параметров камеры (например, элемент управления Hue)

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

Настройка яркости из приложения-компаньона

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

Windows поддерживает устаревший элемент управления яркостью (KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS), разработанный с учетом простых регуляторов усиления. Windows также поддерживает управление компенсацией экспозиции (KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION), предназначенное для задания положительного или отрицательного смещения значения экспозиции в алгоритме автоматической экспозиции камеры.

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

Дополнительные сведения см. на странице параметров камеры относительно поведения элемента управления "Яркость" в зависимости от управляющих элементов, реализуемых камерой. Если приложение-компаньон также предлагает ползунок "Яркость", важно реплицировать логику, чтобы обеспечить синхронизацию ползунка "Яркость" на странице параметров камеры и в приложении-компаньоне.

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

Мониторинг изменений текущего значения в режиме реального времени

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

Для этого партнёрское приложение может использовать IMFCameraControlMonitor для отслеживания изменений текущих значений интересующих элементов управления (KS Properties). Эти изменения могут произойти из-за следующих изменений:

  • Приложение камеры (например, Microsoft Teams) использует камеру и изменяет текущее значение элемента управления.

  • Страница параметров камеры использует камеру и изменяет значение по умолчанию элемента управления (которое также обновляет текущее значение).

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

Примеры приложений-компаньонов

Пример приложения-компаньона доступен на сайте GitHub: пример CameraSettingsExternalSettingsApp. В этом примере показано, как использовать API IMFCameraConfigurationManager для изменения значения по умолчанию для контрастности, яркости и сегментации фона.

Другой пример приложения, демонстрирующий использование API IMFCameraControlMonitor для отслеживания изменений в элементах управления, представляющих интерес, доступен на GitHub в виде примера ControlMonitorApp.

См. также

Application.OnLaunched

Страница параметров камеры

Пример CameraSettingsExternalSettingsApp

Пример ControlMonitorApp

Get-AppxPackage

Приложение поддержки оборудования

IMFCameraConfigurationManager

IMFCameraControlMonitor

KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS

KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION

Запуск страницы параметров камеры

Дескриптор MSOS

Упакованные приложения