Compartilhar via


Aplicativos complementares da câmera

Este artigo descreve aplicativos complementares, um recurso de extensibilidade para os fabricantes de câmeras criarem aplicativos personalizados que podem definir a câmera e ajustar as configurações de imagem padrão.

Introdução

O Windows 11 fornece uma estrutura de aplicativo complementar de câmera que permite que os fabricantes desenvolvam aplicativos com os seguintes recursos:

  • Capacidade de exibir e/ou modificar as mesmas configurações de padrões de valor suportadas pela página de configurações da câmera (por exemplo, Brilho, Contraste, Efeitos de Plano de Fundo, entre outros).

  • Capacidade de registrar, atualizar ou excluir configurações de valor padrão para outros controles de câmera que são conhecidos pelo Windows, mas não são expostos por meio da página de configurações da câmera (por exemplo, o controle Hue).

  • Capacidade de registrar, atualizar ou excluir configurações de valor padrão para controles de câmera proprietários do fabricante (por exemplo, o controle de ativação/desativação do efeito de ajuste de iluminação personalizado do fabricante da câmera).

Quando uma câmera registra um aplicativo complementar associado, uma entrada é adicionada à página de configurações da câmera. Se o aplicativo estiver instalado, ele poderá ser iniciado na página de configurações da câmera, caso contrário, um link para a Microsoft Store será exibido para baixá-lo.

Os aplicativos complementares têm acesso especial a uma API que permite que eles registrem, atualizem ou excluam valores padrão, como a página de configurações da câmera.

Terminologia e pré-requisitos

Prazo Definição
Aplicativo complementar Um aplicativo personalizado desenvolvido pelo fabricante da câmera que permite a configuração e o gerenciamento de uma câmera, além da página de configurações da câmera.
Valor atual O valor de um controle de câmera que está atualmente ativo no ISP da câmera e mantido na memória temporária da câmera.
Valor padrão Um valor inicial de um controle de câmera armazenado em disco e salvo para uma câmera específica, para uma conta de usuário específica, em um computador específico.
HSA Aplicativo de Suporte a Hardware, uma estrutura com suporte da Microsoft para baixar e instalar automaticamente aplicativos associados a hardware da Microsoft Store quando o dispositivo estiver conectado.
Unidade de Processamento Neural (NPU) Unidade de Processamento Neural, hardware dedicado projetado para processar cargas de trabalho de inteligência artificial com alta taxa de transferência e eficiência.
Efeitos do Windows Studio Uma coleção de efeitos de vídeo disponíveis em computadores Windows selecionados com NPUs.
UVC Classe de vídeo USB, a interface padronizada para controlar e transmitir de câmeras conectadas por USB.

Requisitos complementares do aplicativo

Aplicativos complementares devem ser aplicativos empacotados com uma identidade de pacote. O aplicativo complementar também deve ser lançado na Microsoft Store, o que permite que a página de configurações da câmera guie os clientes para a loja para instalar o aplicativo se ele ainda não estiver instalado.

Aplicativos de área de trabalho tradicionais sem uma identidade de pacote não podem ser usados como um aplicativo complementar.

Aplicativos complementares como HSAs

Aplicativos complementares não precisam ser configurados também como um aplicativo de suporte de hardware, mas é altamente recomendado. Os HSAs são aplicativos especiais na Microsoft Store associados a um dispositivo de hardware específico. Quando esse dispositivo está conectado a um computador, o HSA é baixado e instalado automaticamente na Microsoft Store quando disponível.

Associar um aplicativo complementar a uma câmera

O fabricante de uma câmera pode associar um aplicativo complementar preenchendo uma chave específica da Propriedade do Dispositivo com o Nome da Família de Pacotes (PFN) do aplicativo Complementar:

Nome Tipo Dados
SCSVCamPfn REG_SZ <PFN>

Para identificar o PFN do aplicativo complementar, execute Get-AppxPackage do PowerShell, por exemplo:

Get-AppxPackage -Name CompanionAppName

Para associar o aplicativo complementar a uma câmera, use um descritor MSOS em uma câmera UVC ou a diretiva AddReg no INF do driver da câmera. Por exemplo, usando o arquivo INF:

[SocCaptureSim.RearCamera.AddReg]

HKR,,SCSVCamPfn,,%AppPFN%

...

[Strings]

AppPFN="Contoso.CameraCompanion_xxxxxxxx00000"

Quando um aplicativo complementar é associado a uma câmera, a página de configurações da câmera inclui um link para o aplicativo complementar sob o título "Configurações relacionadas" da página de configurações específicas da câmera.

Se o aplicativo complementar já estiver instalado, um link será exibido para "Abrir {nome do aplicativo complementar}". Quando clicado, o aplicativo é iniciado.

Se o aplicativo complementar ainda não estiver instalado, um link será exibido para iniciar a Microsoft Store para baixar e instalar o aplicativo.

Uma câmera só pode ter um aplicativo complementar associado a ela.

Iniciar um aplicativo complementar na página de configurações da câmera

Quando a página de configurações da câmera inicia o aplicativo complementar, o link simbólico da câmera é passado como contexto por meio dos argumentos Application.OnLaunched .

Argumento Tipo Dados
cameraId fio Link Simbólico

Essa funcionalidade permite que o aplicativo complementar exiba as configurações corretas da câmera nos seguintes cenários:

  1. Um único aplicativo complementar dá suporte a várias câmeras em um único sistema (por exemplo, um aplicativo fornecido por OEM dá suporte às câmeras Front e Rear em um tablet).

  2. Um cliente tem duas das mesmas câmeras (ou da mesma marca) conectadas ao sistema que são gerenciadas pelo mesmo aplicativo complementar.

Iniciar a página de configurações da câmera de um aplicativo complementar

Um aplicativo complementar pode iniciar a página de configurações da câmera do Windows usando um URI de deeplink. Para obter mais informações, consulte Iniciar a página de configurações da câmera.

Configurar valores padrão de aplicativos complementares

Um aplicativo complementar pode usar a API IMFCameraConfigurationManager para configurar a configuração de valor padrão do usuário atual. Essa API permite que o aplicativo complementar leia os valores padrão configurados (por exemplo, os valores padrão definidos pelo usuário usando a página de configurações da câmera), modifique os valores padrão, registre novos valores padrão ou remova valores padrão salvos.

Os valores padrão são registrados no banco de dados do sistema como um par de um GUID de Propriedade KS e um valor correspondente. Isso permite que a arquitetura seja independente da definição da Propriedade KS. Essa flexibilidade permite que um aplicativo complementar defina, edite ou exclua valores padrão para qualquer uma das seguintes configurações:

  • Configurações que também são configuráveis usando a página de configurações da câmera (por exemplo, brilho, contraste, efeitos de plano de fundo e assim por diante)

  • As configurações para outros controles de câmera que são conhecidos pelo Windows, mas não são expostas por meio da página de configurações da câmera (por exemplo, o controle Hue)

  • Configurações para controles de câmera proprietários do fabricante (por exemplo, o controle de ativação/desativação para o efeito de ajuste de iluminação personalizado de um fabricante de câmera)

Configure o brilho a partir de um aplicativo companheiro

Há algumas maneiras de uma câmera controlar o brilho efetivo da imagem capturada. Por exemplo, o brilho pode ser aumentado aplicando um ganho simples à imagem ou pode ser aumentado aumentando o tempo de exposição da câmera.

O Windows dá suporte a um controle herdado de brilho (KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS) que foi projetado com controles de ganho simples em mente. O Windows também dá suporte a um controle de compensação de exposição (KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION) projetado para comandar um viés de valor de exposição positivo ou negativo para o algoritmo de Exposição Automática de uma câmera.

Independentemente de qual controle de brilho é usado por uma câmera, ele deve ser implementado na câmera de modo que, quando "centralizado", o brilho seja neutro e que o cliente possa aplicar um deslocamento aumentando ou reduzindo o valor. Para obter a melhor qualidade de imagem, é altamente recomendável que as câmeras ofereçam suporte ao controle de compensação de exposição para que, se um cliente ajustar o controle Brilho na página de configurações da câmera ou em um aplicativo complementar, a câmera seja comandada para aplicar um viés positivo ou negativo fixo à exposição, independentemente das condições de iluminação a qualquer momento.

Para obter mais informações, consulte a página de configurações da câmera para o comportamento do controle Brilho na página de configurações da câmera com base no controle que a câmera implementa. Se um aplicativo complementar também oferece um controle deslizante de Brilho, é essencial replicar a lógica para garantir a sincronização entre o controle deslizante de Brilho na página de configurações da câmera e o aplicativo complementar.

O exemplo de aplicativo complementar vinculado abaixo inclui uma implementação de referência dessa lógica.

Monitoramento de alterações de valor atual em tempo real

Se um aplicativo complementar estiver em execução ao mesmo tempo que a página de configurações da câmera, é possível que o cliente possa alterar um valor padrão usando a página de configurações da câmera enquanto o aplicativo complementar estiver em execução simultânea no modo compartilhado para exibir uma visualização. Nesse caso, é desejável que o aplicativo complementar monitore alterações no valor padrão dos controles para que ele possa permanecer sincronizado.

Para fazer isso, o aplicativo complementar pode usar o IMFCameraControlMonitor para monitorar alterações no valor atual dos controles (propriedades KS) de interesse. Essas alterações podem ocorrer devido a:

  • Um aplicativo de câmera (por exemplo, Microsoft Teams) está usando a câmera e faz uma alteração no Valor Atual de um controle.

  • A página de configurações da câmera está usando a câmera e faz uma alteração no valor padrão de um controle (que também atualiza o Valor Atual).

Essa API pode ser usada como um gatilho para ler novamente o valor padrão para um controle de interesse usando a API IMFCameraConfigurationManager e atualizar a interface do usuário se algum valor padrão tiver sido alterado.

Exemplos de aplicativo complementar

Um aplicativo complementar de exemplo está disponível no GitHub: CameraSettingsExternalSettingsApp. Este exemplo demonstra como usar a API IMFCameraConfigurationManager para alterar o valor padrão para Contraste, Brilho e Segmentação de Plano de Fundo.

Outro aplicativo de exemplo que demonstra como usar a API IMFCameraControlMonitor para monitorar alterações nos controles de interesse está disponível no GitHub: exemplo do ControlMonitorApp.

Consulte também

Application.OnLaunched

Página de configurações da câmera

Exemplo de CameraSettingsExternalSettingsApp

Exemplo de ControlMonitorApp

Get-AppxPackage

Aplicativo de suporte de hardware

IMFCameraConfigurationManager

IMFCameraControlMonitor

KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS

KSPROPERTY_CAMERACONTROL_EXTENDED_EVCOMPENSATION

Iniciar a página de configurações da câmera

Descritor MSOS

Aplicativos empacotados