Implémentation de la classe vidéo USB
Le pilote UVC (USB Video Class) fourni par Microsoft (usbvideo.sys) est un minidriver AVStream centré sur les broches. Il crée une fabrique de filtres pour chaque appareil conforme à la classe vidéo USB instance énuméré par le système d’exploitation. Le pilote crée également une fabrique d’épingles pour chaque terminal d’entrée ou de sortie sur l’appareil, avec le membre DataFlow de la structure KSPIN_DESCRIPTOR défini sur la valeur appropriée.
Le pilote de classe vidéo USB utilise la topologie de périphérique interne signalée par les descripteurs de périphérique pour construire un graphique de topologie de diffusion en continu du noyau (KS) composé de filtres, de nœuds et de connexions.
En fonction du nombre et des types de contrôles pris en charge par l’appareil, la classe vidéo USB signale dynamiquement les jeux de propriétés de filtre, d’épingle et de nœud via les tables d’automatisation KS dans les filtres et les descripteurs de broche AVStream.
En fonction des formats de données pris en charge par chaque point de terminaison de données vidéo ou d’image fixe sur l’appareil, la classe vidéo USB signale la liste correspondante des plages de données KS prises en charge et un gestionnaire d’intersection de données dans le descripteur de broche AVStream respectif. Le pilote de classe vidéo USB exporte les informations via le module Proxy de streaming du noyau .
Le pilote de classe vidéo USB prend également en charge la synchronisation de flux audio/vidéo ; usbvideo.sys peuvent servir d’horloge master KS et ajouter des horodatages à des exemples vidéo. La spécification de la classe vidéo USB inclut des détails sur la façon dont le matériel doit fournir des informations de minutage au pilote de classe.
Pour communiquer avec la classe vidéo USB, les clients en mode utilisateur appellent les interfaces DirectShow ou Media Foundation. Ces interfaces sont des wrappers d’interface COM définis par le proxy de streaming du noyau en tant que plug-ins. Pour plus d’informations sur Media Foundation, consultez la documentation Microsoft Windows SDK.