Geração de grupo de sensores (Perfil de Câmera V2)
No RS1, a geração do grupo de sensores foi baseada na existência de Perfis Simultâneos ou na declaração do campo FSSensorGroupId no nó da interface do dispositivo. Se fSSensorGroupId correspondeu e todos os dispositivos tinham a mesma ID de Contêiner, um Grupo de Sensores foi criado.
Perfis de simultaneidade
Perfil de Simultaneidade, no Perfil de Câmera 1507 exigiu que cada dispositivo listasse explicitamente as informações de mídia simultâneas com suporte de todos os outros dispositivos que podem transmitir simultaneamente. Esse requisito resultou em uma quantidade significativa de informações redundantes.
Para simplificar a declaração de Perfis Simultâneos, se o OEMCameraProfileVersion estiver definido e a versão for 2 ou superior, o Servidor de Quadros usará a ID do Perfil para determinar a simultaneidade. O FSSensorGroupId gera um Grupo de Sensores e, com base nos perfis definidos por esses dispositivos, se a ID do Perfil corresponder, eles serão considerados Perfis Simultâneos.
Por exemplo, temos dois dispositivos (Dispositivo 1 e Dispositivo 2), que dão suporte aos seguintes Perfis:
Dispositivo | Perfis com suporte |
---|---|
Dispositivo 1 | VideoRecording,0 VideoRecording,1 VideoRecording,2 HighQualityPhoto,0 HighQualityPhoto,1 HighQualityPhoto,2 |
Dispositivo 2 | VideoRecording,1 VideoRecording,2 VideoRecording,3 VideoRecording,4 HighQualityPhoto,2 HighQualityPhoto,3 HighQualityPhoto,4 |
E o Dispositivo 1 e o Dispositivo 2 declaram o FSSensorGroupId em sua Interface do Dispositivo e têm a mesma ID de Contêiner. O Servidor de Quadros cria um Grupo de Sensores para esses dois dispositivos.
O Servidor de Quadros também publica simultaneidade entre os dois dispositivos para quaisquer perfis com IDs de Perfil correspondentes:
VideoRecording,1
VideoRecording,2
HighQualityPhoto,2
Como [VideoRecording,1], [VideoRecording,2] e [HighQualityPhoto,2] IDs de perfil são comuns entre os dois dispositivos, o Servidor de Quadros publica Perfis Simultâneos para esses perfis.
Isso permite que câmeras individuais declarem seus perfis junto com seus perfis simultâneos somente em seus nós da Interface do Dispositivo.
Perfis simultâneos para Perfil de Câmera V2 são gerados como perfis publicados por Grupos de Sensores. Os desenvolvedores de aplicativos podem tratar o Perfil de Câmera V2 de maneira uniforme, independentemente de o perfil pertencer a um único dispositivo físico ou a uma coleção de dispositivos virtualizados por meio de um Grupo de Sensores.
Perfis de Grupo de Sensores
Como um Grupo de Sensores é um constructo virtual, não há nenhum perfil específico disponível para um Grupo de Sensores. Em vez disso, um conjunto virtual de perfis é publicado pelo Servidor de Quadros junto com as informações do Grupo de Sensores.
Para nosso dispositivo de exemplo 1 e dispositivo 2, o conjunto de perfis do grupo de sensores resultante seria:
VideoRecording,0
VideoRecording,1
VideoRecording,2
VideoRecording,3
VideoRecording,4
HighQualityPhoto,0
HighQualityPhoto,2
HighQualityPhoto,3
HighQualityPhoto,4
Os perfis realçados, pois são Perfis Simultâneos, são sintetizados pelo Servidor de Quadros.
Por exemplo:
VideoRecording do Dispositivo 1, 1 e VideoRecording,2 são declarados como:
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF0",0,"Pin0:((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF1",0,"Pin0:((RES<=1280,720;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF2",0,"Pin1:((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF3",0,"Pin1:((RES<=1280,720;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF4",0,"Pin2:((RES<=3840,2880;FRT<=8,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF5",0,"Pin2:((RES<=3840,2160;FRT<=8,1;SUT==ALL))"
E o Dispositivo 2, uma câmera voltada para o mundo, com um sensor maior, declara estes perfis:
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF0",0,"Pin0:((RES<=1920,1440;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF1",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF2",0,"Pin1:((RES<=1920,1440;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF3",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF4",0,"Pin2:((RES<=5120,3840;FRT<=8,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF5",0,"Pin2:((RES<=5120,2880;FRT<=8,1;SUT==ALL))"
Para o Grupo de Sensores gerado, suponha que o Dispositivo 1 seja adicionado primeiro, o perfil VideoRecording,1 e VideoRecording,2 é:
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF1",0,"Pin1:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF3",0,"Pin3:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF4",0,"Pin4:((RES==;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,1","MTF5",0,"Pin5:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF0",0,"Pin0:((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF1",0,"Pin0:((RES<=1280,720;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF2",0,"Pin1:((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF3",0,"Pin1:((RES<=1280,720;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF4",0,"Pin2:((RES<=3840,2880;FRT<=8,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF5",0,"Pin2:((RES<=3840,2160;FRT<=8,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF6",0,"Pin3:((RES<=1920,1440;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF7",0,"Pin3:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF8",0,"Pin4:((RES<=1920,1440;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF9",0,"Pin4:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF10",0,"Pin5:((RES<=5120,3840;FRT<=8,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2","MTF11",0,"Pin5:((RES<=5120,2880;FRT<=8,1;SUT==ALL))"
Como pode ser visto, assim como o Grupo de Sensores converte os índices de pino para refletir o dispositivo virtual, a mesma tradução de índice de pino ocorre para a declaração de perfil.
Observação: a restrição de perfil para perfis simultâneos DEVE ser a mesma. No exemplo acima, nenhum perfil tem restrições de perfil, portanto, elas podem ser mescladas. Se um dos perfis tivesse declarado uma Restrição de Perfil ou declarado uma restrição de perfil diferente, a sintaxe do perfil seria inválida e rejeitada.
Declaração de perfil de exemplo (geração de grupo de sensores)
Para ilustrar o novo esquema de perfil declarativo, podemos produzir um perfil de câmera de exemplo por meio de entradas INF para duas câmeras hipotéticas.
Vamos supor que temos duas câmeras, uma Voltada para o Usuário (UF da Câmera) e uma Voltada para o Mundo (WF da Câmera). Vamos supor também que o WF câmera tem um sensor maior capaz de maior resolução e taxas de quadros.
O conjunto de tipos de mídia disponíveis das duas câmeras pode ter esta aparência:
Câmera | Tipo de mídia disponível |
---|---|
WF: versão prévia | 3840x2160@30fps 2560x1920@30fps 1920x1080@30fp 1280x960@30fps 1280x720@30fps 800x600@30fps 640x480@30fps 640x360@30fps |
WF: Capturar | 3840x2160@60fps 3840x2160@30fps 2560x1920@60fps 2560x1920@30fps 1920x1080@120fp 1920x1080@60fp 1920x1080@30fp 1280x960@120fps 1280x960@60fps 1280x960@30fps 1280x720@120fps 1280x720@60fps 1280x720@30fps 800x600@120fps 800x600@60fps 800x600@30fps 640x480@120fps 640x480@60fps 640x480@30fps 640x360@120fps 640x360@60fps 640x360@30fps |
WF: Foto | 5120x3840 (sem sequência de fotos) 3\.840 x 2.160 2560x1920 1\.920 x 1.080 1280 x 960 280x720 |
UF: versão prévia | 1920x1080@30fp 1280x960@30fps 1280x720@30fps 800x600@30fps 640x480@30fps 640x360@30fps |
UF: Capturar | 1920x1080@120fp 1920x1080@60fp 1920x1080@30fp 1280x960@120fps 1280x960@60fps 1280x960@30fps 1280x720@120fps 1280x720@60fps 1280x720@30fps 800x600@120fps 800x600@60fps 800x600@30fps 640x480@120fps 640x480@60fps 640x480@30fps 640x360@120fps 640x360@60fps 640x360@30fps |
UF: Foto | 3840x2160 (sem sequência de fotos) 2560x1920 (sem sequência de fotos) 1\.920 x 1.080 1280 x 960 1\.280 x 720 |
Vamos também adicionar algumas restrições de hardware hipotéticas:
O pino de visualização é o pino 0. No KSFILTER_DESCRIPTOR, quando a matriz de KSPIN_DESCRIPTOR_EX é definida, o primeiro KSPIN_DESCRIPTOR_EX é o descritor do pino de visualização. Da mesma forma, o pino 1 é Pino de captura e o pino 2 é Pino de foto.
Usar a captura de Alta Taxa de Quadros na câmera WF bloqueia o uso da câmera UF (qualquer tipo de mídia cuja taxa de quadros seja maior que 30 fps é considerada Alta Taxa de Quadros).
O uso da captura de 4K (3840x2160) ou de resolução mais alta na câmera WF limita a câmera voltada para UF para 720p.
A versão prévia e a captura devem estar usando a mesma resolução se qualquer captura de taxa de quadros alta for usada.
Todos os perfis devem ter a mesma taxa de proporção entre operações de visualização, registro e foto.
Ambas as câmeras são capazes de capturar e foto simultâneas, desde que a captura de Alta Taxa de Quadros não seja usada e a gravação de vídeo 4K ou superior não esteja ativa.
Somente as operações de gravação de vídeo são possíveis para ambas as câmeras quando ambas estão ativas e a resolução é limitada a 1080p e a taxa de quadros deve ser de 30 fps ou inferior.
Traduzindo as restrições acima em perfis de exemplo, temos a seguinte declaração:
; Camera WF
[SampleDriver.WorldFacingCameraInterface.AddReg]
HKR,,"FSSensorGroupId",0,"{E770B3DB-F6C9-4303-B767-97F17A6BD123}"
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF1",0,"Pin1:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF2",0,"Pin2:((RES<=3840,2160;FRT==;SUT==ALL))((RES<=2560,1920;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF2",0,"Pin2:(!)"
; Camera UF
[SampleDriver.UserFacingCameraInterface.AddReg]
HKR,,"FSSensorGroupId",0,"{E770B3DB-F6C9-4303-B767-97F17A6BD123}"
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF2",0,"Pin2:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF1",0,"Pin1:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF2",0,"Pin2:((RES<=1920,1080;FRT==;SUT==ALL))((RES<=1280,960;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF2",0,"Pin2:(!)"
Quando esses perfis são processados durante a geração do Grupo de Sensores (FSSensorGroupId é declarado para a diretiva INF acima), o "INF" do Grupo de Sensores resultante seria semelhante à declaração a seguir (supondo que o WF da Câmera seja adicionado primeiro ao Grupo de Sensores).
No entanto, não há nenhum INF gerado. Este é apenas um exemplo para ilustrar como o processo de publicação do Grupo de Sensores sintetiza os perfis em vários dispositivos.
; Sensor Group WF & UF
[SampleDriver.SensorGroupInterface.AddReg]
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF0",0,"Pin3:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF1",0,"Pin4:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF2",0,"Pin5:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF1",0,"Pin1:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF2",0,"Pin2:((RES<=3840,2160;FRT==;SUT==ALL))((RES<=2560,1920;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF0",0,"Pin3:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF1",0,"Pin4:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF2",0,"Pin5:((RES<=1920,1080;FRT==;SUT==ALL))((RES<=1280,960;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF0",0,"Pin3:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF1",0,"Pin4:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF2",0,"Pin5:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF2",0,"Pin2:(!)"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF3",0,"Pin3:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF4",0,"Pin4:((RES<=1920,1080;FRT<=30,1;SUT==ALL)) ((RES<=1280,960;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF6",0,"Pin5:(!)"
Restrição de perfil do AAR
Um dos atalhos possíveis para declarar perfis é definir a Restrição de Perfil do AAR. Se a restrição do hardware subjacente for puramente uma limitação de largura de banda, a declaração de perfil acima poderá ser reduzida para:
; Camera WF
[SampleDriver.WorldFacingCameraInterface.AddReg]
HKR,,"FSSensorGroupId",0,"{E770B3DB-F6C9-4303-B767-97F17A6BD123}"
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF1",0,"Pin1:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,0","MTF2",0,"Pin2:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","Constraint",0,"AAR"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF1",0,"Pin1:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,0","MTF2",0,"Pin2:((RES<=3840,2160;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","Constraint",0,"AAR"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF2",0,"Pin2:(!)"
; Camera UF
[SampleDriver.UserFacingCameraInterface.AddReg]
HKR,,"FSSensorGroupId",0,"{E770B3DB-F6C9-4303-B767-97F17A6BD123}"
HKR,,"OEMCameraProfileVersion",0x00010001,2
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","Constraint",0,"LRS;LST"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF0",0,"Pin0:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF1",0,"Pin0:((RES==;FRT>=60,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighFrameRate,1000","MTF2",0,"Pin2:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","Constraint",0,"AAR"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF1",0,"Pin1:(!)"
HKR,"Profiles\KSCAMERAPROFILE_PhotoSequence,1000","MTF2",0,"Pin2:((RES<=1920,1080;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","Constraint",0,"AAR"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","BlockedControls",0,"PHSEQ"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,1000","MTF2",0,"Pin2:((RES==;FRT==;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF1",0,"Pin1:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
HKR,"Profiles\KSCAMERAPROFILE_VideoRecording,2000","MTF2",0,"Pin2:(!)"
Isso aplica a Restrição de Perfil do AAR para que toda a lógica de correspondência baseada em resolução se aplique a toda a taxa de proporção.
Então, em vez de:
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))((RES<=1280,960;FRT<=30,1;SUT==ALL))"
Para corresponder às resoluções 16:9 e 4:3 de 1080p ou inferior e 1280x960 ou inferior, a declaração se torna:
HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"
O que aplica a lógica correspondente a toda a resolução cuja contagem total de pixels é menor que 1920 * 1080.
Esse atalho só será válido se as restrições de HW forem baseadas apenas na largura de banda de pixel.