Compartilhar via


Design detalhado para ISVs (Perfil de Câmera V2)

O consumo de perfis de câmera 1507 para ISV apresentou um desafio significativo devido à natureza complexa de como os perfis foram apresentados e ao fato de que os perfis eram apenas um conjunto de dados informativo, o pipeline subjacente ainda permitiria combinações de tipos de mídia e fluxos que violavam as restrições de hardware.

Os ISVs ainda corriam o risco de configurar o pipeline de captura de uma maneira que falharia quando os fluxos fossem ativados.

Para o Perfil de Câmera V2, a configuração de um perfil selecionado no momento da inicialização do objeto Captura de Mídia será comunicada ao Servidor de Quadros e o Servidor de Quadros exporá apenas combinações de fluxos/tipos de mídia que são válidos dentro desse perfil.

Devido ao baixo custo de criação de vários objetos de Captura de Mídia quando roteados por meio do Servidor de Quadros, um aplicativo pode pré-criar várias instâncias de objetos de Captura de Mídia usando a mesma origem. Somente o primeiro criado incorreria em uma latência de criação de origem. As instâncias subsequentes simplesmente pegam a fonte já criada no Servidor de Quadros e filtram o conjunto de fluxos/tipos de mídia com base no perfil.

Um aplicativo que deseja expor um modo foto de alta qualidade e um modo de Gravação de Vídeo que contém vídeo de alta taxa de quadros ou vídeo 4K, poderia criar várias instâncias de objetos de Captura de Mídia configurados com um perfil diferente para a mesma origem da câmera. Desde que apenas um dos objetos do Media Capture esteja transmitindo ativamente a qualquer momento, alternar entre o objeto Media Capture incorre em pouca latência (normalmente o custo de algumas chamadas RPC).

O Perfil de Câmera 1507 expõe perfis por meio do objeto MediaCaptureVideoProfile. Esse objeto é descoberto por meio da fábrica MediaCapture fornecendo uma ID de dispositivo específica. Essa exibição centrada no dispositivo significa que um aplicativo que deseja habilitar um cenário específico precisa primeiro enumerar/localizar o dispositivo de sua escolha e usá-lo para iterar pelos perfis disponíveis.

O Perfil de Câmera V2 estende a superfície da API para continuar fornecendo uma superfície de API centrada no dispositivo, mas além disso, o Perfil de Câmera V2 também fornecerá uma enumeração de perfil orientada por cenário.

Em vez disso, de começar com uma câmera específica, um aplicativo começa com um cenário específico. Por exemplo, gravação de vídeo usando um cenário de câmera voltada para o mundo.

Esse ponto de entrada fornece a aplicação de todas as câmeras disponíveis adequadas para esse cenário. Dependendo da especificidade do cenário, a lista MediaFrameSourceGroup resultante pode conter várias entradas. Em alguns casos, é possível que não haja entradas. Por exemplo, a Gravação de Vídeo usando a Câmera Voltada para o Mundo para um dispositivo All-In-One que não tem uma câmera voltada para o mundo retornaria um conjunto vazio.

A "linguagem" usada para descrever o cenário permite fallbacks com base em critérios mínimos. Esse é o idioma que permite "Gravação de Vídeo com preferência por Câmera Voltada para o Mundo e Maior Resolução possível com taxa mínima de quadros de 30 fps".

Filtragem baseada em perfil

Uma das principais vantagens de usar a arquitetura do Servidor de Quadros é o fato de que o objeto Contexto do Cliente no Servidor de Quadros, que é uma representação virtual de um objeto de Captura de Mídia no aplicativo cliente, é dissociado da fonte física.

Isso permite que várias instâncias de objetos de Contexto do Cliente usando as mesmas fontes sejam configuradas em modos específicos de operação, o que pode incluir a filtragem de pins/tipos de mídia que podem entrar em conflito com o caso de uso subjacente.

Como as fontes de dispositivos não fazem parte do Contexto do Cliente, a criação de várias instâncias de objetos de Contexto do Cliente com configuração diferente não incorre em nenhuma sobrecarga significativa (assim como a sobrecarga necessária para rastrear as estruturas de dados internas).

A latência para criar/inicializar uma fonte ainda está lá para o primeiro Contexto do Cliente, mas uma vez criadas, instâncias subsequentes com a mesma configuração ou configuração diferente incorrerão apenas na sobrecarga adicional da criação das estruturas de dados internas.

O diagrama a seguir mostra como uma Captura de Mídia configurada com perfil nulo seria exposta pelo Servidor de Quadros por meio do Contexto do Cliente:

conjunto de perfis nulo.

No diagrama acima, cada uma das fontes expõe três pinos: Visualização, Captura e Foto. E como um perfil nulo foi definido, a Captura de Mídia resultante expõe todos os nove pinos para o aplicativo. O aplicativo pode examinar cada pino e cada tipo de mídia disponível em cada pino.

Embora isso forneça flexibilidade para o aplicativo, ele também compõe a complexidade de gerenciar a máquina de estado determinando qual combinação de tipos/pinos de mídia pode ser ativada simultaneamente.

No entanto, utilizando a filtragem baseada em perfil:

filtragem baseada em perfil.

O aplicativo pode criar várias instâncias da Captura de Mídia, cada uma configurada com um perfil específico. No diagrama acima, a instância de perfil nulo é deixada em como uma ilustração, o aplicativo pode optar por não criar a instância de perfil nulo.

Os objetos inferiores do Media Capture são configurados com um perfil específico. Com base nas informações de perfil publicadas pelo IHV/OEM das fontes, o pipeline resultante só extrairá as fontes necessárias.

Para o perfil Voltado para o Mundo da Foto da HQ, somente os pinos visualização e foto do RGB voltado para o mundo (Origem 3) seriam expostos, juntamente com apenas os tipos de mídia que o IHV/OEM indicou funcionarão para as operações de foto. Isso pressupõe que o IHV/OEM indicou que, para o HQ Photo, a captura simultânea não é possível. Se a Captura simultânea for permitida, o pin captura, juntamente com os tipos de mídia que podem ser usados para operações simultâneas de foto e gravação, serão expostos.

Para o Usuário de Gravação Voltado para o Usuário, somente os pinos visualização e captura do RGB voltado para o usuário (Origem 1) seriam expostos. Novamente, o diagrama acima pressupõe que as operações de foto não são possíveis quando o pin de captura está ativo.

Para o perfil Realidade Misturada, os fluxos de vídeo RGB e World Facing Perception voltados para o mundo seriam expostos ao aplicativo cliente. E, novamente, somente os tipos de mídia que têm a garantia de funcionar simultaneamente são disponibilizados.

Especificação do desenvolvedor do Perfil de Câmera V2