Il est étonnant de voir combien la documentation que vous pouvez trouver pour Video4Linux2 - et rien de tout cela explique en fait ce que Video4Linux est .
Tout d'abord, Video4Linux2 est un framework de pilotes Linux . Les pilotes de framework ne contrôlent pas directement les périphériques directement. Au lieu de cela, ils fournissent un modèle abstrait d'une certaine classe de périphérique, dans ce cas des périphériques vidéo pour les applications à utiliser. Les frameworks de pilotes offrent trois avantages principaux:
- Fournir une API unifiée pour les applications à utiliser avec une très large gamme de périphériques physiques, qu'ils soient connectés par USB, PCIe, MIPI, Ethernet ou tout autre type de bus de transport de données
- Dans le noyau, les frameworks contiennent le type de code qui est nécessaire dans presque tous les pilotes de périphériques d'une classe particulière, réduisant ainsi considérablement le volume de code disparate
- Dans le noyau, les frameworks fournissent un modèle pour l'écriture de nouveaux pilotes de niveau inférieur qui contrôlent réellement le matériel, simplifiant ainsi le développement des pilotes.
Ainsi, le pilote V4L2 est un pilote de haut niveau qui pilote le pilote UVC, qui pilote le pilote USB qui pourrait piloter un pilote matériel encore plus bas.
Ce modèle Matryoshka est très courant dans l'arborescence des pilotes du noyau Linux. La V4L2 est l'un des exemples les plus complexes car certains appareils photo nécessitent d'accéder à de grands groupes de sous-appareils en plusieurs couches qui contrôlent l'appareil photo et acheminent la sortie de l'appareil photo entre divers composants tels que les processeurs d'images.
Vous pouvez toujours accéder au pilote UVC directement à partir de l'espace utilisateur à l'aide d'un fichier de périphérique et des appels système "ioctl", sans passer par le pilote V4L2, et vous pouvez toujours accéder au pilote USB sous-jacent directement à partir de l'espace utilisateur à l'aide de son fichier de périphérique et de "ioctl".
Étant un cadre général qui fournit des fonctionnalités communes à une large gamme d'appareils, V4L2 ne vous fournit pas toutes les fonctionnalités que le pilote UVC pourrait fournir (en supposant que votre appareil fournit réellement plus de fonctionnalités UVC que nécessaire pour prendre en charge V4L2) .
Donc, si vous deviez avoir un périphérique UVC qui fournit toutes les fonctions spécifiées dans la spécification UVC, alors pour utiliser réellement certaines de ces fonctions, vous devrez accéder au pilote UVC directement via un fichier de périphérique et un système "ioctl". , en supposant que le pilote UVC du noyau Linux prend en charge toutes les spécifications UVC.
Cependant, la signification de
L'implémentation du pilote uvcvideo est conforme uniquement à l'API V4L2
est que dans le pilote actuel du noyau Linux UVC ne fournit en fait pas plus de support de fonction UVC que ce qui est nécessaire pour V4L2.
La prise en charge de V4L2 dans le noyau ne fournit pas en soi une prise en charge UVC ou USB ou une prise en charge matérielle USB de niveau inférieur.