Conseils d’implémentation de DShow Bridge pour les appareils UVC
Cette rubrique fournit des conseils d’implémentation pour la configuration du pont DShow pour les caméras et les appareils conformes à la spécification de la classe vidéo USB (UVC). La plateforme utilise les descripteurs de système d’exploitation Microsoft de la norme de bus USB pour configurer DShow Bridge. Les descripteurs de système d’exploitation des propriétés étendues sont une extension des descripteurs standard USB et sont utilisés par les périphériques USB pour retourner des propriétés d’appareil spécifiques à Windows qui ne sont pas activées par le biais de spécifications standard.
Vue d’ensemble
La pile Microsoft Camera Capture comprend une pile d’infrastructure héritée appelée DirectShow et une infrastructure moderne appelée Multimedia Foundation. Les IVS et les oem ont dû écrire des composants pour leurs appareils afin de satisfaire les deux pipelines.
DShow Bridge a été écrit dans le but de relier le pipeline DShow à la plateforme Media Foundation. Cela active de vrais pilotes universels afin que les IHVs et les OEM puissent écrire des pilotes qui peuvent s’exécuter avec les applications MediaFoundation et DShow sur Windows version 1607 et ultérieure. Avec l’option d’option DShow Bridge activée, une application DShow et des applications de partage peuvent partager simultanément le même matériel d’appareil photo.
Les IVS et les oem peuvent avoir besoin d’une exemption des stratégies qui régissent le pipeline DShow. Les partenaires peuvent activer les fonctionnalités suivantes à l’aide des descripteurs de système d’exploitation :
Opting in ou out of DShow Bridge : l’appareil peut accepter ou refuser le pont vers un pipeline mieux adapté à ses besoins. Le pipeline moderne est documenté de manière plus approfondie et utilise les fonctionnalités ajoutées au système d’exploitation sur plusieurs versions. Le pipeline hérité, en mode maintenance, est en retard.
Décompression MJPEG dans FrameServer : FrameServer est un service virtualisant un appareil photo. Cela permet de partager les épingles de l’appareil entre plusieurs clients. Les architectures ayant un décompresseur Media Foundation optimisé peuvent utiliser cette fonctionnalité pour décoder MJPEG dans FrameServer. Les formats multimédias traduits non compressés (YUY2) sont proposés aux applications multiples. Le flux n’est décompressé qu’une seule fois pour plusieurs clients possibles. Cela améliore les performances des applications. Le diagramme suivant montre le pipeline de capture de caméra :
Les oem et les IHVs empaquetant leurs périphériques de caméra USB peuvent utiliser la spécification de descripteur de caractéristiques de système d’exploitation des propriétés étendues du bus USB pour configurer DShow Bridge sans recourir à des modifications de fichier INF pour leur pilote UVC.
Les descripteurs de système d’exploitation permettent aux appareils de définir des propriétés de Registre pour les périphériques USB ou les appareils composites.
Pour configurer DShow Bridges à l’aide des descripteurs de système d’exploitation USB, le logiciel hôte doit créer la clé de Registre suivante pour chaque interface de périphérique USB :
HKLM\SYSTEM\CurrentControlSet\Enum\USB\<DeviceVID&PID>\<DeviceInstance>\Device Parameters
DWORD : EnableDshowRedirection
La valeur de Registre EnableDshowRedirection est une valeur de masque de bits qui peut être utilisée pour configurer DShow Bridge comme décrit dans le tableau ci-dessous.
Masque de bits | Description | Notes |
---|---|---|
0x00000001 | Choisir DShow Bridge | 0 – Désinscription 1 – Accepter |
0x00000002 | Activer le décodage MJPEG une fois dans FrameServer (voir la note ci-dessous) | 0 – Type de média compressé MJPEG exposé (aucune opération) 1 – Exposer les types de médias non compressés traduits à partir de MJPEG (YUY2) |
Notes
Active le décodage MJPEG une fois dans FrameServer, puis les formats multimédias traduits non compressés (YUY2) sont proposés à plusieurs applications. Le flux n’est décompressé qu’une seule fois pour plusieurs clients possibles. Cela améliore les performances des applications.
Exemples de dispositions
Des exemples sont inclus ci-dessous pour les spécifications suivantes :
Spécification des descripteurs étendus du système d’exploitation Microsoft 1.0
Spécification des descripteurs Microsoft OS 2.0
Spécification des descripteurs de propriété étendue du système d’exploitation Microsoft version 1.0
Le descripteur de système d’exploitation des propriétés étendues a deux composants
Section d’en-tête de longueur fixe
Une ou plusieurs sections de propriétés personnalisées de longueur variable, qui suivent la section d’en-tête
Section d'en-tête
La section en-tête décrit l’ensemble du descripteur de propriétés étendues, y compris la longueur totale et le numéro de version.
Offset | Champ | Taille (en octets) | Valeur | Description |
---|---|---|---|---|
0 | dwLength | 4 | 0x0000004c | 76 décimaux |
4 | bcdVersion | 2 | 0x0100 | Version 1.0 |
6 | Windex | 2 | 0x005 | Descripteur de système d’exploitation de propriété étendue |
8 | wCount | 2 | 0x0001 | Une propriété personnalisée |
Custom Property Section (descripteur 1.0)
Le descripteur de système d’exploitation de propriété étendue du périphérique HID USB a une section de propriété personnalisée pour créer la clé de Registre EnableDshowRedirection DWORD.
Offset | Champ | Taille (en octets) | Valeur |
---|---|---|---|
0 | dwSize | 4 | 0x00000042 (66 octets pour cette propriété) |
4 | dwPropertyDataType | 4 | 0x00000004 (REG_DWORD_LITTLE_ENDIAN) |
8 | wPropertyNameLength | 2 | 0x0030 |
10 | bPropertyName | 48 | EnableDshowRedirection (chaîne Unicode) |
58 | dwPropertyDataLength | 4 | 0x00000004 (Sizeof(DWORD)) |
62 | bPropertyData | 4 | 0x00000001 (données DWORD) |
Spécification des descripteurs Microsoft OS 2.0
Cet exemple montre comment les jeux de descripteurs Microsoft 2.0 peuvent être utilisés pour fournir une seule valeur de Registre DWORD d’EnableDshowRedirection qui s’applique aux versions de Windows.
Custom Property Section (descripteur 2.0)
Offset | Champ | Taille (en octets) | Valeur |
---|---|---|---|
0 | wLength | 2 | Longueur en octets de ce descripteur |
4 | wDescriptorType | 2 | 0x00000004 (REG_DWORD_LITTLE_ENDIAN) |
8 | wPropertyDataType | 2 | 0x0030 |
wPropertyNameLength | 2 | ||
10 | PropertyName | Variable | Longueur du nom de la propriété |
58 | dwPropertyDataLength | 2 | Longueur des données de propriété |
62 | PropertyData | Variable | Données de propriété |
UCHAR Example2\_MSOS20DescriptorSetForFutureWindows\[0x48\] =
{
//
// Microsoft OS 2.0 Descriptor Set Header
//
0x0A, 0x00, // wLength - 12 bytes
0x00, 0x00, // MSOS20_SET_HEADER_DESCRIPTOR
0x00, 0x00, 0x0?, 0x06, // dwWindowsVersion – 0x06030000 for future Windows version
0x4A, 0x00, // wTotalLength – 72 bytes
//
// Microsoft OS 2.0 Registry Value Feature Descriptor
//
0x3E, 0x00, // wLength - 62 bytes
0x04, 0x00, // wDescriptorType – 5 for Registry Property
0x04, 0x00, // wPropertyDataType - 4 for REG_DWORD
0x30, 0x00, // wPropertyNameLength – 48 bytes
0x45, 0x00, 0x6E, 0x00, // Property Name - "EnableDshowRedirection"
0x61, 0x00, 0x62, 0x00,
0x6C, 0x00, 0x65, 0x00,
0x44, 0x00, 0x73, 0x00,
0x68, 0x00, 0x6F, 0x00,
0x77, 0x00, 0x52, 0x00,
0x65, 0x00, 0x64, 0x00,
0x69, 0x00, 0x72, 0x00,
0x65, 0x00, 0x63, 0x00,
0x74, 0x00, 0x69, 0x00,
0x6F, 0x00, 0x6E, 0x00,
0x00, 0x00, 0x00, 0x00,
0x04, 0x00, // wPropertyDataLength – 4 bytes
0x00, 0x00, 0x00, 0x00 // PropertyData – 0x00000003 (DShow Bridge is enabled and MJPEG is decoded in FrameServer)
}
Ressources
Descripteurs de système d’exploitation Microsoft pour les périphériques USB