IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

libdc1394 et CPU overload


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut libdc1394 et CPU overload
    bonsoir,

    je suis entrain de développer sous OS X un module apportant le support des caméras compatibles IIDC dans un environnement de traitement temps réel de l'image et du son (Max/MSP).

    j'utilise pour cela la bibliothèque libdc1394 et j'ai un problème : mon CPU se bloque à 150% lorsque j'appelle certaines fonctions.

    je suis parti d'un example du SDK de Max et de l'example "grab_gray_image.c" de la bibliothèque libdc1394 pour développer mon module.

    "grab_gray_image.c" est très simple : il initialise la caméra en récupérant les meilleurs paramètres, déclenche la capture, sauvegarde une image puis arrête la capture et nettoie la mémoire.
    ce code compile très bien tout seul.

    mais lorsque j'insert ce code dans mon module pour Max, l'appel de la fonction de démarrage de la transmission pousse le CPU à 150 %.
    si j'arrête la transmission, le CPU redescend à 10% (correspondant à l'exécution du Runtime de Max)

    voici le code de déclaration de la fonction en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
     * Starts/stops the isochronous data transmission. In other words, use this to control the image flow.
     */
    dc1394error_t dc1394_video_set_transmission(dc1394camera_t *camera, dc1394switch_t pwr);
    je en sais pas du tout à quoi est dû cette surcharge anormale du CPU et je ne sais même pas où chercher le bug...

    j'ai isolé le démarrage de la transmission dans une autre fonction mais à l'appel de la fonction le CPU monte également à 150%

    je me suis rendu compte également qu'une deuxième provoquait le même comportement anormal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
     * Collects the available features for the camera described by node and stores them in features.
     */
    dc1394error_t dc1394_feature_get_all(dc1394camera_t *camera, dc1394featureset_t *features);
    le retour de ces deux fonction est contrôlé sans erreur.

    quelqu'un aurait-il une idée d'où peut venir une telle surcharge ?
    en espérant que j'ai été suffisamment précis pour susciter des réponses...

    chianli

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    bon alors comme mon sujet n'a pas l'air d'inspirer grand monde,
    j'y apporte quelques précisions péniblement déduites de tests en tout genre...

    la surcharge de CPU provoquée par l'appel de la fonction dc1394_video_set_transmission avec DC1394_ON en second argument se résorbe dès lors que je commence à accéder au buffer au rythme où les images arrivent

    c'est comme si les images en s'accumulant dans le ring buffer surchargeaient le processeur

    ça reste donc très étrange... j'aurai pensé qu'éventuellement elles auraient pu surcharger la mémoire mais le proc c'est bizarre

    si jamais quelqu'un aurait une idée...

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Probablement, le processeur tourne en testant si il y a de la place pour placer l'image suivante dans le buffer.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    merci de ta réponse, effectivement cela semble être une explication mais l'ordinateur (Macbook pro / OS X 10.6.2) reste complètement opérationnel avec un processus à 150%...

    enfin je fais faire avec pour le moment j'y reviendrai plus tard

    merci

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    en y repensant il y a tout de même quelque chose qui me chagrine,
    si c'est effectivement l'attente de la libération d'une place dans le buffer qui cause la surcharge de CPU pourquoi ce n'est pas le cas dans le programme d'exemple qui tourne en ligne de commande ??

    serait-ce une option de compilation qui change la donne ??

    étrange...

Discussions similaires

  1. Récupérer la quantité de ressource disponible (RAM,CPU,HDD)
    Par telecnop dans le forum Programmation et administration système
    Réponses: 11
    Dernier message: 26/10/2005, 13h23
  2. Nombre de CPU de la machine
    Par Gogoye dans le forum C
    Réponses: 4
    Dernier message: 06/11/2003, 16h19
  3. Vitesse du CPU, quantité de RAM... en C
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 07/07/2003, 20h48
  4. Trouver le % d'utilisation du CPU
    Par le mage tophinus dans le forum Assembleur
    Réponses: 20
    Dernier message: 21/04/2003, 19h43
  5. Overload
    Par JMF dans le forum Langage
    Réponses: 8
    Dernier message: 18/04/2003, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo