Partager via


Notification d’obturateur/commutateur de confidentialité

Certains fabricants de caméras peuvent souhaiter inclure des obturateurs physiques ou des commutateurs d’arrêt qui peuvent bloquer la caméra à l’aide d’un contrôle physique qui ne peut pas être remplacé par un logiciel. Ces fonctionnalités ne sont pas encouragées en raison du risque d’activation par inadvertance et de confusion du client qui en résulte, mais si elles sont implémentées, elles doivent suivre les instructions décrites dans Volets de confidentialité de l’appareil photo et commutateurs d’arrêt, y compris pour signaler l’état de l’obturateur/commutateur.

Lorsqu’un obturateur est fermé ou qu’un bouton d’arrêt est actif, l’appareil photo continue d’être entièrement fonctionnel pour Windows et les applications utilisant les API d’appareil photo existantes, mais le flux d’image ou de vidéo est noir ou sombre (ou remplacé par une image statique, telle qu’une image de l’appareil avec une flèche pointant vers l’emplacement du contrôle physique). Cela soulève des problèmes potentiels dans lesquels les applications qui accèdent à la caméra ne savent pas que la caméra est obclus, et les utilisateurs finaux qui ont involontairement activé le contrôle physique peuvent être confus quant à la raison pour laquelle leur caméra ne fonctionne pas comme prévu.

Pour répondre à ces préoccupations, les caméras qui implémentent des obturateurs ou des commutateurs d’arrêt doivent implémenter un mécanisme pour détecter l’état de l’obturateur/commutateur et le signaler au système d’exploitation. Cette rubrique fournit des conseils pour les fabricants OEM et les ODM qui implémentent ce mécanisme de création de rapports, et décrit également les contrôles et structures que les développeurs de pilotes de caméra utiliseront pour publier l’état de l’obturateur/commutateur sur le système d’exploitation.

En plus de la fonctionnalité de notification d’obturateur/commutateur de confidentialité, le système d’exploitation implémente la détection d’occlusion de la caméra lorsqu’une caméra frontale (FFC) est obstruée par le couvercle de l’appareil lorsque l’action de fermeture du commutateur de couvercle est définie sur « Ne rien faire », par exemple, un ordinateur ne se met pas en veille ou s’éteint pas lorsque le couvercle est fermé. Un exemple de scénario peut être un ordinateur portable ancré avec des moniteurs externes en cours d’utilisation pendant que le couvercle de l’ordinateur portable est fermé. Il peut y avoir certains facteurs de forme d’appareil où ce comportement n’est pas souhaité. Par conséquent, un mécanisme de refus de la détection d’occlusion du couvercle de l’appareil est défini ci-dessous.

Vue d’ensemble de l’architecture

Le contrôle KSPROPERTY_CAMERACONTROL_PRIVACY est utilisé lorsque le système d’exploitation interroge l’état actuel à partir d’un pilote de caméra. Elle ne doit être utilisée qu’en tant que propriété Get. Les développeurs de pilotes ne doivent pas prendre en charge la propriété Set de contrôle KSPROPERTY_CAMERACONTROL_PRIVACY dans leurs pilotes.

Notes

Les caméras qui implémentent des obturateurs de confidentialité ou des commutateurs d’arrêt doivent se conformer aux exigences décrites dans Volets de confidentialité de l’appareil photo et commutateurs d’arrêt.

Dans le pilote USB Video Class (UVC), le contrôle KSPROPERTY_CAMERACONTROL_PRIVACY est mappé à la propriété CT_PRIVACY_CONTROL définie dans la spécification de classe UVC v1.5.

diagramme illustrant l’architecture de notification de l’obturateur de confidentialité

En plus de l’utilisation du contrôle KSPROPERTY existant, KSPROPERTY_CAMERACONTROL_PRIVACY, un nouveau flux d’appel KSEVENT est introduit afin que le pilote de la caméra puisse signaler quand l’état de l’obturateur/commutateur de confidentialité de la caméra est modifié s’il existe des clients qui s’inscrivent à ce KSEVENT.

L’événement KSEVENT est émis à l’aide des mêmes GUID et ID set que le KSPROPERTY utilise.

Pour clarifier ce qui est illustré dans le diagramme ci-dessus, le système d’exploitation s’attend à ce que le pilote AVS implémente le mécanisme, si le développeur de pilotes choisit de prendre en charge cette fonctionnalité, pour obtenir et écouter les changements d’état générés par le capteur d’obturateur. Le système d’exploitation interroge l’état via la méthode get KSPROPERTY et émet un événement KSEVENT en attente que le pilote signale lorsque l’état d’obturation est modifié. Le changement d’état de l’obturateur/commutateur ne doit pas empêcher le fonctionnement de la caméra, par exemple, pour provoquer une situation d’erreur.

NOTE: Si le pilote AVS prend en charge cette fonctionnalité, mais que le matériel sous-jacent ne le fait pas, le pilote AVS retourne l’erreur non prise en charge lorsque le système d’exploitation émet l’inscription KSEVENT .

Méthodes de détection et de création de rapports

Certaines caméras détectent l’état d’obturation à l’aide d’un algorithme d’analyse de pixels exécuté dans le microprogramme du processeur de signal d’image (ISP). Cela impose une limitation sur ces caméras que la caméra doit diffuser activement pour détecter et signaler l’état de l’obturateur. Pour plus d’informations sur le moment et la façon dont la caméra doit signaler son état d’obturateur/commutateur, consultez Détection et création de rapports sur l’état de l’obturateur.

De même, les développeurs d’applications qui utilisent le signal d’occlusion de la caméra ne doivent pas utiliser l’état d’obturation signalé, sauf si la caméra diffuse activement en continu. Pour plus d’informations, consultez Classe CameraOcclusionInfo .

KSPROPERTY

Table récapitulative de l’utilisation (KSPROPERTY)

Get Définir Cible Type de descripteur de propriété Type de valeur de propriété
Oui Non Filtrer KSPROPERTY_CAMERACONTROL_S LONG

La valeur de propriété (données d’opération) est une valeur LONG qui spécifie si le mode de confidentialité est activé ou désactivé :

  • La valeur 0 indique que le capteur de la caméra peut capturer des images vidéo

  • La valeur 1 indique que le capteur de la caméra ne peut pas capturer des images vidéo.

La structure KSPROPERTY_CAMERA_CONTROL_S doit être remplie comme suit :

Membre de structure Valeur
KSPROPERTY. Ensemble Doit être PROPSETID_VIDCAP_CAMERACONTROL
KSPROPERTY.Id Doit être KSPROPERTY_CAMERACONTROL_PRIVACY
KSPROPERTY. Drapeaux Doit être KSPROPERTY_TYPE_GET
Valeur Initialiser sur 0
Indicateurs Ignoré, défini sur 0
Capabilities Ignoré, défini sur 0

KSEVENT

Table récapitulative de l’utilisation (KSEVENT)

Get Définir Cible Type de descripteur d’événement Type de valeur d’événement
Non Oui Filtrer KSEVENT KSEVENTDATA

La structure KSEVENT doit être remplie comme suit :

Membre de structure Valeur
Définir Doit être PROPSETID_VIDCAP_CAMERACONTROL
Id Doit être KSPROPERTY_CAMERACONTROL_PRIVACY
Indicateurs KSEVENT_TYPE_ENABLE

La structure KSEVENTDATA doit être remplie comme suit :

Membre de structure Valeur
NotificationType Doit être KSEVENTF_EVENT_HANDLE

Désactiver la détection d’occlusion du couvercle de l’appareil

Pour désactiver la détection d’occlusion du couvercle de l’appareil, les fabricants OEM peuvent définir la clé de propriété d’appareil suivante :

DEVPROPKEY

    DEVPROPGUID = {3AB8560B-EFCF-43C1-A7EC-130E46857AF4}

    DEVPROPID = 2

DEVPROPTYPE = DEVPROP_TYPE_UINT32

PropertyBuffer = (ULONG) 1

PropertyBufferSize = sizeof(ULONG)

Notes

La définition de la valeur PropertyBuffer sur 0 revient à ne pas définir du tout la clé de propriété de l’appareil.

La clé de propriété de périphérique peut être fournie dans un fichier INF de pilote à l’aide de AddProperty ou à l’aide d’un descripteur MS OS s’il n’existe aucun fichier INF, par exemple, une caméra USB utilisant le pilote de caméra de boîte de réception UVC.

Exemple INF AddProperty

[OptOutLidOcclusionSampleAddPropertySection]

{3AB8560B-EFCF-43C1-A7EC-130E46857AF4},2,7,,1

Exemple de descripteur de système d’exploitation MS

UCHAR Example2_MSOS20DescriptorSet_UVCDevicePropertyKeyForLidOcclusionOptOut[0x76] =
{
    //
    // Microsoft OS 2.0 Descriptor Set Header
    //
    0x0A, 0x00, // wLength of MSOS20_SET_HEADER_DESCRIPTOR (10 bytes)
    0x00, 0x00, // wDescriptorType MSOS20_SET_HEADER_DESCRIPTOR
    0x00, 0x00, 0x00, 0x0A, // dwWindowsVersion – 0x10000000 for Windows 10
    0x76, 0x00, // wTotalLength – 0x76(118) bytes
    
    //
    // Microsoft OS 2.0 Registry Value Feature Descriptor
    //
    0x6C, 0x00, // wLength - 0x6C(108) bytes
    0x04, 0x00, // wDescriptorType – MSOS20_FEATURE_REG_PROPERTY
    0x04, 0x00, // wPropertyDataType - 4 for REG_DWORD_LITTLE_ENDIAN
    0x5E, 0x00, // wPropertyNameLength – 0x5E(94) bytes
    'D', 0x00, 'K', 0x00, // Property Name – DKEY-{3AB8560B-EFCF-43C1-A7EC-130E46857AF4},2
    'E', 0x00, 'Y', 0x00,
    '-', 0x00, '{', 0x00,
    '3', 0x00, 'A', 0x00,
    'B', 0x00, '8', 0x00,
    '5', 0x00, '6', 0x00,
    '0', 0x00, 'B', 0x00,
    '-', 0x00, 'E', 0x00,
    'F', 0x00, 'C', 0x00,
    'F', 0x00, '-', 0x00,
    '4', 0x00, '3', 0x00,
    'C', 0x00, '1', 0x00,
    '-', 0x00, 'A', 0x00,
    '7', 0x00, 'E', 0x00,
    'C', 0x00, '-', 0x00,
    '1', 0x00, '3', 0x00,
    '0', 0x00, 'E', 0x00,
    '4', 0x00, '6', 0x00,
    '8', 0x00, '5', 0x00,
    '7', 0x00, 'A', 0x00,
    'F', 0x00, '4', 0x00,
    '}', 0x00, ',', 0x00,
    '2', 0x00, 0x00, 0x00,
    0x00, 0x00,
    0x04, 0x00, // wPropertyDataLength – 4 bytes
    0x01, 0x00, 0x00, 0x00 // PropertyData – 0x00000001 (1)
};

Voir aussi

KSPROPERTY_CAMERACONTROL_PRIVACY

KSPROPERTY_CAMERA_CONTROL_S

KSPROPERTY

KSEVENT

KSEVENTDATA

PROPSETID_VIDCAP_CAMERACONTROL