Partager via


Génération d’un groupe de capteurs (profil caméra V2)

Dans RS1, la génération du groupe de capteurs était basée sur l’existence de profils simultanés ou sur la déclaration du champ FSSensorGroupId dans le nœud d’interface de l’appareil. Si le FSSensorGroupId correspondait et que les appareils avaient tous le même ID de conteneur, un groupe de capteurs a été créé.

Profils d’accès concurrentiel

Profil d’accès concurrentiel, dans le profil d’appareil photo 1507, chaque appareil devait explicitement répertorier les informations multimédias simultanées prises en charge de tous les autres appareils pouvant être diffusés simultanément. Cette exigence a entraîné une quantité importante d’informations redondantes.

Pour simplifier la déclaration des profils simultanés, si OEMCameraProfileVersion est défini et que la version est 2 ou supérieure, le serveur Frame Server utilise l’ID de profil pour déterminer l’accès concurrentiel. FSSensorGroupId génère un groupe de capteurs et, en fonction des profils définis par ces appareils, si l’ID de profil correspond, ils sont considérés comme des profils simultanés.

Par exemple, nous avons deux appareils (Appareil 1 et Appareil 2), qui prennent en charge les profils suivants :

Appareil Profils pris en charge
Appareil 1 VideoRecording,0

VideoRecording,1

VideoRecording,2

HighQualityPhoto,0

HighQualityPhoto,1

HighQualityPhoto,2
Périphérique 2 VideoRecording,1

VideoRecording,2

VideoRecording,3

VideoRecording,4

HighQualityPhoto,2

HighQualityPhoto,3

HighQualityPhoto,4

L’appareil 1 et l’appareil 2 déclarent le FSSensorGroupId sous leur interface d’appareil et ont le même ID de conteneur. Le serveur Frame crée un groupe de capteurs pour ces deux appareils.

Le serveur Frame publie également la concurrence entre les deux appareils pour tous les profils avec des ID de profil correspondants :

  • VideoRecording,1

  • VideoRecording,2

  • HighQualityPhoto,2

Étant donné que [VideoRecording,1], [VideoRecording,2] et [HighQualityPhoto,2] les ID de profil sont communs entre les deux appareils, Frame Server publie des profils simultanés pour ces profils.

Cela permet aux caméras individuelles de déclarer leurs profils ainsi que leurs profils simultanés uniquement sous leurs nœuds d’interface d’appareil.

Les profils simultanés pour le profil d’appareil photo V2 sont générés en tant que profils publiés par des groupes de capteurs. Les développeurs d’applications peuvent traiter le profil caméra V2 d’une manière uniforme, que le profil appartienne à un seul appareil physique ou à une collection d’appareils virtualisés via un groupe de capteurs.

Profils de groupe de capteurs

Étant donné qu’un groupe de capteurs est une construction virtuelle, aucun profil spécifique n’est disponible pour un groupe de capteurs. Au lieu de cela, un ensemble virtuel de profils est publié par le serveur Frame, ainsi que les informations du groupe de capteurs.

Pour nos exemples d’appareil 1 et d’appareil 2, le jeu de profils du groupe de capteurs résultant serait :

  • VideoRecording,0

  • VideoRecording,1

  • VideoRecording,2

  • VideoRecording,3

  • VideoRecording,4

  • HighQualityPhoto,0

  • HighQualityPhoto,2

  • HighQualityPhoto,3

  • HighQualityPhoto,4

Les profils mis en surbrillance, car il s’agit de profils simultanés, sont synthétisés par Frame Server.

Par exemple :

VideoRecording,1 et VideoRecording,2 de l’appareil 1 sont déclarés comme suit :

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))"

Et l’appareil 2, une caméra universelle, avec un capteur plus grand, déclare les profils suivants :

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))"

Pour le groupe de capteurs généré, supposons que l’appareil 1 est ajouté en premier, le profil VideoRecording,1 et VideoRecording,2 est le suivant :

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))"

Comme on peut le voir, tout comme le groupe de capteurs traduit les index d’épingle pour refléter l’appareil virtuel, la même traduction d’index d’épingle a lieu pour la déclaration de profil.

Remarque : La contrainte de profil pour les profils simultanés DOIT être la même. Dans l’exemple ci-dessus, aucun profil n’a de contraintes de profil, de sorte qu’ils peuvent être fusionnés. Si l’un des profils avait déclaré une contrainte de profil ou une autre contrainte de profil, la syntaxe de profil n’était pas valide et rejetée.

Exemple de déclaration de profil (génération de groupe de capteurs)

Pour illustrer le nouveau schéma de profil déclaratif, nous pouvons produire un exemple de profil de caméra via des entrées INF pour deux caméras hypothétiques.

Supposons que nous avons deux caméras, l’une orientée utilisateur (APPAREIL photo) et l’autre orientée vers le monde (Camera WF). Supposons également que la caméra WF dispose d’un capteur plus grand capable d’une résolution et d’une fréquence d’images plus élevées.

L’ensemble des types de médias disponibles à partir des deux caméras peut ressembler à ceci :

Appareil photo Type de média disponible
WF : préversion 3840x2160@30fps

2560x1920@30fps

1920x1080@30fp

1280x960@30fps

1280x720@30fps

800x600@30fps

640x480@30fps

640x360@30fps

WF : Capture 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 : Photo 5120 x 3840 (pas de séquence photo)

3 840 x 2 160

2560x1920

1 920 x 1 080

1280 x 960

280x720

UF : préversion 1920x1080@30fp

1280x960@30fps

1280x720@30fps

800x600@30fps

640x480@30fps

640x360@30fps

UF : Capture 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 : Photo 3840 x 2160 (aucune séquence photo)

2560x1920 (pas de séquence photo)

1 920 x 1 080

1280 x 960

1 280 x 720

Nous allons également ajouter des contraintes matérielles hypothétiques :

  1. L’épingle d’aperçu est l’épingle 0. Dans le KSFILTER_DESCRIPTOR, lorsque le tableau de KSPIN_DESCRIPTOR_EX est défini, le premier KSPIN_DESCRIPTOR_EX est le descripteur de l’épingle d’aperçu. De même, la broche 1 est Broche de capture et broche 2 est Broche photo.

  2. L’utilisation de la capture de fréquence d’images élevée sur la caméra WF bloque l’utilisation de la caméra UF (tout type de média dont la fréquence d’images est supérieure à 30 images/s est considéré comme une fréquence d’images élevée).

  3. L’utilisation de la capture 4K (3840 x 2160) ou d’une résolution supérieure sur la caméra WF limite la caméra face à l’UF à 720p.

  4. La préversion et la capture doivent utiliser la même résolution si une capture à fréquence d’images élevée est utilisée.

  5. Tous les profils doivent avoir les mêmes proportions pour les opérations d’aperçu, d’enregistrement et de photo.

  6. Les deux appareils sont capables de capturer simultanément et photo tant que la capture à fréquence d’images élevée n’est pas utilisée et que l’enregistrement vidéo 4K ou supérieur n’est pas actif.

  7. Seules les opérations d’enregistrement vidéo sont possibles pour les deux caméras lorsque les deux sont actives et que la résolution est limitée à 1080p et que la fréquence d’images doit être inférieure ou inférieure à 30 i/s.

En traduisant les contraintes ci-dessus en exemples de profils, nous avons la déclaration suivante :

; 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:(!)"

Lorsque ces profils sont traités lors de la génération du groupe de capteurs (FSSensorGroupId est déclaré pour la directive INF ci-dessus), le « INF » du groupe de capteurs résultant ressemble à la déclaration suivante (en supposant que la caméra WF est d’abord ajoutée au groupe de capteurs).

Toutefois, aucun INF n’est généré. Il s’agit simplement d’un exemple pour illustrer comment le processus de publication du groupe de capteurs synthétise les profils sur plusieurs appareils.

; 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:(!)"

Contrainte de profil AAR

L’un des raccourcis possibles pour déclarer des profils consiste à définir la contrainte de profil AAR. Si la contrainte du matériel sous-jacent est purement une limitation de bande passante, la déclaration de profil ci-dessus peut être réduite à :

; 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:(!)"

Cela applique la contrainte de profil AAR afin que toute la logique de correspondance basée sur la résolution s’applique à tous les proportions.

Donc, au lieu 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))"

Pour correspondre aux résolutions 16 :9 et 4 :3 de 1080p ou inférieur et de 1280 x 960 ou inférieur, la déclaration devient :

HKR,"Profiles\KSCAMERAPROFILE_HighQualityPhoto,0","MTF0",0,"Pin0:((RES<=1920,1080;FRT<=30,1;SUT==ALL))"

Qui applique la logique de correspondance à toute résolution dont le nombre total de pixels est inférieur à 1920 * 1080.

Ce raccourci n’est valide que si les contraintes HW sont basées uniquement sur la bande passante en pixels.

Spécification du développeur Du profil d’appareil photo V2