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

DirectX Discussion :

Pb images par seconde


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut Pb images par seconde
    Salut,


    Il n'y a pas si longtemps que ça, j'ai codé un filtre d'acquisition directshow pour une Matrox Orion... Il fonctionne dans la mesure où je suis capable de capturer des images et une vidéo, mais au sujet de la vidéo, j'ai un petit problème qui n'est pas si petit que ça

    Je m'explique... je ne capture que 8 ou 9 images par seconde, ce qui est assez peu Je ne vois pas d'où ça peut venir, je pense que la méthode FillBuffer de mon pin de capture n'est pas appelée assez souvent mais je ne sais pas comment faire pour augmenter ce nombre d'appels...

    Si quelqu'un a une idée ou a déjà codé un filtre d'acquisition... je suis ouvert à toutes les propositions

    Je suis OK pour donner mon code si vous voulez...
    J'en ai assez de ce de filtre et si vous pouviez m'aider à résoudre ce dernier problème...

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Désolé je me perds en ce moment dans les acquisitions séquentielles directshow... par contre je suis surpris que tu n utilises pas la librairie constructeur... ils ont la MIL...
    Tsu
    A vaincre sans péril, on triomphe sans gloire

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut,

    je suis surpris que tu n utilises pas la librairie constructeur... ils ont la MIL
    Je n'utilise pas la MIL parce que ce filtre est développé pour un logiciel d'acqisition d'images et de vidéos à partir d'un echographe et que ce logiciel utilise DirectShow.

    Actuellement mon filtre utilise les classes de base CSource et CSourceStream ainsi que l'interface IKsPropertySet. Lorsque je me suis apercu du problème, j'ai constaté que je n'initialisais pas les attributs AvgTimePerFrame et dwBitRate de la structure VIDEOINFO, mais apres avoir mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    VIDEOINFO * pvi = (VIDEOINFO *) m_mt.Format(); //m_mt membre de CBasePin et donc de CSourceStream
    ...
    pvi->AvgTimePerFrame = (10000000/30);//100 ns = 1 unite de tps
    pvi->dwBitsRate = 30;
    ça ne fonctionne toujours pas


  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut,


    Bon heu, j'ai pas résolu mon problème... j'ai toujours 8 images par secondes . enfin bref... le filtre est tout de même utilisable.

    Les sources sont dispo ici:
    wwwetu.utc.fr/~leleueri

    Si quelqu'un a une idée, elle est la bienvenue...


    Aller, Passez de bonne fetes

    A+

  5. #5
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Est-ce que tu utilises Directx vidéo accélération, à ce que j'ai pû comprendre, ça permet d'améliorer le streaming. J'ai rien compris à cette technologie et je me demande actuellement si je peux l'utiliser pour un filtre de rendu ou si elle est seulement utile pour récupérer des données médias provenant d'une source extérieure à l'ordinateur (USB, Réseau, Télé, etc...).


    Ensuite pour ton problème de 8 images par seconde, comment tu gères le timer au sein de tes filtres.

    La vérité est ailleurs....

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Est-ce que tu utilises Directx vidéo accélération
    Heu... non, je viens d'y jeter un oeil, mais j'ai pas bien compris comment ca fonctionne et je suis pas sur du resultat...

    je me demande actuellement si je peux l'utiliser pour un filtre de rendu
    Oui, je pense que c'est possible, pour ce que j'ai compris, il y a deux Interfaces à utiliser:

    IAMVideoAccelerator pour les pins d'entrée et IAMVideoAcceleratorNotify pour les pins de sortie.


    Ensuite pour ton problème de 8 images par seconde, comment tu gères le timer au sein de tes filtres.
    La vérité est ailleurs....
    C'est à dire?

  7. #7
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    C'est à dire?
    C'est à dire que pour synchroniser les différents filtres du graphe, un timer est implémenté dans le graphe. En effet, par exemple, si le filtre du démultiplexeur travaille plus vite que le filtre de rendu, tu vas manquer des images ou du son. J'imagine que les interfaces de directx implémente un timer par défaut, mais tu dois pouvoir intervenir dessus. Tu peux peut-être essayer de diminuer ce timer et de voir si tous les filtres arrivent à suivre la cadence et ainsi gagner en nombre d'images par secondes.

    Bien sûr tout ce que je dis n'est que pure théorie, et saches que cela ne fait que trois semaines que je me penche sur le sujet. J'essaie de progresser et cela ne se fera que très lentement, vue l'étendue du sujet.

    Je te conseille comme moi de comprendre le fonctionnement "THEORIQUE" d'un graphe (www.mpeg.org), sachant que la plupart des techniques les plus performantes sont des "secrets industriels", et que personne ne t'aidera par rapport à ça.

    Il y a des bouquins qui traitent de ce sujet (en anglais) mais je ne les ai pas encore achetés.

    Je pense que je vais créer un site qui traite de ce sujet, peut-être que ça pourra faire avancer les choses, à moins de trouver une solution par rapport à développer.com, mais je ne sais pas comment m'y prendre.


    Voilà, bon courage.

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci pour ces infos.

    J'imagine que les interfaces de directx implémente un timer par défaut
    Effectivement la classe de base CBaseFilter posséde un attribut m_pClock


    J'espere résoudre ce "petit" problème avant la fin de mon stage

    2005 sera peut être l'année de la révélation
    A+

  9. #9
    mat.M
    Invité(e)
    Par défaut
    Je te conseille comme moi de comprendre le fonctionnement "THEORIQUE" d'un graphe (www.mpeg.org),
    Oui il faut comprendre le fonctionnement théorique non pas d'un graphe ( technologie propre à Direct X -outil graphedit ) mais à la compression / décompression MPEG .
    Attention aux abus de language !

  10. #10
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Attention aux abus de language
    Oui je m'excuse de ne pas avoir été précis. Je voulais parler en fait du flux multimédia du fichier source à la sortie (audio et vidéo). Pour l'instant je n'ai trouvé des explications que dans le livre "Systèmes d'exploitation" de Tanenbaum et le site que j'ai mentionné en est une approche au niveau codec.

    Les éléments essentiels selon moi à comprendre, c'est ce système d'ordonnancement des tâches:
    -> récupération des données du fichier source ou autres
    -> démultiplexage
    -> décompression (mpeg par exemple)
    -> rendu

    Tous ces éléments effectuent des tâches en continu, et l'on doit s'assurer que tous seront honorés dans les délais prévus. Il faut tenir compte de la synchronisation, de l'allocation mémoire, du type de données médias, etc...

    Je crois que lorsque l'on a bien compris ce principe, alors on pourra utiliser de manière plus efficace les classes de directshow, voir créer ses propres classes et algorithmes.

    J'en profite pour dire (si Greutzeb est d'accord) que toutes sources d'information (livre ou site) sur ce sujet m'intéresse, et je serais ravi d'être aiguillé.

    Merci et bonne année.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    J'en profite pour dire (si Greutzeb est d'accord) que toutes sources d'information (livre ou site) sur ce sujet m'intéresse, et je serais ravi d'être aiguillé.
    Pourquoi je refuserai?

    Pour ma part, je me suis limité à la msdn... je vais faire un tour du coté du livre "Systèmes d'exploitation"...


    Bonne année.

Discussions similaires

  1. Compter le nombre d'image par secondes (FPS)
    Par poukill dans le forum C++
    Réponses: 7
    Dernier message: 27/10/2008, 17h02
  2. Diminution des images par secondes sous mozilla ou IE
    Par Kalmane dans le forum Intégration
    Réponses: 1
    Dernier message: 09/04/2008, 17h25
  3. Calcul du nombre d'images par seconde
    Par Mindiell dans le forum SDL
    Réponses: 5
    Dernier message: 19/03/2007, 22h12
  4. Problème de nb d'images par seconde
    Par Francky033 dans le forum DirectX
    Réponses: 7
    Dernier message: 17/04/2004, 10h37
  5. Blocage à 60 images par seconde
    Par houssa dans le forum OpenGL
    Réponses: 5
    Dernier message: 24/06/2003, 08h52

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