Partager via


Génération de groupes de capteurs (profil de caméra V2)

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

Profils de concurrence

Le profil de concurrence, dans le profil de l'appareil photo 1507, a requis que chaque appareil répertorie explicitement les informations multimédias des autres appareils susceptibles de diffuser de façon concomitante. 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 ultérieure, le serveur Frame utilise l’ID de profil pour déterminer la concurrence. 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 EnregistrementVidéo,0

EnregistrementVidéo,1

EnregistrementVidéo,2

HighQualityPhoto,0

HighQualityPhoto,1

HighQualityPhoto,2
Appareil 2 VideoRecording,1

EnregistrementVidéo,2

EnregistrementVidéo,3

EnregistrementVidéo,4

HighQualityPhoto,2

HighQualityPhoto,3

HighQualityPhoto,4

Et 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 :

  • EnregistrementVidéo,1

  • EnregistrementVidéo,2

  • HighQualityPhoto,2

Les ID de profil de [VideoRecording,1], [VideoRecording,2] et [HighQualityPhoto,2] sont communs entre les deux appareils, ce qui permet à Frame Server de publier des profils concomitants pour ces profils.

Cela permet aux caméras individuelles de déclarer leurs profils avec leurs profils concurrents uniquement sous leurs nœuds d'interface de périphérique.

Les profils simultanés pour le profil de caméra V2 sont générés en tant que profils publiés par les groupes de capteurs. Les développeurs d’applications peuvent traiter le profil de caméra V2 de façon 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 notre exemple d’appareil 1 et d’appareil 2, l’ensemble de profils du groupe de capteurs résultant est :

  • EnregistrementVidéo,0

  • EnregistrementVidéo,1

  • EnregistrementVidéo,2

  • EnregistrementVidéo,3

  • EnregistrementVidéo,4

  • HighQualityPhoto,0

  • HighQualityPhoto,2

  • HighQualityPhoto,3

  • HighQualityPhoto,4

Les profils mis en surbrillance, car ils sont des profils simultanés, sont synthétisés par Frame Server.

Par exemple:

VideoRecording,1 et VideoRecording,2 de l’appareil 1 sont définis 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 Device 2, une caméra universelle, avec un capteur plus grand, déclare ces profils :

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 :

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 vous pouvez le voir, tout comme le groupe de capteurs traduit les index de broche afin de refléter l’appareil virtuel, la même traduction des index de broche se fait 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, afin qu’ils puissent être fusionnés. Si l’un des profils a déclaré une contrainte de profil ou déclaré une autre contrainte de profil, la syntaxe du profil n’est pas valide et rejetée.

Exemple de définition de profil (création de groupes 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, une orientée vers l'utilisateur (Caméra UF) et une orientée vers le monde (Caméra WF). Supposons également que la caméra WF dispose d’un capteur plus grand capable d’augmenter la résolution et les fréquences d’images.

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

Caméra Type de média disponible
WF : Aperçu 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 5120x3840 (aucune séquence photo)

3840x2160

2560x1920

1920x1080

1280x960

280x720

UF : Aperçu 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 3840x2160 (aucune séquence photo)

2560x1920 (aucune séquence photo)

1920x1080

1280x960

1280x720

Ajoutons également quelques 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 capture et la broche 2 est une broche photo.

  2. L'utilisation de la capture à haute fréquence d'images 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 fps est considéré comme ayant une haute fréquence d'images).

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

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

  5. Tous les profils doivent avoir le même rapport d’aspect entre les opérations d’aperçu, d’enregistrement et de photo.

  6. Les deux caméras sont capables de capturer et de photo simultanées tant que la capture de 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 de 30 fps ou inférieure.

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 pendant la génération du groupe de capteurs (FSSensorGroupId est déclaré pour la directive INF ci-dessus), le groupe de capteurs « INF » résultant ressemble à la déclaration suivante (en supposant que la caméra WF est ajoutée au groupe de capteurs en premier).

Toutefois, il n’y a pas d’INF généré. Il s’agit simplement d’un exemple illustrant 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 à toutes 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 harmoniser à la fois les résolutions 16:9 et 4:3 de 1080p ou moins, ainsi que 1280x960 ou moins, la déclaration devient :

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

Qui applique la logique correspondante à toutes les résolutions 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 de pixels.

spécification du développeur Camera Profile V2