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 :

[DirectShow] problème lorsque je détruit mon graphe


Sujet :

DirectX

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [DirectShow] problème lorsque je détruit mon graphe
    Bonjour à tous,

    voila j'ai fait une application qui crée un graphe manuellement (avec IGraphBuilder), je crée mon filtre de capture, j'ajoute mon filtre de transformation et j'utilise le filtre "Video Renderer" pour afficher, je connecte le tout et ça marche parfaitement bien. Mais quand je quitte l'application et que je libère mes interfaces j'ai droit au message d'erreur suivant :

    "Executable test.exe Pid .. Tid .. Module monfiltre.ax, 6 objects left active! At line 313 of C:\DXSDK\samples\multimedia\DirectShow\BaseClasse\dllentry.cpp Continue ?"

    voila ma fonction qui libère les interfaces :


    Code :


    inline void clearInterfaces()
    {
    pMediaControl->Stop();
    if(pGraph != NULL)
    {
    pGraph->RemoveFilter(pVideoCapture);
    pGraph->RemoveFilter(pmonfiltre);
    pGraph->RemoveFilter(pVideoRenderer);
    pGraph->Release();
    pGraph = NULL;
    };
    if(pVideoCapture) { pVideoCapture->Release(); pVideoCapture = NULL; };
    if(pmonfiltre) { pmonfiltre->Release(); pmonfiltre = NULL; };
    if(pVideoRenderer) { pVideoRenderer->Release(); pVideoRenderer = NULL; };
    if(pMediaControl) { pMediaControl->Release(); pMediaControl = NULL; };
    if(pMediaEventEx) { pMediaEventEx->Release(); pMediaEventEx = NULL; };
    bConnected = false;
    }




    pour info j'utilise Dx 8.1, j'ai fais mon filtre sur VC++ avec un appWizard créé pour simplifier cette tâche, et mon appli tourne sur BC++ (j'ai converti les .lib de DirectShow).

    J'ai testé mon filtre avec graphEdit, il marche nickel je n'ai jamais eu d'erreur. Mais depuis que j'ai fait mon application et que j'ai eu ces messages d'erreur, lorsque je connecte manuellement dans graph edit mon filtre avec le Video Renderer, j'ai 5-6 filtres du nom de monfiltre0001, monfiltre0002, monfiltre0003 qui viennent s'intercaler... alors qu'avant rien, je pense qu'il y a un lien avec mon probleme.

    Bon je crois avoir tout dis, si vous avez déjà eu ce probleme, ou si vous pensez pouvoir m'aider, ben je vous en remercie d'avance...

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Juste une petite suggestion : toujours effacer les objets dans l'ordre inverse de celui avec lequel ils ont été crées .
    Si pMediaControl a été crée après pMediaEvent , l'effacer avant pMediaEvent et ainsi de suite.
    Le pointeur IGraphBuilder si utilisé doit être effacé en dernier

Discussions similaires

  1. Problème lorsque je veux manupiler sur mon site web
    Par rhouzali dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 25/02/2011, 16h47
  2. Réponses: 1
    Dernier message: 19/11/2007, 23h38
  3. Probléme de référencement de mon site
    Par HNT dans le forum Référencement
    Réponses: 3
    Dernier message: 12/07/2005, 09h49
  4. Réponses: 4
    Dernier message: 27/04/2005, 14h21
  5. batch-problème pour pointer vers mon log
    Par af_airone dans le forum Windows
    Réponses: 2
    Dernier message: 20/04/2005, 08h58

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