2013-03-19 3 views
0

J'ouvre deux webcams en utilisant v4l2. Avec 30 fps tout fonctionne bien. Avec 60 fps, les ennuis commencent. FPS sur la première cam environ 20, FPS sur la deuxième cam environ 0-3. J'essaie d'exécuter dans différents threads (et différents noyaux de processeur) - le même problème. Je pense que le problème dans le pilote v4l2.v4l2 panne de plusieurs périphériques

Ma tâche est très simple - capturer des données de deux webcams sur un ordinateur avec 60 fps. C'est possible? En quoi pourrait être le problème? Je peux montrer le code, mais c'est gros.

Désolé pour mon anglais.

Répondre

0

Cela devrait être possible. Les problèmes peuvent être:

  • Vous disposez d'un matériel compatible DMA, mais vous n'utilisez pas de DMA. Avec des FPS élevés, vos performances peuvent diminuer.
  • vous avez une file d'attente tampon trop courte. Vous achetez plusieurs tampons que vous avez alloué dans la file d'attente
  • autres, cela dépend de votre implémentation
+0

Merci pour la réponse. Mais comment puis-je utiliser DMA? Maintenant, j'utilise juste l'API v4l2. Si le problème se situe dans la courte file d'attente du tampon, l'augmentation du nombre de tampons ne résoudra pas le problème. Donc, ou la performance est suffisante, ou la performance ne suffit pas et alors rien ne va aider. – herolover

+0

Vous pouvez utiliser DMA si votre matériel peut faire du DMA. V4L2 offre le framework VideoBuf2 pour gérer les buffers. Ici vous pouvez trouver différents allocateurs de mémoire DMA vb2-dma-contig, vb2-dma-sg. Évidemment, si vos webcams sont plus rapides que votre processeur, une longue file d'attente ne résout pas le problème. Mais si vous avez une file d'attente de 10 tampons et que vous acquérez 15 images à la fois, vous pouvez définir 10 tampons, mais vous devez attendre pour définir les 5 autres. – Federico

Questions connexes