Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Important
Os metadados do dispositivo foram preteridos e serão removidos em uma versão futura do Windows. Para obter informações sobre a substituição dessa funcionalidade, consulte Metadados do contêiner do pacote de driver.
O Windows oferece aos Fabricantes Independentes de Hardware (IHVs) e aos Fabricantes de Equipamentos Originais de Sistema (OEMs) a capacidade de criar plug-ins de processamento de vídeo na forma de um Media Foundation Transform (MFT), conhecido como MFT do driver de câmara. Uma vez instalados, esses MFTs de controlador são usados por aplicações UWP de dispositivos para ativar efeitos de vídeo especiais. Algumas câmeras fornecem pinos separados para visualização, captura e fotografias. Essas câmeras de vários pinos representam desafios únicos para os desenvolvedores. Este artigo aborda alguns pontos a considerar ao desenvolver um driver de câmera MFT em uma câmera de vários pinos. Para obter mais informações sobre como criar um MFT de controlador, consulte Criação de um MFT de controlador de câmara.
Introduction
O driver MFT também é referido como MFT0 para indicar que é o primeiro MFT a operar no leitor de origem. Uma instância separada de MFT0 é anexada a cada pino na fonte de captura. Para alguns OEMs de sistema, o driver de captura AVStream deve suportar um pino de pré-visualização, um pino de captura e um pino de imagem estática. Isso significa que pode haver três instâncias de MFT0. Este diagrama mostra esta arquitetura, com três cópias do plug-in MFT de IHV, uma para cada fluxo.
Cenários típicos para MFT0 podem apresentar desafios. Duas funções populares para MFT0 são:
Analisar o fluxo de vídeo para fornecer feedback à câmera para melhorar a captura (como foco automático baseado em host e exposição automática)
Adicionar efeitos de vídeo
One-pin webcam
Historicamente, as câmaras eram expostas ao Windows como um único pin de captura. Este diagrama representa a forma como uma webcam de pino único funciona:
Nesse caso, o controle da câmera e os efeitos de vídeo funcionam como projetado, pois a visualização e as imagens estáticas são derivadas do pino de captura após a aplicação do controle da câmera e dos efeitos de vídeo. O resultado é que o ficheiro guardado ou o amigo de chat do utilizador vê os mesmos efeitos de vídeo que o utilizador vê na sua pré-visualização, e que há apenas uma instância do recurso de controlo da câmara. Se houver um aplicativo de dispositivo UWP associado, o aplicativo será conectado ao MFT0 no pino de captura, de modo que o MFT0 obterá as mensagens de controle do aplicativo (ou seja, o usuário).
Three-pin webcam
Uma câmera de três pinos pode ter até três instâncias de MFT0, dependendo das necessidades do aplicativo. Este diagrama representa a forma como uma câmara de três pinos funciona:
Esta situação coloca vários desafios. Primeiro, no caso de uma solução de autoexposição baseada em host, que requer controle direto do sensor da câmera e configurações do ISP, três MFT0s podem estar tentando controlar a câmera ao mesmo tempo. Isso quebra o sistema de controle.
Em segundo lugar, existem potencialmente três instâncias de efeitos de vídeo. Além de incorrer no custo de três vezes os cálculos, as três instâncias do MFT0 agora devem comunicar-se de modo a garantir que cada quadro de vídeo tenha sempre o mesmo efeito no mesmo estado. Caso contrário, o que o usuário vê não será o que é salvo ou compartilhado.
Além disso, existem dois fatores compostos finais:
Cada instância do MFT0 pode ser criada ou encerrada a qualquer momento
O aplicativo de dispositivo UWP está conectado apenas a uma instância do MFT0
Compressed video
Uma webcam ou OEM do sistema pode optar por compactar o vídeo antes que ele seja apresentado no pino de captura (ou seja, na própria webcam). Descarregando a compressão para uma webcam permite que PCs de baixa potência salvem e compartilhem vídeo HD. Este fluxo de vídeo comprimido geralmente não pode ser analisado para suportar o controle da câmera, nem os efeitos de vídeo podem ser aplicados. Esse cenário apresenta o desafio de tornar todas as instâncias do MFT0 (e o aplicativo de dispositivo da Microsoft Store, se ele estiver lá) cientes de que nenhum efeito é aplicado ao fluxo de captura. Este diagrama representa vídeo comprimido:
Se um utilizador aplicar um efeito de vídeo ao fluxo de visualização, este não poderá ser aplicado ao fluxo de captura ou ao pino estático. Portanto, o usuário vê um efeito de vídeo que não é aplicado ao vídeo salvo ou transmitido. Se o fluxo de visualização for interrompido, o aplicativo de dispositivo da Microsoft Store tentará se conectar ao fluxo de captura. Quando um usuário está transmitindo vídeo compactado, isso não permite muitos recursos.
Comunicação entre instâncias MFT0
Se as três instâncias do MFT0 puderem se comunicar entre si, isso poderá resolver a maioria dos problemas. A forma como estas instâncias se descobrem depende do IHV. Depois que todos os MFT0s puderem se comunicar, a instância do MFT0 conectada ao aplicativo de dispositivo da Microsoft Store poderá informar outras instâncias sobre qual efeito está sendo aplicado e seu estado atual. Além disso, as três instâncias podem determinar qual instância aplica o controle de câmera. Finalmente, o pino de visualização pode determinar se o pino de captura está transmitindo vídeo codificado. O pino de visualização pode então desativar os efeitos de vídeo.
Embora a comunicação entre instâncias do MFT0 resolva os principais problemas de experiência do usuário, três instâncias de efeitos de vídeo ainda devem estar sendo executadas simultaneamente. Alguns efeitos de vídeo podem usar a maioria dos recursos de CPU disponíveis, particularmente quando o vídeo em tela cheia está sendo visualizado e capturado ao mesmo tempo. São questões sérias. Por motivos de desempenho, cada ISV deve considerar qual processamento pode ser executado uma vez e compartilhado com todas as instâncias do MFT0, como deteção de rosto.